Webサイトにログインしようとた際に、読みにくい文字の入力を求められたことがありませんか。こうしたロボットが判読しにくい文字列を「CAPTCHA(キャプチャ)」と呼びます。サイト運営者側がCAPTCHAを設定することは、スパム対策として有効な手段の一つです。
一方、任意のWebサイトから特定の情報だけを収集するWebスクレイピングを行う場合、CAPTCHAが設定されているサイトは、スクレイピングが難しくなります。CAPTCHAが設定されているWebサイトをスクレイピングしたい場合はどのようにすれば良いのでしょうか?
今回はCAPTCHAの基本知識から、Webスクレイピングを行う際のCAPTCHAの回避方法について解説します。
CAPTCHAとは
CAPTCHAとは、Completely Automated Public Turing test to tell Computers and Humans Apartの略で、日本語で「コンピュータと人間を区別する完全に自動化された公開チューリングテスト」を意味します。
かんたんにいえば、Webサイトやオンラインサービスを利用する際にコンピュータ(ボット)ではなく人間によって操作されていることを判断する、スパム対策の仕組みです。悪質なコンピューターボットは、マルウェアの拡散から個人情報の流出など、さまざまなセキュリティ上の被害をもたらします。
そのため、Webサイトやサービスの運営者は、ユーザーにCAPTCHAでのアクセスを促すことで悪質なスパムボットからのアクセスを防ぐことができます。
CAPTCHAの仕組み
CAPTCHAでは、ボットには識別できないような、ゆがんだ文字列と数字を表示しユーザーに入力を指示します。ユーザーは表示された文字列と数字を読み解き、フォームに入力します。文字列以外にも、風景画像の中から信号機や階段などの抽出を促すものや、ジグソーパズルのように画像を完成させるものもあります。こうしたCATCHAテストは、マイページログイン、アカウント作成、ECサイトの取引ページなどに利用されています。
人間の場合は、人それぞれ筆跡が異なったり、フォント(字体)が異なったりしても、同じ文字列として認識できます。しかし、ボットのようなコンピュータープログラムの場合は認識しきれないことからCAPTCHAはスパム対策として取り入れられるようになりました。
Webスクレイピングで動作するクローラーボットもCAPTHAを認識するのは容易ではありません。近年では、スクレイピングを防ぐためにCAPTCHAを導入されているケースも増えています。
CAPTCHAの種類
CAPTCHAにはいくつかの種類が存在します。例えば、テキストCAPTCHA、画像認識CAPTCHA、音声CAPTCHAがあげられます。
CAPTCHA
テキストCAPTCHAは、歪んだ文字列がランダムに表示される部分と、文字列を入力するテキストボックスで構成されます。ユーザーは画像に表示された歪んだ文字列を読み解きテキストボックスに入力することで、人間かどうかを判別できます。

単純な文字列の判別はコンピューターボットにとってそれほど難しくありません。OCR(光学文字認識)技術が発達したことで、人間のように読み解くことができるようになりました。近年では解読の難易度を上げるために、計算問題を出すCAPTCHAや、3D効果で文字を表示する3D CAPTCHAなども登場しています。


画像認識CAPTCHA
画像認識CAPTCHAは、画像内のモノ、動物、風景を判別させるCAPTCHAです。例えば、「花を選んでください」といった問題が表示されたら、画像の中から花に該当する部分を選択します。その他にも、ジグソーパズルのピースを埋めるように正しい画像をドラッグして画像を完成させるものもあります。
文字入力に比べて判別が難しいため、人間とコンピューターボットを正確に区別します。

音声CAPTCHA
音声CAPTCHAはランダムな単語や数字を適当に組み合わせたり、雑音に混じった数字を聞き取らせたりして、その内容を応答者に入力してもらう方式です。人間は普段様々な環境雑音(カフェ内の会話や駅前の雑音)の中でも音声を聞き分け、会話をすることができます。
しかしコンピューターボットには、環境雑音の中から音声を判別することは難しい課題です。そのため、音声CAPTCHAは正確に人間とロボットを判別することが可能です。

CAPTCHAが普及した理由
CAPTCHAの歴史は古く、一般的なタイプは1997年に作成されたといわれています。2022年現在、CAPTCHを提供するベンダーは20社以上存在し、中でもGoogleのreCAPTCHAは600万以上のWebサイトで使用されています。
ここまでCAPTCHAが広く普及した大きな理由は、悪意のあるスパムボットやサイバー攻撃からWebサイトへのアクセスを防ぐことです。特に近年ではオンラインサービスの普及に伴い、サイバー攻撃の技術も進化し続けています。
万が一、情報漏洩事故などを起こしてしまえば社会的信頼は失われ、企業としての存続すら危ぶまれるでしょう。そのため、Webサイト管理者やオンラインサービス運営者が情報セキュリティの質を高めることは企業として重要な責務です。
CAPTCHAの技術は今もなお進化し続けており、Webサイトに不正登録するボットや悪意のあるスパムのブロックに貢献しています。
スクレイピングでCAPTCHAを回避する方法
CAPTCHAは設定されたクローラーを簡単に破壊できるため、CAPTCHAの回避策を検討することはWebスクレイピングを実行する上でとても重要です。CAPTCHAを回避する最良の方法は、サイト側にWebスクレイパーからのアクセスであることを気づかれないようにすることです。
Webスクレイパーのアクセスリクエストの時間を空け、可能な限り低速でスクレイピングを実行します。つまり、「人間らしく行動する」ということが大切です。詳しくはこちらの記事をご覧ください。
参考:スクレイピングテクニック – バレないようにする方法を解説
その他にも、Webスクレイパーが避けられないCAPTCHAはたくさんあります。WebスクレイピングツールOctoparse(オクトパス)では、CAPTCHAを解決する機能が備わっています。詳しくは、Octoparseのチュートリアルをご覧ください。
参考:Octoparseチュートリアル
自分でWebスクレイパーをコーディングする場合は、CAPTCHAを回避するサービスとして「CAPTCHAソルバー」が有名です。例えば、「Death by CAPTCHA」「Bypass CAPTCHA」はAPIを提供しており、ユーザーは作成したスクレイパー内に組み込むことで、スクレイピングの過程でCAPTCHAを自動的に解読することができます。こうしたCAPTCHAソルバーは、テキストCAPTCHAやreCAPTCHAなど様々なCAPTCHAに対応しています。
まとめ
CAPTCHAはWebサービスを楽しむ方にとって、面倒な存在ともいえるでしょう。もちろん、悪意のあるサイバー攻撃を防ぐという役目はあるものの、健全に利用したい方にとっては、毎回CAPTCHA認証をするのはわずらわしいと感じてしまいます。
また、Webスクレイピングで効率的にデータ収集をしたい方にとっては、CAPTCHAがあることで作業が進まないため、「どうにかCAPTCHA認証を自動化したい」と感じるのは自然なことです。
しかしながら、CAPTCHAはすでにそこまで恐れる存在ではなくなりつつあります。スクレイピングツールとCAPTCHAのソルバーの発展に伴い、CAPTCHAは昔ほど意味を持たなくなっています。Webスクレイピング自体に違法性はありません。
スクレイピングの使い方を間違えず、相手に迷惑を掛けない範囲であれば問題ありませんし、スクレイピングを行うことで私たちはより重要なことに時間を割くことができます。スクレイピングに関しして詳しく知りたい方はこちらもご覧ください。
参考:スクレイピングは違法?Webスクレイピングに関する10のよくある誤解!
CAPTHAがあるサイトだからといって、必要以上に慎重にならず積極的に活用していきましょう。
