ホームページ  >  記事  >  バックエンド開発  >  Pythonでアンチクロールを行う方法

Pythonでアンチクロールを行う方法

(*-*)浩
(*-*)浩オリジナル
2019-07-01 14:10:112951ブラウズ

Web クローラーは、Web ページを自動的に抽出するプログラムです。検索エンジンのために World Wide Web から Web ページをダウンロードし、検索エンジンの重要なコンポーネントです。しかし、Web クローラーを悪用すると、インターネット上に均質なものが多すぎて、オリジナリティが守れなくなります。その結果、多くの Web サイトが Web クローラーと戦い始め、コンテンツを保護するためにあらゆる手段を試みました。

Pythonでアンチクロールを行う方法

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。