我编写了一个python程序来ping一个网站使用它的ipaddress来检查它是否还活着。通过获取网站的ipaddress并进行进一步分析,该程序在线时效果很好。
这是示例代码:
def ip_address_web(hosts,port):
alladdr = list(set(map(lambda x: x[4],socket.getaddrinfo(hosts,port))))
global IPV4A, IPV6A, ip6array
ip4array = []
ip4 = filter(lambda x: '.' in x[0],alladdr)
for addr4 in ip4:
ip4 = addr4
ipv4a = addr4[0]
ip4 = ipaddress.ip_address(ipv4a)
print(ip4.version)
ip4array.append(ipv4a)
print(ip4array)
IPV4A = ip4array[0]
try:
print("ip6 check")
ip6 = filter(lambda x: ':' in x[0],alladdr)
ip6array = []
for addr6 in ip6:
ip6 = addr6
ipv6a = addr6[0]
ip6 = ipaddress.ip_address(ipv6a)
ip6array.append(ipv6a)
print(ip6array)
IPV6A = ip6array[0]
except:
IPV6A = []
print("ipv6a:",IPV6A)
print("No IPv6 address")
hosts = "www.google.com"
port = 80
ip_address_web(hosts,port)
但是在离线状态下,代码无法获得ipaddress进行进一步处理。所以我没有让ipaddress从网上获取,而是想让它离线化。所以我需要知道有没有办法在txt文件中获取所有网站的ipaddresses。
当我连接到在线时,我可以使用我的python程序或在Google上搜索任何网站的ipaddress。但在线下,这是不可能的。所以我正在制作另一个python程序来获取所有网站的ipaddresses并将其存储在txt文件中以使其可用于离线。那可能吗?? python中是否有任何库包含所有网站的ipaddresses。我在谷歌搜索但找不到一个。任何解决方案请......
不,我不认为python中有一个包含互联网上所有网站的IP的库。您必须手动构建要测试的网站列表。
websites = ["www.yahoo.com", "www.google.com"]
with open("ips.txt", "w+") as fh:
for i in websites:
fh.write(gethostbyname(i)+"\n")
稍后您可以从此文件中读取IP并测试连接。
进一步简单的搜索显示,有近2亿个直播网站,更不用说超过10亿的网站总数。因此,即使你有一个包含1亿个网站的IP的文件,想象一下迭代或查找这么大的文件需要多少时间!!