Pythonクローラーセレクション12エピソード(キャプチャアンチクライミングテクノロジー)
世界上最恶心的验证码
- そうです、陰謀団はそれをすることができません
1.画像確認コード
1.1画像検証コードとは
- CAPTCHAは、「コンピューターと人間を区別するための完全自動公開チューリングテスト」の略語で、ユーザーがコンピューターか人間かを区別する公開完全自動プログラムです。
1.2検証コードの役割
- 悪意のあるパスワードクラッキング、チケットスワイプ、フォーラムの灌漑、およびページスワイプを防止します。ハッカーが特定のプログラムを使用して、特定の登録ユーザーに継続的にログインを強制することを効果的に防止します。実際、確認コードの使用は、多くのWebサイト(China Merchants Bankのオンラインパーソナルバンキング、Baiduコミュニティなど)で一般的な方法です。 、この機能を実現するために比較的簡単な方法を使用します。ログインは少し面倒ですが、この機能はネチズンのパスワードセキュリティにとって依然として必要かつ重要です。
1.3クローラーで画像検証コードのシナリオを使用する
- 登録済み
- ログインする
- リクエストを頻繁に送信すると、サーバーは確認のために確認コードをポップアップします
1.4画像検証コード処理スキーム
- 手動入力(入力)
一度ログインした後も継続して使用できる場合に限ります。 - 画像認識エンジン分析
光学認識エンジンを使用して画像内のデータを処理します。現在、画像データの抽出によく使用されていますが、検証コードの処理にはあまり使用されていません。 - コーディングプラットフォーム
クローラー用の一般的な検証コードソリューション
2.画像認識エンジン
OCR(光学式文字認識)とは、スキャナーまたはデジタルカメラを使用してテキストデータをスキャンして画像ファイルにし、画像ファイルを分析および処理して、テキスト情報とレイアウト情報を自動的に認識して取得するソフトウェアを指します。
2.1正八胞体とは
- HP研究所によって開発されGoogleによって維持されているオープンソースOCRエンジンであるTesseractは、オープンソース、無料、多言語、およびマルチプラットフォームのサポートを特徴としています。
- プロジェクトアドレス:https://github.com/tesseract-ocr/tesseract
2.2画像認識エンジン環境のインストール
1エンジンの取り付け
- Mac環境でコマンドを直接実行する
brew install --with-training-tools tesseract
-
Windows環境でのインストールは
、exeインストールパッケージを介してインストールできます。ダウンロードアドレスは、GitHubプロジェクトのwikiから見つけることができます。インストールが完了したら、Tesseract実行可能ファイルのディレクトリをPATHに追加して、後続の呼び出しを容易にすることを忘れないでください。 -
Linux環境でのインストール
sudo apt-get install tesseract-ocr
2Pythonライブラリのインストール
# PIL用于打开图片文件
pip/pip3 install pillow
# pytesseract模块用于从图片中解析数据
pip/pip3 install pytesseract
2.3画像認識エンジンの使用
- 開いた画像ファイルのデータは、pytesseractモジュールのimage_to_stringメソッドを使用して文字列データに抽出できます。具体的な方法は次のとおりです。
from PIL import Image
import pytesseract
im = Image.open()
result = pytesseract.image_to_string(im)
print(result)
2.4画像認識エンジンの利用拡大
- Tesseractは使い方とトレーニングが簡単です
- 他のocrプラットフォーム
微软Azure 图像识别:https://azure.microsoft.com/zh-cn/services/cognitive-services/computer-vision/
有道智云文字识别:http://aidemo.youdao.com/ocrdemo
阿里云图文识别:https://www.aliyun.com/product/cdi/
腾讯OCR文字识别:https://cloud.tencent.com/product/ocr
3.コーディングプラットフォーム
3.1コーディングプラットフォームの使用
現在、多くのWebサイトでクロール防止に検証コードが使用されているため、データをより適切に取得するには、コードコーディングプラットフォームクローラーで検証コードを使用する方法を理解する必要があります。
3.2一般的なコーディングプラットフォーム
-
超级鹰
http://www.chaojiying.com/api.html -
图鉴
http://www.ttshitu.com/docs/index.htmlユニバーサル検証コード認識を解決できる
3.3クラウドコーディングの使用
コーディングプラットフォームの使用方法を理解するために、クラウドコーディングを例として取り上げましょう
4.一般的な種類の確認コード
4.1 URLアドレスは変更されず、確認コードも変更されません
これは検証コードの非常に単純なタイプです。対応するタイプは、検証コードのアドレスを取得し、コーディングプラットフォームを介してそれを要求して識別するだけです。
4.2 URLアドレスは変更されず、確認コードが変更されます
このタイプの確認コードは、より一般的なタイプです。このタイプの確認コードについては、次のことを考慮する必要があります。
ログインプロセス中に、入力した確認コードが正しいと仮定すると、相手のサーバーは、入力した確認コードが他の確認コードではなく、画面に表示されている確認コードであるとどのように判断しますか?
ウェブページを取得するとき、確認コードをリクエストするとき、および確認コードを送信するとき、相手のサーバーは、前に取得した確認コードと最後に送信した確認コードが同じ確認コードであることを確認するための何らかの方法に合格している必要があります。この方法は何ですか?
もちろん、これはCookieを介して実現されるため、それに応じて、リクエストページで確認コードをリクエストし、確認コードを送信する必要があります。Cookieの整合性を確保する必要があります。requests.sessionを使用してこの問題を解決できます。