有没有办法使用python将世界上所有网站的IP地址转换为txt文件

问题描述 投票:0回答:1

我编写了一个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 python-3.x sockets web ip-address
1个回答
1
投票

不,我不认为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的文件,想象一下迭代或查找这么大的文件需要多少时间!!

© www.soinside.com 2019 - 2024. All rights reserved.