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

SeleniumとRubyを使ったCAPTCHA回避方法

Sophia Martinez
Sophia Martinez

Specialist in Anti-Bot Strategies

14-Sep-2024

CAPTCHAは、今日の多くのウェブサイトで一般的な機能であり、ユーザーが人間であることを確認することで、ボットや自動スクリプトから保護するように設計されています。Webスクレイピングや自動テストに取り組んでいる開発者にとって、CAPTCHAは大きな障害となる可能性があります。しかし、適切なアプローチがあれば、これらの課題を回避することができます。この記事では、RubyのSeleniumを使用してCAPTCHAを回避する方法について説明します。Seleniumは、Web自動化のための強力なツールです。

CAPTCHAの理解とその使用目的

技術的な詳細に入る前に、CAPTCHAとは何か、なぜ実装されるのかを理解することが重要です。CAPTCHAは、「Completely Automated Public Turing test to tell Computers and Humans Apart」の略で、コンピュータと人間を区別する完全に自動化された公開チューリングテストのことです。これは、人間には比較的簡単だが、機械には解くのが難しい課題を提示することで、人間ユーザーとボットを区別するセキュリティ対策です。これらの課題には、画像内のオブジェクトの識別、パズルの解決、歪んだテキストの入力などがあります。

Web自動化におけるSeleniumの役割

Seleniumは、Webブラウザの自動化に広く使用されているオープンソースツールです。開発者は、Rubyなどさまざまなプログラミング言語でスクリプトを作成し、人間と同じようにWebページと対話することができます。Seleniumは、フォームの入力、ボタンのクリック、ページのナビゲーション、さらには動的コンテンツの処理もできます。しかし、CAPTCHAに関しては、これらの課題は自動化された対話をブロックするように特別に設計されているため、Seleniumの機能は制限されます。

CAPTCHAを回避するには、Seleniumを、これらの課題を解決できる追加のツールやサービスと組み合わせる必要があります。または、そもそもCAPTCHAをトリガーしないように、アプローチを調整する必要があります。

SeleniumとRubyでUndetected ChromeDriverを使用する

CAPTCHAは、特定のWebページへのアクセスを自動化されたボットから効果的にブロックする、Webセキュリティのための不可欠なツールです。しかし、Webスクレイピングや自動テストに取り組んでいる開発者にとって、CAPTCHAは大きな課題となる可能性があります。このガイドでは、特にアンチボットシステムによる検出を回避するように設計されたツールであるUndetected ChromeDriverを活用することで、RubyのSeleniumを使用してCAPTCHAを回避する方法について説明します。

1. Undetected ChromeDriverとは

Undetected ChromeDriverは、Seleniumの標準ChromeDriverの修正版で、高度なアンチボットメカニズムによる検出を回避するように最適化されています。これは主にPython向けに開発されていますが、実行可能ファイルを実行可能サービスパッケージにポートすることで、Rubyで使用できるように適応できます。このプロセスには、Pythonで実行可能ファイルを作成し、それをRubyのSeleniumスクリプト内で使用することが含まれます。

2. RubyでのUndetected ChromeDriverのセットアップ

まず、Pythonを使用してUndetected ChromeDriverの実行可能ファイルを作成する必要があります。Pythonについての知識が必要ですが、これはプロセスにおける重要なステップです。pipを使用して必要なPythonライブラリをインストールすることから始めます。

language Copy
pip install undetected-chromedriver

次に、実行可能ファイルを作成するPythonスクリプトを作成します。

language Copy
# 必要なモジュールをインポート
import undetected_chromedriver as uc
from multiprocessing import freeze_support

if __name__ == '__main__':
    freeze_support()
    driver = uc.Chrome(headless=False, use_subprocess=False)
    driver.quit()

このスクリプトを実行して、Undetected ChromeDriverの実行可能ファイルを作成します。これは、システムのAppDataディレクトリ(Windowsの場合)またはLinuxの同等の場所に保存されます。

3. RubyのSeleniumでのUndetected ChromeDriverの統合

Undetected ChromeDriverの実行可能ファイルが作成されたので、RubyのSeleniumスクリプトに統合することができます。

まず、Selenium WebDriverをインポートし、ChromeブラウザとUndetected ChromeDriverの実行可能ファイルの両方のパスを指定します。

language Copy
require 'selenium-webdriver'

# Chromeブラウザ実行可能ファイルへのパス
chrome_exe_path = 'C:/Program Files/Google/Chrome/Application/chrome.exe'

# Undetected ChromeDriver実行可能ファイルへのパス
undetected_chromedriver_path = 'C:/Users/<YOUR_USERNAME>/AppData/Roaming/undetected_chromedriver/undetected_chromedriver.exe'

次に、適切なChromeオプションとサービスパラメータを設定して、SeleniumがUndetected ChromeDriverを使用するように構成します。

language Copy
options = Selenium::WebDriver::Chrome::Options.new
options.binary = chrome_exe_path
options.add_argument('--headless')

service = Selenium::WebDriver::Service.chrome(path: undetected_chromedriver_path)

driver = Selenium::WebDriver.for :chrome, options: options, service: service

この設定は、SeleniumにUndetected ChromeDriverを使用するように指示し、アンチボット対策によってフラグ付けされる可能性が低くなります。

4. CAPTCHAで保護されたページのナビゲーションと操作

ドライバーが構成されたので、CAPTCHAで保護されたWebページに移動して、CAPTCHAを回避することができます。ドライバーにCAPTCHAの課題を処理する時間を与えることが重要です。

language Copy
begin
  driver.navigate.to 'your_target_url'

# CAPTCHA の処理時間を確保する
  sleep(10)

  # CAPTCHA がバイパスされたかどうかを確認するためのスクリーンショットを撮る
  driver.save_screenshot('captcha_bypass_screenshot.png')
  puts 'スクリーンショットが保存されました。'
ensure
  driver.quit
end

このスクリプトは、指定された URL に移動し、CAPTCHA が処理されるのを待ってから、CAPTCHA が正常にバイパスされたかどうかを確認するためのスクリーンショットを保存します。

5. 制限と考慮事項

Undetected ChromeDriver は多くの CAPTCHA 実装に対して有効ですが、最も高度なボット対策システムをバイパスできない可能性があります。高度な行動分析やより複雑なチャレンジなどの高度なテクノロジーを採用している Web サイトでは、このツールを使用しても自動化されたスクリプトをブロックできます。また、CAPTCHA をバイパスすることの倫理的考慮事項と潜在的な法的影響を認識することも重要です。不正アクセスやスクレイピングは、アカウントの禁止、法的措置、その他の影響につながる可能性があるためです。

このような場合、機械学習モデルの統合、プロキシのローテーション、または特殊な CAPTCHA 解決サービスの使用など、さらなる対策が必要になる場合があります。ただし、これらの手法ではより複雑な設定が必要になることが多く、責任を持って使用する必要があります。

Web スクレイピング API を使用して CAPTCHA をバイパスする

CAPTCHA と高度なボット対策システムは、無料のオープンソース ソリューションにとって大きな課題となります。これらのシステムでは、ブラウザー フィンガープリンティングや機械学習などの高度な手法を使用して自動アクセス試行を検出してブロックすることが多く、基本的なバイパス方法が無効になります。

より堅牢なアプローチとして、Web スクレイピング API を使用することが、CAPTCHA チャレンジをバイパスする最も信頼性の高い方法となります。このような API は通常、プレミアム プロキシ ローテーション、ヘッドレス ブラウザー統合、リクエスト ヘッダーの最適化など、包括的なボット対策バイパス機能を提供します。

CAPTCHA ソルバーを使用して CAPTCHA をバイパスする

説明のために、CAPTCHA ソルバーを使用して保護された Web ページで CAPTCHA をバイパスする方法を見てみましょう。

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

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

当社の強力なツールキットを活用して、データ抽出の可能性を最大限に引き出しましょう:

最高の CAPTCHA ソルバー

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

無料でお試しください!

結論

CAPTCHA をバイパスすることは、Web スクレイピングや自動テストに携わる開発者にとって複雑ですが達成可能なタスクです。 Selenium のようなツールは、特に Undetected ChromeDriver と組み合わせると、CAPTCHA で保護された Web ページをナビゲートするための効果的な方法を提供します。このアプローチは強力ですが、万能ではありません。高度なボット対策システムでは、依然として課題が生じる可能性があります。Selenium が不十分なシナリオでは、Web スクレイピング API が強力な代替手段となり、最も洗練された CAPTCHA さえもバイパスする特殊な機能を提供します。

ただし、CAPTCHA のバイパスには注意が必要です。保護された Web サイトへの不正アクセスは深刻な結果につながる可能性があるため、倫理的考慮事項と法的影響を常に考慮する必要があります。開発者は、技術的なノウハウと責任あるプラクティスを組み合わせることで、CAPTCHA がもたらす課題を効果的かつ倫理的にナビゲートできます。

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

最も人気のある記事

カタログ