【问题标题】:Finding network (external) IP addresses using Python使用 Python 查找网络(外部)IP 地址
【发布时间】:2014-08-21 22:08:51
【问题描述】:

我想用 Python 知道我的互联网提供商(外部)IP 地址(宽带或其他)。

有多台机器连接到该网络。我尝试了不同的方式,但我的机器只有本地和公共 IP。如何通过 Python 找到我的外部 IP 地址?

提前致谢。

【问题讨论】:

  • 你尝试了哪些方法?
  • 我已经试过了,import socket socket.gethostbyname(socket.gethostname())。现在我正在获取分配给我机器的 IP 地址。不是网络提供商的 IP 地址

标签: python ip python-2.x


【解决方案1】:

使用这个脚本:

import urllib, json

data = json.loads(urllib.urlopen("http://ip.jsontest.com/").read())
print data["ip"]

没有 json :

import urllib, re

data = re.search('"([0-9.]*)"', urllib.urlopen("http://ip.jsontest.com/").read()).group(1)
print data

解析 ifconfig (= linux) 或 ipconfig (= windows) 命令的其他方式,但要注意翻译的 Windows 系统 (ipconfig 已翻译)。

Linux 的 lib 示例: ifparser.

【讨论】:

  • 非常优雅的答案!
【解决方案2】:

安全选项(支持https

from requests import get

get('https://ipapi.co/ip/').text

填写JSON response

附: requests 模块方便https 支持。不过你可以试试httplib

【讨论】:

    【解决方案3】:

    您必须使用您信任的外部来源。 Python2.x:

    from urllib import urlopen
    import json
    url = 'http://api.hostip.info/get_json.php'
    info = json.loads(urlopen(url).read())
    print(info['ip'])
    

    如果您想了解更多信息,可以从info 打印更多值。

    非python oneliner:

    wget -q -O- icanhazip.com
    

    【讨论】:

    • @Mulagala 将我的答案更改为 python2.7
    • 如何获取用户的位置以存储上次登录的位置
    • info 是一个字典,它没有顺序。每次打印的顺序都会不同。
    • 对不起,我没有找到你,我的要求是找到我的用户位置以保存上次登录的位置。这里的代码正在我的服务器上执行,所以我正在获取我的位置,现在我需要我的客户端位置那些谁正在登录我的网站,如果您知道,请帮助我。感谢您的 advacne
    • 我认为您应该提出一个新问题,在评论中很难回答。
    【解决方案4】:

    你可以看看这个答案:

    https://stackoverflow.com/a/22157882/5687894

    TL;DR:

    import ipgetter
    ip=ipgetter.myip()
    

    【讨论】:

      【解决方案5】:

      我认为最简单的解决方案是

      f = requests.request('GET', 'http://myip.dnsomatic.com')
      ip = f.text
      

      仅此而已。

      【讨论】:

      【解决方案6】:

      我的网站http;//botliam.com/1.php输出你的ip,所以你只需要这3行就可以得到你的ip。

      import requests
      page = requests.get('http://botliam.com/1.php')
      ip = page.text
      

      它在做什么:

      • 打开我的网页并将其称为“页面”
      • 将“ip”设置为“页面”的内容

      如果您希望自己的服务器返回您的外部 ip 而不是依赖我的网站,则代码如下:

      <?php
      $ip = getenv('HTTP_CLIENT_IP')?:
      getenv('HTTP_X_FORWARDED_FOR')?:
      getenv('HTTP_X_FORWARDED')?:
      getenv('HTTP_FORWARDED_FOR')?:
      getenv('HTTP_FORWARDED')?:
      getenv('REMOTE_ADDR');
      echo "$ip";
      ?>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-12-29
        • 2015-12-06
        • 1970-01-01
        • 1970-01-01
        • 2013-05-24
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多