アマゾンのCAPTCHAを回避する方法:ガイド2025

Amazon CAPTCHAを回避し、ウェブスクレイピングのワークフローを最適化する3つの実証済みの方法を学びましょう。
3 分読
How to Bypass Amazon CAPTCHA blog image

このブログ記事で、あなたは見ることができる:

  • Amazon CAPTCHAとは何ですか?
  • これを避けるための3つの異なるアプローチ
  • これらの技術の完全な比較

始めよう。

Amazon CAPTCHA:はじめに

回避方法を学ぶ前に、Amazon CAPTCHAとは何か、なぜ特定のページに表示されるのかを理解しよう。

定義

Amazon CAPTCHAは、自動化スクリプトを使用してAmazonのページにアクセスしたり、サイト上で自動化されたインタラクションを実行する際に表示されるボット対策です。ほとんどの場合、単純なテキストベースのCAPTCHAとして表示され、画面に表示される文字を入力する必要があります:

アマゾンのCAPTCHAの例

上記の課題は単純に見えるかもしれないが、ほとんどのeコマース・ウェブスクレイピング・スクリプトを止めるには十分である。良いニュースは、これが市場で最も高度なCAPTCHAではないということです。

表示時

ここからが厄介なところだ…Amazon CAPTCHAは、決まったシナリオやブラウザの設定下では表示されません。見つかることもあれば、見つからないこともあります。

私たちのテストによると、Selenium、Puppeteer、Playwright などの自動化ツールを使用する際に、CAPTCHA をトリガーする最も一般的なシナリオは以下のとおりです:

  1. アマゾンの商品ページに直接アクセスする
  2. 自動検索の実行
  3. ログインまたは登録を試みる

しかし、これらの行動はどれもCAPTCHAチャレンジを保証するものではないことに注意することが重要です。この行動は良いことだと思うかもしれないが、実際はそうではない!あなたのアマゾンスクレイパーは完璧に動作しているように思われるかもしれませんが、突然、明らかな理由もなくブロックされ始めるのです。

例えば、以下のような単純なSeleniumスクリプトは問題なく動作しますし、CAPTCHAをトリガーすることもできます:

# pip install selenium

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options

# Configure the browser to launch in headless mode
options = Options()
options.add_argument("--headless")
# Initialize the WebDriver to control Chrome
driver = webdriver.Chrome(service=Service(),options=options)

# Connect to the target page (Amazon Kindle product page)
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")

# Take a screenshot of the entire page
driver.save_screenshot("product-page.png")

# Additional scraping logic...

# Release the driver resources
driver.quit()

正しく実行されれば、スクリプトはこのスクリーンショットを生成する:

アマゾンの商品ページのスクリーンショット

一方、実行に失敗した場合は、次のような結果になる:

アマゾンCAPTCHAページのスクリーンショット

CAPTCHAの出現は予測不可能であるため、チャレンジを一貫してトリガーする信頼性の高い自動化ロジックを開発するのは困難である。その結果、CAPTCHAの研究も難しい。幸いなことに、だからといってCAPTCHAを回避することが不可能というわけではない。

学ぶべき時だ。

アマゾンのCAPTCHAを回避する方法:3つのテクニック

この章では、AmazonのCAPTCHAに取り組むための3つの異なるアプローチを探ります:

  • 隠しブラウザを使う
  • AIの活用
  • CAPTCHAソルバーを使う

その他の方法については、PythonでCAPTCHAを回避する方法のガイドを参照してください。

さあ、飛び込もう。

方法その1:隠しブラウザを使う

アマゾンを見ていて、何度CAPTCHAを見たことがあるだろうか?見たことがあるとしても、ほとんどない可能性が高い。このことは、アマゾンのボット対策やスクレイピング対策のシステムによって、実際の人間のユーザーが大きな影響を受けないことを示唆している。

ほとんどの場合において、予防は緩和よりも優れている。目標は、CAPTCHAを解くことではなく、CAPTCHAが発動されないようにすることだ。 どうやって? ブラウザの自動化ロジックを設定することで、Amazonのウェブページとやりとりする際に、できるだけ実際の人間のユーザーを模倣することができる。

この目的は、自動化に関連するブラウザ設定を変更するステルス・プラグインを備えたブラウザを使用することで、リークを防ぎ、ボット検出を減らすことで達成できる。この目的のためによく使われるツールがいくつかある:

  • SeleniumBase: Selenium のボット検出を回避するステルス機能を内蔵した Python ベースの自動化フレームワーク。
  • Playwright Stealth:ボット対策システムによる検出を回避するためにブラウザの設定を変更するPlaywright Extraプラグイン。
  • Puppeteer Stealth:Puppeteer Extraプラグインは、ブラウザのフィンガープリントを修正して、より人間らしく見せる。
  • chromedriver-not-detected: アンチボット機構による検出を回避するためのパッチを適用したSelenium WebDriver。

このセクションでは、Pythonと完璧に動作するSeleniumBaseに焦点を当てます。しかし、他のオプションも簡単に使うことができます。

SeleniumBaseをインストールするには、以下のコマンドを実行してください:

pip install seleniumbase

上記のSeleniumスクリプトを以下のように修正してSeleniumBaseを使うことができます:

from seleniumbase import Driver  

# Initialize the SeleniumBase driver
driver = Driver(uc=True)  # Enables stealth mode  

# Connect to the target Amazon page  
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")  

# Take a screenshot of the entire page  
driver.save_screenshot("product-page.png")  

# Additional scraping logic...  

# Release the driver resources  
driver.quit()

素晴らしい!アマゾンのCAPTCHAを見つける確率が大幅に減った。

アプローチ2:AIで解決する

アマゾンのCAPTCHAのコレクションを見れば、AIがそれを解く能力がないとは考えにくい:

アマゾンCAPTCHAチャレンジのセット

結局のところ、基本的なテキスト認識の課題は、今日市場に出回っているより高度で複雑なCAPTCHAと比べると、時代遅れのように思える:

現在の高度なCAPTCHA

つまり、ここでのアイデアはこうだ:

  1. CAPTCHAページのスクリーンショットを撮る。
  2. ChatGPTまたは他のAIモデルへの給餌
  3. AIから答えをもらい、それを使ってCAPTCHAを解く。

CAPTCHAのHTMLを調べてみると、テキスト入力フィールドはCSSセレクタの.a-span12で選択できることがわかる。この情報から、以下の方法でAIを使ってアマゾンのCAPTCHAを回避することができる:

import os
import time
import base64
from openai import OpenAI
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys

def encode_image(image_path):
    with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode("utf-8")

def solve_amazon_captcha(driver, timeout=5):
    client = OpenAI(api_key=os.getenv("OPENAI_API_KEY"))
    captcha_elements = driver.find_elements(By.CSS_SELECTOR, "a-span12")

    # If the CAPTCHA has been detected
    if len(captcha_elements) > 0:
        print("CAPTCHA detected!")

        # Take a screenshot of the CAPTCHA page
        driver.maximize_window()
        screenshot_path = "captcha.png"
        driver.save_screenshot(screenshot_path)

        print("Attempting to solve the CAPTCHA...")

        # Feed the screenshot to the AI for CAPTCHA solving
        base64_image = encode_image(screenshot_path)
        response = client.chat.completions.create(
            model="gpt-4o-mini",
            messages=[
                {
                    "role": "user",
                    "content": [
                        {"type": "text", "text": "Extract the text from this CAPTCHA. Return only the text."},
                        {"type": "image_url", "image_url": {"url": f"data:image/png;base64,{base64_image}"}},
                    ],
                }
            ],
        )

        # Get the CAPTCHA text
        captcha_text = response.choices[0].message.content.strip()

        # Select teh CAPTCHA input text and fill it out
        # with the AI generated text
        input_element = captcha_elements[0]
        input_element.send_keys(captcha_text, Keys.ENTER)

        print("CAPTCHA solved!")
        print(f"Wait up to {timeout} seconds for page reload...")

        # Wait up to 5 seconds for a page reload
        time.sleep(timeout)

solve_amazon_captcha()関数を動作させるには、openai 依存関係をインストールしてください:

pip install openai

さらに、OpenAI API キーをOPENAI_API_KEY というグローバル環境変数に設定します。

このように、AIによるCAPTCHA解決機能を呼び出すことができる:

driver = webdriver.Chrome()
driver.get("https://www.amazon.com/Amazon-Kindle/dp/B0CNV9F72P")

solve_amazon_captcha(driver)

driver.quit()

これで、あなたのスクリプトは、人間のユーザーと同じようにCAPTCHAを解決します。

Geminiを使った同様のアプローチについては、GitHubのGenaptchaプロジェクトをチェックしよう。

方法その3:CAPTCHAソルバーを組み込む

最大限の精度を達成し、同時にAIモデルへの呼び出しを最小限に抑えるには(画像によるトークン消費でコストがかかる)、上記の2つのソリューションを組み合わせる必要がある:

  1. アマゾンでCAPTCHAの頻度を減らす
  2. 出現したときだけ解く

しかし、ハイブリッド・アプローチは独自の課題をもたらす:

  1. その他の依存関係:ステルスブラウザ自動化ツール、OpenAIクライアント、適切な環境設定が必要です。
  2. 不安定性:ステルス・プラグインは、ボット開発者とボット対策ソリューションの間の継続的な戦いのために、今日は機能しても明日は効果がないかもしれません。このため、ライブラリを最新の状態に保つことが不可欠です。さらに、LLMモデルは一貫性のない結果を出すことがあり、これが新たな問題を引き起こすこともある。さらに、AIはより複雑なCAPTCHAを解くのが難しい。
  3. 再試行ロジックが必要: CAPTCHAが実際に解決されることを保証するために、AIが失敗した場合の再試行メカニズムを実装する必要があります。
  4. 遅さ:AIは処理に大幅な遅れをもたらす。加えて、CAPTCHAが表示されたり消えたりするのを待つと、自動化/スクレイピング・プロセスがさらに遅くなる。
  5. メンテナンスのオーバーヘッド:選択したすべてのテクノロジーが正しく設定され、長期にわたって機能し続けることを保証する責任があります。

CAPTCHAソルバーを使う方が簡単ではありませんか?もちろん、この機能がお好みのブラウザ自動化ツールによって制御されるヘッドレスブラウザに直接統合されている場合は特にそうです。

これこそが、Scraping Browserが提供する体験です。ウェブスクレイピングに最適化されたクラウドベースのブラウザで、最大限のパフォーマンスを提供し、インフラ管理の必要性を排除するように設計されています。この特別なブラウザは、IPローテーション、自動再試行、高度なボット回避メカニズム、そしてもちろんCAPTCHAを解決する機能を備えています。

他のブラウザのようにSelenium、Playwright、Puppeteerと簡単に統合する方法は、ドキュメントをご覧ください。

アマゾンのCAPTCHAを解読する最良の方法

本記事で取り上げたアマゾンのCAPTCHAテクニックのまとめである:

アプローチ キャプチャをスキップする CAPTCHAの解決 メンテナンス マニュアル・ロジック コスト
隠しブラウザ ✔️ 必須 必須 無料
AIソリューション ✔️ 必須 必須 💲
キャプチャ・ソルバー ✔️ ✔️ このソリューションはクラウド上で実行されるため、その必要はない。 すべての機能がツールに統合されているので、その必要はない。 💲

その長所と短所を以下にまとめる。

方法その1:隠しブラウザを使う

👍プロ

  • フリー&オープンソース

👎 短所:

  • 回避ではなく、CAPTCHA回避
  • パッチが適用されたブラウザに依存しており、不安定である可能性がある。
  • 継続的なメンテナンスが必要

アプローチ2:AIで解決する

👍プロ

  • テキストベースのCAPTCHAを効果的に解決できる

👎 短所:

  • 複雑なCAPTCHAに対して一貫性がなく、効果的な結果が得られない。
  • ページ上でCAPTCHAを検出するのは難しい
  • AIコールにはコストがかかる

方法その3:CAPTCHAソルバーを組み込む

👍プロ

  • 非常に効果的
  • ブラウザ自動化ツールやHTTPクライアントとシームレスに連携
  • リトライ・ロジックやブラウザの設定、その他の手作業は必要ありません。

👎 短所:

  • プレミアム・サービス

結論

このブログポストでは、AmazonがCAPTCHAであなたを止めるかもしれない理由と、スクレイピングスクリプトでそれを処理する方法を学んだ。残念なことに、CAPTCHAの外観は一貫性がないため、研究が難しい。幸いなことに、CAPTCHAを回避したり迂回したりするためのテクニックがいくつかあり、ここでは最も有用な3つのテクニックを紹介する。

上述したように、最も効果的なアプローチは、Bright Dataのスクレイピング・ブラウザを使用することです。このブラウザにはCAPTCHAソルバーが内蔵されており、Selenium、Playwright、Puppeteerとシームレスに統合されています。

さらにシンプルなソリューションをお探しの場合は、他のオプションもご検討ください:

  • Amazon CAPTCHA Solver:Web UnlockerがサポートするAmazon専用のCAPTCHA Solverです。
  • Amazon Scraper: Amazonページ専用に設計されたスクレイピング・エンドポイント。呼び出すだけで、必要なデータを好きなフォーマットでパース済みで取得できる。
  • Amazon Datasets: すぐに使えるデータセット。スクレイピングは不要です。

今すぐBright Dataの無料アカウントを作成し、無料トライアルでスクレイピングとデータセットソリューションをお試しください。

クレジットカードは必要ありません

あなたは下記にもご興味がおありかもしれません

web scraping with NODRIVER blog image
ウェブデータ

2025年のNODRIVERによるウェブスクレイピング

NODRIVERを使ってウェブスクレイピングをマスターしましょう。このガイドでは、セットアップ、主要機能、データ抽出ワークフローを合理化する方法について説明します。
4 分読
web scraping with claude blog image
ウェブデータ

2025年のクロードによるウェブスクレイピング

Pythonを使ってWebスクレイピングを自動化し、構造化データを楽に抽出するClaude AIの使い方を学ぶ。
18 分読
Building AI-Ready Vector Datasets for LLMs blog image
AI

LLMのためのAI対応ベクトルデータセット構築:Bright Data、Google Gemini、Pineconeを使ったガイド

大規模言語モデル(LLM)は、私たちが情報にアクセスし、インテリジェントなアプリケーションを構築する方法を変革しています。LLMの可能性を最大限に引き出すには、特にドメイン固有の知識や独自のデータを使用する場合、高品質で構造化されたベクトルデータセットを作成することが重要です。LLMの性能と精度は、入力データの品質に直接結びついています。準備不足のデータセットは劣悪な結果をもたらす可能性があり、一方、十分にキュレーションされたデータセットはLLMを真のドメイン・エキスパートに変えることができます。 このガイドでは、AIに対応したベクターデータセットを生成するための自動パイプラインの構築方法を順を追って説明する。 課題:LLMのためのデータ収集と準備 LLMは膨大な汎用テキストコーパスで学習されますが、商品関連のクエリへの回答、業界ニュースの分析、顧客フィードバックの解釈など、特定のタスクやドメインに適用すると、不足することがよくあります。LLMを真に役立てるには、ユースケースに合わせた高品質のデータが必要です。 このデータは通常、ウェブ上に分散していたり、複雑なサイト構造の背後に隠されていたり、ボット対策によって保護されていたりする。 当社の自動ワークフローは、データセット作成の最も困難な部分を処理する合理化されたパイプラインでこれを解決します: コア技術の概要 パイプラインを構築する前に、関連するコアテクノロジーと、それぞれがワークフローをどのようにサポートしているかを簡単に見ておこう。 ブライトデータスケーラブルなウェブデータ収集 AIに対応したベクターデータセットを作成するための最初のステップは、関連性のある高品質なソースデータを収集することです。ナレッジベースやドキュメンテーションのような内部システムから得られるものもあるが、大部分は公共のウェブから得られることが多い。 しかし、最近のウェブサイトは、CAPTCHA、IPレート制限、ブラウザフィンガープリントなどの高度なボット対策メカニズムを使用しているため、大規模なスクレイピングは困難である。 Bright Dataは、データ収集の複雑さを抽象化するWeb Unlocker APIでこの課題を解決します。プロキシのローテーション、CAPTCHAの解決、ブラウザのエミュレーションを自動的に処理するため、データへのアクセス方法ではなく、データに集中することができます。 Google Gemini: インテリジェント・コンテンツ・トランスフォーメーション Geminiは、Googleによって開発された強力なマルチモーダルAIモデルのファミリーであり、様々なタイプのコンテンツを理解し処理することに優れている。私たちのデータ抽出パイプラインにおいて、Geminiは3つの重要な機能を果たします: このAIを活用したアプローチは、特に以下のような使用例において、脆弱なCSSセレクタや壊れやすい正規表現に依存する従来の方法よりも大きな利点をもたらす: AIがデータ抽出プロセスにどのような変化をもたらしているかについては、Using AI for Web Scrapingをご覧ください。スクレイピングのワークフローにGeminiを実装するための実践的なチュートリアルをお探しの場合は、包括的なガイドをご覧ください:GeminiによるWebスクレイピングをご覧ください。 文の変形意味埋め込み文の生成 エンベッディングは、高次元空間におけるテキスト(または他のデータタイプ)の密なベクトル表現である。これらのベクトルは意味的な意味を捉え、コサイン類似度やユークリッド距離のようなメトリクスを用いて測定される、類似したテキスト片を近接したベクトルで表現することを可能にする。この特性は、セマンティック検索、クラスタリング、検索拡張生成(RAG)のようなアプリケーションで重要である。 Sentence Transformersライブラリは、高品質の文や段落の埋め込みを生成するための使いやすいインターフェースを提供する。Hugging Face Transformersの上に構築され、意味タスクのために微調整された幅広い事前学習済みモデルをサポートしています。 このエコシステムで最も人気があり、効果的なモデルの1つがオールMiniLM-L6-v2である: より大きなモデルはより微妙なエンベディングを提供するかもしれないが、all-MiniLM-L6-v2は性能、効率、コストの間で非常に優れたバランスを提供する。その384次元ベクトルは ほとんどの実用的なユースケース、特に初期段階の開発やリソースに制約のある環境では、このモデルで十分すぎる。エッジケースにおける精度のわずかな低下は、通常、スピードとスケーラビリティの大幅な向上によって相殺されます。そのため、AIアプリケーションの最初のイテレーションを構築する場合や、控えめなインフラストラクチャでパフォーマンスを最適化する場合は、all-MiniLM-L6-v2を使用することをお勧めします。 Pineconeベクトル埋め込み画像の保存と検索 テキストがベクトル埋め込みデータに変換されると、それを効率的に保存、管理、照会するための専用のデータベースが必要になります。従来のデータベースはこのために設計されていません。ベクトル・データベースは、埋め込みデータの高次元の性質を扱うために特別に設計されており、RAGパイプライン、セマンティック検索、パーソナライゼーション、その他のAI駆動型アプリケーションに不可欠なリアルタイムの類似性検索を可能にします。 Pineconeは、開発者フレンドリーなインターフェイス、低レイテンシの検索パフォーマンス、完全に管理されたインフラストラクチャで知られる人気のベクトルデータベースです。ベクトル検索インフラストラクチャの複雑さを抽象化することで、複雑なベクトルインデックスと検索を効率的に管理します。主なコンポーネントは以下の通りです: Pineconeは2つのデプロイメントアーキテクチャを提供する:ServerlessとPod-Based です。ほとんどのユースケース、特に開始時や動的な負荷に対処する場合は、シンプルさとコスト効率からサーバーレスが推奨されます。 セットアップと前提条件 パイプラインを構築する前に、以下のコンポーネントが適切に設定されていることを確認する。 前提条件 各APIキーの生成方法については、以下のツール固有の設定セクションを参照してください。 必要なライブラリのインストール このプロジェクトのコアとなるPythonライブラリをインストールする: これらのライブラリーは提供している: 環境変数の設定 プロジェクトのルート・ディレクトリに.envファイルを作成し、APIキーを追加する: ブライトデータ設定 Bright DataのWeb Unlockerを使用するには: 実装例と統合コードについては、Web Unlocker GitHub […]
6 分読