ホームページ  >  記事  >  バックエンド開発  >  Python のエントリーレベルの識別検証コード

Python のエントリーレベルの識別検証コード

迷茫
迷茫オリジナル
2017-03-25 17:07:041680ブラウズ

前回の話: この記事で言及した内容は、昨年の夏休み中にブロガーが行ったもので、私はまだ自分の気持ちを紙に書き出すほど落ち着いていません。どれくらい書けるか、それがこの記事です。

認証コード?私も割ってみようかな?

認証コードの導入については多くは言いません。ブロガーはノースイースタン大学の学生として、学務部の認証システムに最も頻繁に接しています。 . コード化されています。
東莞大学の認証コードは入力するのが難しすぎるという苦情が寄せられています。大文字と小文字が区別されるだけでなく、正しく入力しても、禁止你的左键复制というエラーメッセージが表示されることがあります。
(ただし、教務部は人間が操作しやすいように、2016-17年度に認証コードの内容を変更しました。)

教務部の認証コードは非常に高度なものであることがわかります。それぞれの文字や数字の大きさ、位置、形などが同じなので、確認コードを識別する基礎が無い初心者に適しています。

識別方法

シミュレートされたログインには複雑な手順がありますが、ここでは、他の操作とは関係なく、入力された確認コードの画像に基づいて応答文字列を返すだけです。

検証コードが干渉を生み出すために画像をカラフルにすることはわかっていますが、このステップでは画像の色を強調したり、コントラストを高めたりすることが必要です。

写真をさまざまに操作した後、最終的に干渉を除去するためのより完璧な解決策を見つけました。干渉を除去した後、最適な状況下では、非常に純粋な白黒のキャラクター画像が得られることがわかります。画像内に 4 つの文字が含まれているため、4 つの文字すべてを一度に認識することはできません。各小さな画像に 1 つの文字のみが含まれるように画像を切り取ってから、各画像を個別に認識する必要があります。

次のステップはテキストを認識することです。まず、取得した小さな画像を 01 で表される行列に変換します。各行列は文字を表します。
例えば、数字の6の行列

num_6=[
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,1,1,0,0,0,0,0,0,
0,0,0,0,1,1,1,0,0,0,0,0,0,
0,0,0,1,1,1,0,0,0,0,0,0,0,
0,0,0,1,1,0,0,0,0,0,0,0,0,
0,0,1,1,0,0,0,0,0,0,0,0,0,
0,0,1,1,0,0,0,0,0,0,0,0,0,
0,1,1,1,1,1,1,1,0,0,0,0,0,
0,1,1,1,1,1,1,1,1,0,0,0,0,
0,1,1,0,0,0,0,1,1,1,0,0,0,
0,1,1,0,0,0,0,0,1,1,0,0,0,
0,1,1,0,0,0,0,0,1,1,0,0,0,
0,1,1,1,0,0,0,1,1,1,0,0,0,
0,0,1,1,1,1,1,1,1,0,0,0,0,
0,0,0,1,1,1,1,1,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,
]

遠くから見ても、目を細めればまだ区別できます。
東達大学学務局の認証コードは非常に規則的であり、各番号の位置が固定されているため、機械学習アルゴリズムを使用する必要はなく、単純な行列比較だけです。用意された行列の中で最も類似度が高い行列 ここではさまざまな比較方法があり、とにかく簡単で正確にデータを識別できます。

この時点で、確認コードの識別作業は終了です。

まとめ

今回実施した認証コード認識は主に画像操作にPythonのPILを使用しており、ログインをシミュレートし認証コードを自動入力するコードは全て

xfangfangのGithub

をご覧ください。

以上がPython のエントリーレベルの識別検証コードの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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