🥳Scrapeless コミュニティ に参加し、無料トライアルを請求して、強力な Web スクレイピング ツールキットにアクセスしてください。
ブログに戻る

Cypress を使って CAPTCHA を回避する方法

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

23-Sep-2024

自動化されたボットと本物のユーザーを区別するために、CAPTCHAと呼ばれる技術が使われています。CAPTCHAは、「Completely Automated Public Turing tests to tell Computers and Humans Apart」の略で、人間にとっては簡単にできるが、ロボットにとっては難しいタスクです。ボットを阻止するために、CAPTCHAは通常、ウェブサイトの特定の場所に配置されます。

最も広く使われているCAPTCHAプロバイダーには、Google reCAPTCHA、hCaptcha、BotDetectなどがあります。これらは、以下のいずれかまたは複数の問題に対処するために役立ちます。

  • テキストベースのCAPTCHA:これらを解くには、ユーザーは文字や数字の並べ替えられた文字列を入力する必要があります。
  • 画像ベースのCAPTCHA:ユーザーは、写真のグリッドの中で特定のものを特定する必要があります。
  • 音声ベースのCAPTCHA:ユーザーは、聞こえる単語を入力するように求められます。
  • パズルCAPTCHA:ユーザーは、ミニゲームを完成させるために正しいオブジェクトをクリックするか、質問に対する簡単な回答を提供する必要があります。

これらの問題をリアルタイムで解決するために、人間のオペレーターを頼るサービスを利用したり、プログラムをCAPTCHAを処理するライブラリに接続したりすることができます。ただし、ハードコードされたCAPTCHAは、使い勝手が悪く、ユーザーエクスペリエンスを悪化させるため、まれです。

CAPTCHAは、WAFなどのより洗練されたボット対策プログラムの一部として使用されることが多くなっています。

これらのソリューションがユーザーがボットであると判断した場合、動的にCAPTCHAが表示されます。このような状況では、ボットを人間のように動作させ、本物のブラウザを使用することで、CAPTCHAを回避できます。ただし、これは永続的な闘いであり、常に変化するボット検出アルゴリズムに対処するために、自動化されたスクリプトを頻繁に更新する必要があります。

ScrapelessのCAPTCHA Solverのような、ユーザーエミュレーションに基づいた最新アプリケーションを使用することは、CAPTCHAを回避するためのより効率的な方法です。

CAPTCHA や継続的な Web スクレイピング ブロックにうんざりしていませんか?

Scrapeless: 最高のオールインワン オンライン スクレイピング ソリューション!

データ抽出の可能性を最大限に引き出すために、当社の強力なツールキットをご利用ください:

最高の CAPTCHA ソルバー

複雑な CAPTCHA を自動的に解決し、継続的でスムーズなスクレイピングを実現します。

無料でお試しください!

CypressとCAPTCHA:健全ではないパートナーシップ

Cypressは、現在のWeb向けに設計されたフロントエンドテストツールです。Webスクレイピングやその他の一般的なブラウザ自動化タスクを実行できますが、エンドツーエンド(E2E)テストが主なユースケースです。そのため、主に所有または管理しているウェブサイトやウェブページと対話することを目的としています。

Cypressを使用して外部またはサードパーティのウェブサイトをターゲットとする場合、問題が発生し始めます。公式資料では、サードパーティのウェブサイトとのやり取りを最小限にすることが最善の策であることが明記されています。ボットとして識別されてCAPTCHAが表示されるリスクは、ドキュメントで言及されている主な理由の1つです。

これが問題になるのはなぜでしょうか?CAPTCHAは、自動化されたプログラムを停止させることを目的としているためです。その結果、Cypressブラウザの自動化を妨げる可能性があります。また、CypressのCAPTCHAを回避することは困難ですが、不可能ではないことも覚えておく必要があります。詳細については、次のセクションをご覧ください。

CypressでCAPTCHAを管理する方法

ご覧のように、Cypressは、CAPTCHAが最大の課題の1つであることをドキュメントで認めています。しかし、まだ諦めるには早すぎます。Cypress CAPTCHA回避ロジックを実装するためのいくつかの可能な戦略について調べてみましょう。

方法1:CAPTCHAを無効にする

ほとんどのCAPTCHAプロバイダーでは、テスト環境にいる場合、障害をバイパスまたは無効にすることができます。つまり、自動化が必要なウェブサイトを管理している場合は、CAPTCHAを完全に削除するか、より簡単なものと交換する必要があります。

たとえば、テスト目的で、reCAPTCHA v3で異なるキーを生成することができます。reCAPTCHA v2には、以下のテストキーを使用できます。

  • サイトキー:6LeIxAcTAAAAAJcZVRqyHh71UMIEGNQ_MXjiZKhI
  • シークレットキー:6LeIxAcTAAAAAGG-vFI1TnRWxMZNFuojJ4WifJWe

方法2:CAPTCHAの対話を自動化する

CAPTCHAの中には、チェックボックスをオンにするほど簡単なものもあります。reCAPTCHAの「No CAPTCHA」ウィジェットはその一例です。

これらのタスクは一見簡単に見えますが、人間の動作かどうかを判断するためにマウスの動きを調べているため、実際にはかなり複雑になる場合があります。しかし、すべてのCAPTCHAが難しいわけではありません。一部は回避が容易であり、単純なボットを阻止することを目的としています。状況によっては、Cypressのロジックを使用して、これらのCAPTCHAを自動化しようとすることができます。

Cypressは、クロスドメインのiframeを自動的に処理することはできません。この制限を回避するには、cypress.jsonファイルのchromeWebSecurity設定をfalseに変更します。

language Copy
{

"chromeWebSecurity": false

}

次に、CAPTCHAのチェックボックス要素を選択してクリックすることができます。reCAPTCHAの「No CAPTCHA」ウィジェットの場合、これを行うための自動化されたコードは以下のようになります。

language Copy
cy.get('iframe[src*=recaptcha]')

.its('0.contentDocument')

.should(d => d.getElementById('recaptcha-token').click())

これは一時的な解決策に過ぎず、ほとんどの場合有効ではありません。近年、CAPTCHAは人間のクリックとロボットからのクリックを区別するほど賢くなっています。結局のところ、それがまさにCAPTCHAの目的です。

方法 3: ブラウザのアンチボットを含める

前の2つのCypress CAPTCHAバイパス方法は、実際のターゲットに対して使用するにはあまりにも推測的です。Cypressをセットアップしてアンチ検出ブラウザを管理するのがより良い方法です。アンチ検出ブラウザとは、ウェブサイトが自動化された動作を検出するのを防ぐためにカスタマイズされたブラウザで、このようなテクノロジーに精通していない場合に備えて説明します。

次に、Cypressに次の指示を提供して、指定されたブラウザでスクリプトを開始することができます。

language Copy
cypress open --browser <path_to_your_browser>

この場合、は、アンチ検出ブラウザバイナリを含む絶対パス_to_your_browserを表します。

同様に、cypress.config.jsに次のコードを追加することで、Cypress UIをセットアップして、アンチ検出ブラウザを選択可能なオプションとして表示することができます。

language Copy
import { defineConfig } from 'cypress'

export default defineConfig({

e2e: {

setupNodeEvents(on, config) {

const antidetectBrowser = {

name: '<ANTIDETECT_BROWSER_NAME>',

channel: 'stable',

family: 'chromium',

displayName: '<ANTIDETECT_BROWSER_DISPLAY_NAME>',

version,

path: '<path_to_your_browser>',

majorVersion,

}

return {

browsers: config.browsers.concat(antidetectBrowser),

}

},

},

})

Cypressに、アンチ検出機能を持つブラウザで自動化されたコードを実行するように指示することは、それがボットとして解釈される可能性を低下させるだけであることに注意してください。それでも、アンチボットシステムは、自動化されたコードを使用していることを認識した場合、進行を妨げるためにCAPTCHAを課す場合があります。

結論

この記事を読むことで、CAPTCHAとその理由がCypressにとって大きな問題となる理由について理解しました。また、これらの方法を回避するための3つの代替方法についても調べましたが、これらの戦略にはそれぞれ大きな欠点があります。

CypressのCAPTCHA回避ロジックが十分に開発されていても、強力なボット検出システムによってスクリプトが依然として自動化されたものとしてフラグ付けされる可能性があります。CAPTCHAなしで任意のページのHTMLを提供できるアンロックAPIを使用してターゲットウェブサイトに接続するのが最善の策です。

そのようなAPIが存在します。Web Unlockerとして知られています。このAPIは、プロキシ統合を通じてブラウザフィンガープリンティングを管理し、リクエストごとに自動的に終了IPをローテーションし、自動化された再試行を開始し、CAPTCHAを解決します。アンチボット対策が今や手間なしになりました!

Scrapeless では、適用される法律、規制、および Web サイトのプライバシー ポリシーを厳密に遵守しながら、公開されているデータのみにアクセスします。 このブログのコンテンツはデモンストレーションのみを目的としており、違法または侵害的な活動には関与していません。 私たちは、このブログまたはサードパーティのリンクからの情報の使用についていかなる保証もせず、一切の責任を負いません。 スクレイピング活動を行う前に、法律顧問に相談し、対象となる Web サイトの利用規約を確認するか、必要な許可を取得してください。

最も人気のある記事

カタログ