Wudeについて話さないPythonのクライミング防止アーティファクト「fake_useragent」

みなさん、こんにちは。私は小さな灰色の類人猿で、バグを書くことができるプログラマーです。

HTTPを学んだ友人は、Webサイトにアクセスするときに、通常はリクエストヘッダーを追加する必要があることを知っているはずです。そうしないと、多くの場合、ブラウザはあなたが違法なリクエストであると判断し、リクエストを拒否します。

したがって、Webサイトにアクセスするときは通常、リクエストヘッダーを追加します。最も一般的に使用される方法は、ユーザーエージェントを追加してこのリクエストをブラウザに偽装することです。これにより、Webサイトにアクセスしたときにリクエストヘッダーが追加されなくなります。違法なリクエストと見なされました。

では、ユーザーエージェントとは何ですか?

ユーザーエージェントはユーザーエージェントまたは略してUAとも呼ばれます。これは、Webサイトサーバーがオペレーティングシステム、構成情報、CPUタイプ、ブラウザーバージョン、およびクライアントが使用するその他の情報にアクセスできるようにする非常に特殊な文字列ヘッダーです。User-Agentは、訪問者が要求に使用したツールをWebサーバーに通知します。クローラー要求の場合は通常拒否され、ユーザーのブラウザーの場合は応答します。

通常の状況では、私たちが通常作成するクローラーは、サーバー自体にデフォルトでPythonクロール要求を送信するように指示し、一般的なWebサイトへのアクセスは許可されていません。主な理由は、商業上の問題が関係している可能性があります。したがって、User-Agentフィールドを変更することで、Webサイトを簡単にだまし、対応するアンチクロールメカニズムのトリガーを回避できます。

Pythonのfake_useragentライブラリは、user_agentを手動で頻繁に置き換える問題を解決します。これは、Pythonクローラー開発にとって非常に使いやすいアンチピッキングアーティファクトであると言えます。

次に、私の友人と私はこのライブラリの使用法を詳細に紹介します。

fake_useragentはサードパーティのライブラリに属しているため、fake_useragentライブラリを使用する場合は、まず対応するpipコマンドを使用してインポートする必要があります。対応するpipコマンドは次のとおりです。

pip install fake-useragent

次に、ライブラリをプログラムにインポートし、プログラムがエラーを報告するかどうかを確認します。エラーがない場合は、インストールは成功します。

 

偽のユーザーエージェント使用

インストールが成功した後のライブラリの具体的な使用法は次のとおりです。

まず、プログラムにライブラリをインポートします。

from fake_useragent import UserAgent

使用したいのはその背後にあるUserAgentメソッドであり、このメソッドを使用してリクエストヘッダーをランダムに生成できます。

詳細は次のとおりです。

from fake_useragent import UserAgent
url = 'https://www.sogou.com/web'
headers={
    'User-Agent': UserAgent().random
}
res =requests.get(url=url,params=param,headers=headers)

上記の方法を使用すると、リクエストヘッダーをランダムに生成し、クライミング防止メカニズムをトリガーするリクエストを回避できます。また、リクエストヘッダーを頻繁に更新する手間も軽減されます。

 

検証例

次に、特定のインスタンスを使用して、fake_useragentライブラリを検証します。

入力した検索情報に応じて捜狗ブラウザのページデータをクロール

# 爬取搜狗首页的页面数据
import requests,os
from fake_useragent import UserAgent

url = 'https://www.sogou.com/web'
word=input('enter a word:')
param = {
    'query': word
}

headers={
    'User-Agent': UserAgent().random
}
res =requests.get(url=url,params=param,headers=headers)
print(res.request.headers)
# print(res.text)
html =res.text
file_name= word+'.txt'
with open(file_name,'w',encoding='utf-8') as f:
    f.write(html)
if os.path.exists(file_name):
    print('爬取结束')

さて、Pythonのfake_useragentライブラリの使用については、ここで友達と共有します。欠陥がある場合は、私を修正して一緒に進歩できることを願っています。

気分が良く、好きでフォローすることを忘れないでください!

大きな悪いオオカミが一緒に進歩するためにあなたに同行します!

 

おすすめ

転載: blog.csdn.net/weixin_44985880/article/details/110882028