python中有没有办法检查指定IP范围(1.1.1.1 - 1.1.1.254)的标头中的服务器响应代码(200、301、404),甚至可以多线程执行?
PS喜欢它可能与“HTTPResponse.status”对象(http://docs.python.org/library/httplib.html)我现在如何检查它的IP范围?
PS 可能最好先检查端口 80 是否打开,然后只测试打开端口的端口,我认为这会加快速度,因为 254 ip 可能有 30 个正在使用端口 80。
python中有没有办法检查指定IP范围(1.1.1.1 - 1.1.1.254)的标头中的服务器响应代码(200、301、404),甚至可以多线程执行?
PS喜欢它可能与“HTTPResponse.status”对象(http://docs.python.org/library/httplib.html)我现在如何检查它的IP范围?
PS 可能最好先检查端口 80 是否打开,然后只测试打开端口的端口,我认为这会加快速度,因为 254 ip 可能有 30 个正在使用端口 80。
您可以尝试使用正常的 GET 请求连接到主机的根目录,超时时间很短(如果您希望它等待更多时间,则可以使用更长的超时时间)。然后你可以通过地图运行它。
import httplib
from multiprocessing import Pool
def test_ip(addr):
conn = httplib.HTTPConnection(addr, timeout=1)
try:
conn.request("GET", "/")
except:
return addr, httplib.REQUEST_TIMEOUT
else:
resp = conn.getresponse()
return addr, resp.status
finally:
conn.close()
p = Pool(20)
results = p.map(test_ip, ["1.1.1.%d" % d for d in range(1,255)], chunksize=10)
print results
# [('1.1.1.1', 408), ('1.1.1.2', 408), ...]
调整Pool
大小并chunksize
适合。