Webスクレイピングで知るべき5つのCAPTCHA知識

Webサイトにログインしようとしますが、読みにくい文字を入力するように求められたことがありませんか。これらの判読しにくい文字をCAPTCHAと呼ばれます。ユーザーにとって少し面倒な存在です。さらにWebスクレイパーにとっても利用環境が厳しくなったので、その扱い方に困りますね。

今日はWebスクレイピングでどうすればCAPTCHAをうまく回避するかを知るべき5つの知識についてお話しましょう。

#1.CAPTCHAとは
Wikipediaによると、 [CAPTCHA](https://ja.wikipedia.org/wiki/CAPTCHA)という語は(Completely Automated Public [Turing test](https://ja.wikipedia.org/wiki/CAPTCHA) to tell Computers and Humans Apart)（コンピューターと人間を区別する完全に自動化された公開チューリングテスト）のバクロニムです。

特にインターネットで製品を購入する時やWebサイトにログインする時に使用されます。

 

 
#2.CAPTCHAの仕組み

 

CAPTCHAは、人間のように機能できるマシンであるかどうかを判断するために使用されるチューリングテストに基づいて作られた技術です。 CAPTCHAの目的は、応答者にコンピューターでは対応できない問題を出して答えさせることです。ゆがんだ文字列と数字が使われることが多いところは人間にとって理解しやすいですが、スクレイピングツールにとってそれを認識するのが難しいです。書籍からスキャンした画像情報、さらにその画像から文字を読み取るように設置されている自動システムがあります。そのような複雑なシステムでさえ、あいまいにされたりひどく歪められたりしたような加工された情報を読み取るにも困難なことです。



 

#3.CAPTCHAの種類

 

CAPTCHAの種類にはいくつか存在しますが、最も一般的なのはテキストCAPTCHA、画像認識CAPTCHAと音声CAPTCHAです。
テキストCAPTCHAは、2つの簡単な部分からなっています。
一つ目は歪んだ画像にランダムな一連の文字または数字です。二つ目は文字または数字を入力するテキストボックスです。
画像に表示される内容をテキストボックスに入力することで、応答者は人間であるかどうかを判別できます。
![01テキストボックス.png](https://qiita-image-store.s3.amazonaws.com/0/262932/b60a395f-8728-8bf9-3156-bab80cbea7a9.png)




単に内容を判別することはボットにとってそれほど難しいことではないです。その難易度を上げるために、数字を分かりやすく表示して基本的な数学の問題を出すCAPTCHA、さらに3D効果で文字を表示する3D CAPTCHAなどのデジタル化されたCAPTCHAも作られました。

![02数学の問題.png](https://qiita-image-store.s3.amazonaws.com/0/262932/f7f86e86-12c7-02a8-fd4a-07a125a08d39.png)![03—3D CAPTCHA.png](https://qiita-image-store.s3.amazonaws.com/0/262932/71cb3391-5983-e289-d0e7-8927d5698a4e.png)

 

画像認識CAPTCHAは通常、歪んだテキストではなく、物、動物、人間、または風景の画像を応答者に判別してもらいます。それから、パズルのピースを埋めるように正しい画像をドラッグして画像を完成させることで、人間とコンピュータプログラムを区別します。
![04画像を完成させる.png](https://qiita-image-store.s3.amazonaws.com/0/262932/53dab2ec-382c-415c-a218-c25280cad8fd.png)



音声CAPTCHAは、録音からランダムな単語や数字を適当に組み合わせたり、さらに雑音を入れたりして流し、応答者に聞いた内容を入力してもらいます。スクレイピングボットに音声を判別することが難しいというところは音声判別CAPTCHAの優れた点です。
![05音声CAPTCHA.png](https://qiita-image-store.s3.amazonaws.com/0/262932/c7dca4c6-8253-0e8c-609f-32a6990de914.png)


 

 

 

 

#4. CAPTCHAが導入された原因

 

現在では、コンピューティングが普及しつつあり、コンピューター化されたタスクやサービスが一般化になってきました。それで、セキュリティーのレベルアップがより重要なことになってきます。Webサイトでのログインや支払いなどをセキュリティーの環境で行うことを確保するために、コンピューター用CAPTCHAの開発が重要になってきました。

さらに、CAPTCHAはオンラインデータを自動的に収集したり、Webサイト、ブログ、フォーラムに自動的に登録したりするボットとスパムをブロックすることができます。スパム、不正登録、および他の違法行為によるオーバーランからWebサイトを保護します。 
 

 

#5.CAPTCHAの回避策

 

CAPTCHAは、抽出の過程で設定されたクローラーを簡単に破壊ことができるので、それを回避するのはWebスクレイピングにとって非常に重要です。 CAPTCHAを回避するためのベストな方法はそれを避けられるように最善を尽くすことです。）Webサイトをスクレイプしすぎることは絶対に避け、人間らしく行動してください。
([スクレイピングにブロックを避けられる方法](https://www.octoparse.com/blog/scrape-websites-without-being-blocked)をご覧下さい。）
ログインページで避けられないようなCAPTCHAはまだたくさんあります。Octoparseでは、普段通り人間がサイトを閲覧するように、簡単にCAPTCHAを解決することができます。
( [CAPTCHAの回避策](https://www.octoparse.jp/tutorial/deal-with-captcha/)をご覧ください。）

自分でスクレーパーをコーディングする人々のために、CAPTCHA問題を解決するサービスを提供してくれるCAPTCHAソルバーがあります。たとえば、[Death by CAPTCHA](https://www.deathbycaptcha.com/user/login) と [Bypass CAPTCHA](http://bypasscaptcha.com/)はユーザーにAPIを提供し、スクレイピングプロセスにCAPTCHAを自動的に解読することができます。これらのCAPTCHAのソルバーはテキストCAPTCHA、さらにreCAPTCHAも扱うことができます。

CAPTCHAはWebスクレイピングに痛みのような存在と言えるでしょう。しかし、心配する必要がありません。スクレイピングツールとCAPTCHAのソルバーの発展に伴い、CAPTCHAはどんどん器用できなくなっています。いかにどんなCAPTCHAであろうと、それに対応できるボットが開発できます。そのおかげで、私たちはWebスクレイピングを楽しむことができます。