Captchas

Webサイトにアクセスした途端、CAPTCHAが表示され、自転車が写った画像をすべて選んだり、パズルを解いたりするよう求められることがあります。煩わしい中断に思えるかもしれませんが、こうしたテストはボットを遮断し、Webサイトを保護するために設計されています。CAPTCHAには、画像の選択、歪められた文字の入力、クイズなど、さまざまな形式があります。  

通常のトラフィックパターンを維持したい場合は、適切な手法とリソースが必要です。この記事では、CAPTCHAの種類と、それぞれに適切に対応するためのテクニックを解説します。

CAPTCHAとその種類

CAPTCHA(Completely Automated Public Turing test to tell Computers and Humans Apart)は、ボットや自動化システムが人間になりすまして、次のような操作を実行するのを防ぐためのテストです。

  • アカウントの自動作成;
  • キャンペーンへの登録;
  • 偽のメールアドレスの収集・生成;
  • パスワードクラッキングの試行;
  • スパムメールやメッセージの送信。 

CAPTCHAは、人間には簡単に解けても自動化プログラムには解きにくいよう設計された、シンプルなパズルや視覚テストです。多くの場合、ボットによる認識を妨げるため、複雑な背景に歪められた文字、数字、画像が表示されます。長年にわたり、多くのCAPTCHA方式が開発されてきました。既存方式の多くに自動攻撃への脆弱性が見つかり、開発者がより強力な代替手段を作ろうとしてきたためです。以下では、CAPTCHAの主な5種類を紹介します。 

  • テキストベースのCAPTCHA

Text-based CAPTCHAsは、ユーザーがボットではないことを確認するため、文字を判別して入力させる一般的なオンラインセキュリティ対策です。CAPTCHA内の文字は、拡大縮小、回転、その他の加工など、歪んだ形で提示されることがよくあります。さらにボット対策を強化するため、色の変化、背景ノイズ、線、弧、点などの視覚要素が加えられることもあります。 

こうしたテクニックはセキュリティ向上に役立つ一方で、ユーザーにとっては操作を難しくする場合があります。ただし、色や背景テクスチャの使い方が不適切だと、自動化プログラムがテキストを背景から簡単に切り分けられ、セキュリティが低下するおそれがあります。一方で、こうした要素の実装が不適切だと、ユーザーにとってCAPTCHAが読みにくくなることもあります。 

  • 画像ベースのCAPTCHA

画像ベースのCAPTCHAは、テキストベースのものよりも一般的で理解しやすい傾向があります。これらのCAPTCHAでは画像認識に加え、意味や文脈の理解も求められるため、ボットにとって難易度が高くなります。

テキストベースのCAPTCHAの方が適していると考える開発者もいます。たとえば、画像ベースのCAPTCHAはWebページの表示領域を大きく占有し、低帯域幅の接続を利用する訪問者のユーザー体験を損なう可能性があります。画像によってはWebサイト全体のデザインになじまず、混乱を招くこともあります。CAPTCHA用に有効な画像データベースを整備するには時間もかかります。画像の選択肢を絞った、よりシンプルな方法が適している場合もあるでしょう。

  • 音声ベースのCAPTCHA

音声ベースのCAPTCHAは、人間が歪められた音声を認識できる能力を利用しています。音声ベースのCAPTCHAはテキストまたは画像ベースのCAPTCHAと組み合わせることができます。このタイプのCAPTCHAは音声認識技術を使用します。機械学習を用いてピッチ、トーン、リズムなどの音声パターンを分析し、その音声が人間によるものかを判定します。ただし、音声ベースのCAPTCHAは、ユーザーにもボットにも解釈が難しい場合があります。

  • テキスト問題

テキスト問題は、簡単な計算問題や単語に関する課題をユーザーに提示するCAPTCHAの一種です。たとえば、ユーザーは単語をすべて大文字で入力する、リストから最後の単語を選択する、または特定の単語に関連する色を識別するよう求められる場合があります。ユーザーはすべての指示に注意深く従う必要があります。このタイプの主な利点は、視覚障害があり視覚的な課題が難しいユーザーにも利用しやすい点です。

  • No CAPTCHA reCAPTCHA

reCAPTCHAは、Googleが提供する無料サービスです。ユーザーによる入力を必要としない、不可視のCAPTCHAも含まれています。Googleは時間の経過とともにreCAPTCHAの機能を強化し、歪んだテキストを使用する従来の方式から移行してきました。現在は、画像認識、チェックボックス、ユーザー操作を伴わない行動評価など、さまざまなテストが提供されています。たとえば、一部のテストでは、ユーザーに「私はロボットではありません」と書かれたボックスにチェックを入れるよう求めますが、実際のテストはその操作に至るまでのユーザーのマウスの動きに基づいています。人間のマウス操作には自然なばらつきがあり、ボットには再現しにくいためです。 

CAPTCHAの仕組み

CAPTCHAは、ボットやコンピュータープログラムが歪んだ文字、画像、パズルを解釈できないことを前提としています。一方で、人間はさまざまなフォント、手書きスタイル、背景を見分けて理解できるため、それらを認識できます。多くのインターネットユーザーにとって、CAPTCHAを解いてブラウジングを続けることは、それほど大きな問題には思えないかもしれません。 

しかし、自動化、負荷テスト、データ分析に携わる人にとっては、さまざまなCAPTCHAの種類を把握することが時間の節約につながります。トラフィックの挙動を最適化できることは、次のような人にとって重要です。 

  • 反復作業の効率化を目指す自動化担当者。
  • Webセキュリティの評価を担当するテスター。 
  • データを収集する開発者。

利用規約や関連法令を守りながら自動化を行う方法を、いくつか見ていきましょう。 

CAPTCHAに配慮した運用方法

1. プロキシローテーションとIP管理

プロキシローテーションは、複数のIPアドレスを使用してWebリクエストを管理します。これにより、認証に関する問題を抑えやすくなります。ユーザーが異なるプロキシ間で切り替えると、対象Webサイトは、1つのIPアドレスからの過剰なリクエストなど、ボット活動を示す可能性のあるパターンに気づきにくくなります。この戦略は、DataImpulseが提供するジオロケーションターゲティングと組み合わせることで、さらに効果を高められます。その結果、IPアドレスを変更するために信頼性の高い住宅用プロキシを使用することは、接続上の課題を管理するシンプルな方法の1つです。

2. ブラウザ自動化と人間行動のシミュレーション

PythonやNode.jsのライブラリを試すことができます。これらを使うと、マウス操作やスクロールなど、実際のユーザー行動をシミュレートできます。たとえば、Seleniumはブラウザ自動化を目的としていますが、Webスクレイピング中にCAPTCHAソルバー(2Captchaなど)と組み合わせることができます。この方法は、ユーザー行動を分析する高度なCAPTCHAへの対応に特に役立ちます。CAPTCHAシステムにリクエストが実在の人物によるものと判断させ、自動化スクリプトを通過させることを狙います。

3. 光学文字認識(OCR)

OCR技術は、歪んだテキストを含むCAPTCHA画像の分析と解釈に役立ちます。画像内の情報をコンピューターが処理できる形式に変換します。高度なOCR手法では、柔軟性を高めるために機械学習が使用されます。OCRは標準的なCAPTCHAには有効ですが、より複雑なものでは困難が生じる場合があります。一般に、この技術は他の手法と組み合わせて使う方が効果的です。 

4. Cookie分析

Cookie分析とは、ブラウザのCookieを管理してアクティブなユーザーセッションを維持することです。Webサイトがユーザー行動の追跡にCookieをどのように利用しているかを理解すれば、自動化ツールはリクエストに適切なCookieを送信し、実際のユーザーの挙動を再現できます。一貫したセッションを維持し、急な行動変化を最小限に抑えることで、認証を求められる回数を減らせる場合があります。Cookieを適切に管理すると、通常のトラフィックパターンを生成し、Webサイトとの自動化されたやり取りを改善できます。

5. CAPTCHA解決サービス

CAPTCHAソルバーを使用するプロセスはシンプルです。ボットがCAPTCHAに遭遇した場合は、そのデータをサービスのAPIに送信します。そこで自動化ツールまたは人が解決し、登録後にAPIをツールと連携しておけば、サービスから解答が返されるためスクレイピングを継続できます。

  • 2Captcha – 人手による解決を中心とした人気サービスです。SeleniumやPuppeteerなどのツールを使ってreCAPTCHAを自動的に解決するためのコード例も用意されています。複数のプログラミング言語に対応したAPIを使用するため、セットアッププロセスは簡単です。
  • CapSolver – 複数のプロキシタイプに対応するAI搭載サービスで、ユーザーは複数のIPアドレスにまたがってCAPTCHA解決プロセスを管理できます。このプラットフォームは遅延を最小限に抑える設計で、高精度なスクレイピングツールを求める企業に適しています。トライアルプランも用意されており、手頃な価格で利用できます。このサービスについて詳しく知りたい場合は、こちらの記事をお読みください。
  • BypassCaptcha –  2008年から提供されている専門的なCAPTCHAデコードプラットフォームです。同社のサービスの平均バイパス遅延は8〜13秒です。BypassCaptchaはスクリプトへの実装が簡単で、Ruby、Python、JavaScriptなどの言語に対応しています。CAPTCHAデータをAPIに送信すると、Google V2およびV3 reCAPTCHAの解決結果を迅速に受け取れます。また、データセンタープロキシと住宅用プロキシの両方に対応しています。 

まとめ

まとめると、CAPTCHAはスパム、ハッキング、パスワード窃取に対する重要な障壁です。CAPTCHAは、ユーザーが人間かどうかを判定し、Webサイトのセキュリティを高めるのに役立ちます。一方で、利用者に負担をかけたり、操作しづらかったり、すべてのブラウザで動作しなかったり、スクリーンリーダー利用者に支障をきたしたりする可能性があります。

利用規約や関連法令を守ることを前提に、プロキシローテーション、ブラウザエミュレーション、OCR、Cookie分析などの方法は、自動化の運用を支援します。その1つがプロキシローテーションで、リクエストを複数のIPアドレスに分散させることで匿名性を高められます。DataImpulseでは、予算に合わせやすい従量課金モデルで、プレミアムな住宅用、データセンター、モバイルプロキシを試すことができます。カスタムソリューション、194か所からの15+ million IP、高速接続などのメリットを利用できます。 

詳細は「Try now または[email protected]までお問い合わせください。

*本記事は純粋に教育目的で提供されています。法的問題やオンラインシステムへの損害を避けるため、常に慎重に行動し、倫理的ガイドラインに従い、Webサイトの利用規約を尊重してください。

Share article: