Web クローラーは、Web ページを自動的に抽出するプログラムです。検索エンジンのために World Wide Web から Web ページをダウンロードし、検索エンジンの重要なコンポーネントです。しかし、Web クローラーを悪用すると、インターネット上に均質なものが多すぎて、オリジナリティが守れなくなります。その結果、多くの Web サイトが Web クローラーと戦い始め、コンテンツを保護するためにあらゆる手段を試みました。
1: ユーザー エージェント リファラーの検出 (推奨学習: Python ビデオ チュートリアル )
User-エージェントは HTTP プロトコルのフィールドであり、その役割は HTTP リクエストを発行する端末に関する情報を記述することです。
サーバーは、顧客が使用しているオペレーティング システムとバージョン、CPU タイプ、ブラウザとバージョン、ブラウザ レンダリング エンジン、ブラウザ言語、ブラウザ プラグインなどを識別できるようになります。
サーバーは、このフィールドを通じて誰が Web サイトにアクセスしているかを知ることができます。通常のブラウザ以外のユーザーをブロックします。
解決策:
ブラウザのユーザー エージェントを偽装します。各ブラウザのユーザー エージェントは異なり、すべてのユーザーがブラウザを使用できるためです。 。すべての UA 検出は、各リクエストでブラウザのユーザー エージェントを調整することで解決できます。
Referer はヘッダーの一部です。ブラウザが Web サーバーにリクエストを送信するとき、通常、ブラウザはリファラーを取得してサーバーに通知します。どのページからリンクしたのでしょうか?たとえば、一部の写真 Web サイトでは、写真をリクエストするとリファラー値が検出されますが、リファラーが一致しない場合、通常の写真は返されません。
解決策:
リファラーを検出するリクエストで、一致するリファラー値を伝えます。
2: js の難読化とレンダリング
いわゆる JavaScript の難読化は基本的に次のとおりです:
1. いくつかの点を削除します。実際には関数とは呼ばれません。
2. 分散した変数宣言をマージします。
3. 論理関数の簡略化。
4. 変数名の簡略化。それは、さまざまな圧縮ツールの長所と短所によって異なります。一般的なツールには、UglifyJS、JScrambler、その他のツールが含まれます。
js レンダリングは、実際には HTML ページの変更です。たとえば、一部の Web ページ自体はデータを返さず、データは js の読み込み後に HTML に追加されます。この状況が発生した場合は、クローラーが JavaScript 操作を実行しないことを知っておく必要があります。したがって、別の方法で対処する必要があります。
解決策:
1. Web サイトの JS ソース コードを読んでキー コードを見つけ、それを Python で実装します。
2. Web サイトの js ソース コードを読んでキー コードを見つけ、PyV8、execjs、およびその他のライブラリを使用して js コードを直接実行します。
3. Selenium ライブラリを通じてブラウザ環境を直接シミュレートします
3: IP 制限の頻度
WEB システムはすべて http プロトコルを使用して接続します。 WEB コンテナ はい、各リクエストはクライアントとサーバーの間に少なくとも 1 つの TCP 接続を生成します。
サーバーの場合、単位時間内に IP アドレスによって開始されたリクエストを明確に確認できます。
リクエスト数が一定値を超えた場合、異常なユーザーリクエストと判断できます。
解決策:
1. IP プロキシ プールを自分で設計し、ローテーションを通じてリクエストごとに異なるプロキシ アドレスを伝えます。
2. ADSL ダイナミック ダイヤルには独自の機能があり、番号をダイヤルするたびに新しい IP が取得されます。つまり、IP は固定されていません。
4: 検証コード
検証コード (CAPTCHA) は、「コンピュータと人間を区別するための完全に自動化されたパブリックチューリング テスト」です) は、コンピュータと人間を区別する公開の完全に自動化されたプログラムです。ユーザーがコンピュータであるか人間であるか。
悪意のあるパスワードのクラッキング、チケット詐欺、フォーラムのフラッディングを防止し、ハッカーが特定のプログラムを使用して特定の登録ユーザーに対して継続的にログインを試行し、暴力的にクラッキングすることを効果的に防ぎます。
この質問はコンピューターによって生成および判断できますが、答えることができるのは人間だけです。コンピュータは CAPTCHA の質問に答えることができないため、質問に答えるユーザーは人間であると考えることができます。
解決策:
1.検証コードを手動で識別する
2.pytesseract は単純な検証コードを識別します
3.ドッキング コーディング プラットフォーム
4. 機械学習
Python 関連の技術記事をさらに詳しく知りたい場合は、Python チュートリアル 列にアクセスして学習してください。
以上がPythonでアンチクロールを行う方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。