如何使用Python查找我的网络的公共IP地址?
如何使用Python查找我的网络的公共IP地址?
https://api.ipify.org/?format=json非常简单明了
可以通过运行requests.get("https://api.ipify.org/?format=json").json()['ip']
来解析。
这将获取您的远程IP地址
import urllib
ip = urllib.urlopen('http://automation.whatismyip.com/n09230945.asp').read()
如果您不想依赖别人,那么只需上传这样的PHP脚本:<?php echo $_SERVER['REMOTE_ADDR']; ?>
并更改Python或ASP中的URL:
<%
Dim UserIPAddress
UserIPAddress = Request.ServerVariables("REMOTE_ADDR")
%>
注意:我不懂ASP,但我认为在这里放一下可能会有用,所以我谷歌了一下。
REMOTE_ADDR
是“用户查看当前页面的IP地址。”也就是说,您需要将php脚本放在外部服务器上才能获取您的公共IP。此外,automation.whatismyip.com
无法访问。http://canihazip.com/s
可以使用。 - jfsimport requests
r = requests.get(r'http://jsonip.com')
# r = requests.get(r'https://ifconfig.co/json')
ip= r.json()['ip']
print('Your IP is {}'.format(ip))
whatismyip.org更好...它只以纯文本形式返回IP地址,没有多余的东西。
import urllib
ip = urllib.urlopen('http://whatismyip.org').read()
但是,如果不依赖于网络本身之外的东西,很难轻松地完成它。
import urllib2
text = urllib2.urlopen('http://www.whatismyip.org').read()
urlRE=re.findall('[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}',text)
urlRE
['146.148.123.123']
这很简单
>>> import urllib
>>> urllib.urlopen('http://icanhazip.com/').read().strip('\n')
'xx.xx.xx.xx'
你也可以使用 DNS,这在某些情况下可能比 http 方法更可靠:
#!/usr/bin/env python3
# pip install --user dnspython
import dns.resolver
resolver1_opendns_ip = False
resolver = dns.resolver.Resolver()
opendns_result = resolver.resolve("resolver1.opendns.com", "A")
for record in opendns_result:
resolver1_opendns_ip = record.to_text()
if resolver1_opendns_ip:
resolver.nameservers = [resolver1_opendns_ip]
myip_result = resolver.resolve("myip.opendns.com", "A")
for record in myip_result:
print(f"Your external ip is {record.to_text()}")
这是Python版本的dig +short -4 myip.opendns.com @resolver1.opendns.com