ホームページ > バックエンド開発 > Python チュートリアル > Python クローラーによって IP がブロックされるのを防ぐ方法

Python クローラーによって IP がブロックされるのを防ぐ方法

little bottle
リリース: 2019-04-10 17:07:35
転載
3226 人が閲覧しました

データをクロールするクローラーを作成する場合、特に大量のデータをクロールする場合、多くの Web サイトにはクローラー対策が講じられているため、IP がブロックされやすく、クロールを続行できなくなります。この記事では、この問題を解決するためのいくつかの対策をまとめました。これらの対策を単独で、または同時に使用すると、より良い結果が得られます。

Fake User-Agent

リクエスト ヘッダーの User-Agent をブラウザの User-Agent に設定して、ブラウザ アクセスを偽装します。例:

headers = {'User-Agent':'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36'}
resp = requests.get(url,headers = headers)
ログイン後にコピー

繰り返されるクロールの間にランダムな時間間隔を設定します

# 比如:
time.sleep(random.randint(0,3))  # 暂停0~3秒的整数秒,时间区间:[0,3]
# 或:
time.sleep(random.random())  # 暂停0~1秒,时间区间:[0,1)
ログイン後にコピー

偽のクッキー

ブラウザからページに正常にアクセスできる場合は、クッキーをコピーできます。

cookies = dict(uuid='b18f0e70-8705-470d-bc4b-09a8da617e15',UM_distinctid='15d188be71d50-013c49b12ec14a-3f73035d-100200-15d188be71ffd')
resp = requests.get(url,cookies = cookies)
ログイン後にコピー
# 把浏览器的cookies字符串转成字典
def cookies2dict(cookies):
    items = cookies.split(';')
    d = {}
    for item in items:
        kv = item.split('=',1)
        k = kv[0]
        v = kv[1]
        d[k] = v
    return d
ログイン後にコピー

注: ブラウザの Cookie を使用してリクエストを開始した後でも、リクエストの頻度が高すぎる場合、IP は依然としてブロックされます。この時点で、次のことを実行できます。ブラウザ上で対応するアクションを実行し、手動で検証 (検証画像をクリックするなど) した後は、引き続き Cookie を使用して通常どおりリクエストを行うことができます。

プロキシを使用する

アクセスに複数のプロキシ IP を使用すると、同じ IP が大量のリクエストを開始してブロックされるのを防ぐことができます。たとえば、次のとおりです。

proxies = {'http':'http://10.10.10.10:8765','https':'https://10.10.10.10:8765'}
resp = requests.get(url,proxies = proxies)
# 注:免费的代理IP可以在这个网站上获取:http://www.xicidaili.com/nn/
ログイン後にコピー

[推奨コース : Python ビデオ チュートリアル ]

以上がPython クローラーによって IP がブロックされるのを防ぐ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

関連ラベル:
ソース:cnblogs.com
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート