0

指定された IP 範囲 (1.1.1.1 - 1.1.1.254) のヘッダーにあるサーバー応答コード (200、301、404) をチェックする方法が Python にあるのでしょうか?

PSは、「HTTPResponse.status」オブジェクト(http://docs.python.org/library/httplib.html)で可能であることを気に入っており、どうすればIP範囲を確認できますか?

PS最初にポート80が開いているかどうかを確認してから、開いているポートのみをテストすることをお勧めします.254個のIPのおそらく30個がポート80を使用しているため、実際に速度が上がると思います.

4

1 に答える 1

2

ホストのルートへの通常の 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に合わせてください。

于 2012-08-14T02:11:59.070 に答える