Python |通过IP地址检查网站是否存在
Python | Check if website exists by IP address
我在 .txt
文件中有几个 数百万 个 IPv4 地址,如下所示:
x.y.z.w
x.y.z.w
x.y.z.w
...
我的目标是检查每个地址,是否背后有真实网站或地址是假的。
我看到的帖子只处理 URLs(不是地址),实际上我尝试了描述的方法,首先将 IP 地址反向 DNS 到 URL,然后再使用它判断该网站是否存在。但是,每个地址大约需要2秒,这意味着所有地址都需要几个月,当然我没有那个时间。
最好、最快的方法是什么?
我非常喜欢 Python,但是使用 C 可以显着加快速度吗?
谢谢。
除非这些网站是 virtually hosted,否则 IP 地址与主机名没有任何区别。但是在虚拟主机的情况下,使用 reverse-DNS 对您没有帮助,因为同一 IP 地址上可以托管许多站点,而您要查询的站点目前可能已关闭。此外,并非所有网站都会在反向 DNS 记录中注册,因此您可能会遗漏一些。
我不知道您使用什么方法来确定网站是否托管在某个地址,但不管它是什么,这样做可能是 IO 绑定而不是 CPU 绑定。这意味着使用 C 可能不会产生显着的性能改进,因为程序将花费大部分时间等待网站的响应。
您可以做些什么来提高性能:
减少超时。如果您对网络操作使用默认超时,您可能会发现自己等待响应的时间比您想要的要多。
并行化任务。尝试使用 threading
或 asyncio
模块。它们被构建为允许任务并行化,asyncio
专门用于 IO 绑定程序。
此外,请考虑使用已经实现这些功能的工具,例如 nmap
。
我在 .txt
文件中有几个 数百万 个 IPv4 地址,如下所示:
x.y.z.w
x.y.z.w
x.y.z.w
...
我的目标是检查每个地址,是否背后有真实网站或地址是假的。
我看到的帖子只处理 URLs(不是地址),实际上我尝试了描述的方法,首先将 IP 地址反向 DNS 到 URL,然后再使用它判断该网站是否存在。但是,每个地址大约需要2秒,这意味着所有地址都需要几个月,当然我没有那个时间。
最好、最快的方法是什么?
我非常喜欢 Python,但是使用 C 可以显着加快速度吗?
谢谢。
除非这些网站是 virtually hosted,否则 IP 地址与主机名没有任何区别。但是在虚拟主机的情况下,使用 reverse-DNS 对您没有帮助,因为同一 IP 地址上可以托管许多站点,而您要查询的站点目前可能已关闭。此外,并非所有网站都会在反向 DNS 记录中注册,因此您可能会遗漏一些。
我不知道您使用什么方法来确定网站是否托管在某个地址,但不管它是什么,这样做可能是 IO 绑定而不是 CPU 绑定。这意味着使用 C 可能不会产生显着的性能改进,因为程序将花费大部分时间等待网站的响应。
您可以做些什么来提高性能:
减少超时。如果您对网络操作使用默认超时,您可能会发现自己等待响应的时间比您想要的要多。
并行化任务。尝试使用
threading
或asyncio
模块。它们被构建为允许任务并行化,asyncio
专门用于 IO 绑定程序。
此外,请考虑使用已经实现这些功能的工具,例如 nmap
。