[英]How do I get a website's IP address using Python 3.x?
我有一个代表域名的字符串。 如何使用Python 3.x获取对应的IP地址? 是这样的:
>>> get_ip('http://www.stackoverflow.com')
'64.34.119.12'
Python 3.1.3 (r313:86834, Nov 27 2010, 18:30:53) [MSC v.1500 32 bit (Intel)] on win32
>>> import socket
>>> socket.gethostbyname('cool-rr.com')
'174.120.139.162'
注意:
如果这些都有问题,请改用socket.getaddrinfo()。
>>> import socket
>>> def get_ips_for_host(host):
try:
ips = socket.gethostbyname_ex(host)
except socket.gaierror:
ips=[]
return ips
>>> ips = get_ips_for_host('www.google.com')
>>> print(repr(ips))
('www.l.google.com', [], ['74.125.77.104', '74.125.77.147', '74.125.77.99'])
最简单的方法是使用socket.gethostbyname()
。 但是,这不支持IPv6,并且基于已弃用的C调用gethostbanme()
。 如果您关心这些问题,可以使用更通用的socket.getaddrinfo()
代替。
这是完整的示例,如何使用 Python 获取网站的 IP 地址
import urllib.parse
import socket
import dns.resolver
def get_ip(target):
try:
print(socket.gethostbyname(target))
except socket.gaierror:
res = head(target, allow_redirects=True)
try:
print(r.headers['Host'])
except KeyError:
parsed_url = urllib.parse.urlparse(target)
hostname = parsed_url.hostname
try:
answers = dns.resolver.query(hostname, 'A')
for rdata in answers:
print(rdata.address)
except dns.resolver.NXDOMAIN:
print('ip not found')
get_ip('example.com')
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.