CAPSOLVER
ブログ
スクレイピングでCAPTCHAを回避するにはどうすればいいですか?

スクレイピングでCAPTCHAを回避するにはどうすればいいですか

Logo of CapSolver

Lucas Mitchell

Automation Engineer

25-Feb-2025

ウェブスクレイピングを試みたことがあるなら、自動化されたリクエストをブロックする「あなたが人間であることを証明してください」という迷惑なCAPTCHAテストに遭遇したことがあるでしょう。このガイドでは、CAPTCHAの中断を最小限に抑えるための実践的な戦略を共有し、CAPTCHAが表示されたときの対処方法を示します。始めましょう!

なぜウェブスクレイピング中にCAPTCHAが表示されるのか?🤖

CAPTCHAはボットをブロックするように設計されているため、スクレイパーは次の場合にフラグが立てられる可能性があります。

  • 短時間に大量のリクエストを送信する場合。
  • リクエストに現実的なブラウザヘッダーまたはユーザーエージェント文字列がない場合。
  • ウェブサイトが疑わしいIPパターン(例:同じIPからの繰り返しリクエスト)を検出する場合。

プロのヒント: まず、人間の行動を模倣します。リクエストを遅くし、ユーザーエージェントをローテーションし、プロキシを使用します。しかし、それでもCAPTCHAが表示される場合は、より堅牢なソリューションが必要です。


CAPTCHAソルバーを使用してCAPTCHAを自動的に解決する方法

回避策が不十分な場合は、Capsolverなどのサービスを使用してCAPTCHAの解決を自動化できます。その仕組みを説明します。

例:Pythonを使用したreCAPTCHA v2の解決

python Copy
# pip install requests
import requests
import time

api_key = "YOUR_API_KEY"  # Capsolverキーに置き換えます
site_key = ""  # ターゲットサイトから取得
site_url = ""  # ターゲットURL

def solve_captcha():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": "ReCaptchaV2TaskProxyLess",
            "websiteKey": site_key,
            "websiteURL": site_url
        }
    }
    response = requests.post("https://api.capsolver.com/createTask", json=payload)
    task_id = response.json().get("taskId")
    
    # 結果を取得
    while True:
        time.sleep(3)
        result = requests.post("https://api.capsolver.com/getTaskResult", json={"clientKey": api_key, "taskId": task_id})
        status = result.json().get("status")
        if status == "ready":
            return result.json()["solution"]["gRecaptchaResponse"]
        elif status == "failed":
            print("CAPTCHAの解決に失敗しました")
            return None

captcha_token = solve_captcha()
print(f"解決されたCAPTCHAトークン:{captcha_token}")

仕組み:

  1. CapsolverのAPIは、ターゲットサイトでCAPTCHAを解決するタスクを作成します。
  2. CAPTCHAをバイパスするためにスクレイパーに挿入できるトークンを返します。

ウェブスクレイピング中にCAPTCHAを完全に解決できないことが繰り返し発生して苦労していませんか?

最高のCAPTCHAソリューションのためのあなたのボーナスコードを請求してください - CapSolver: CAPTCHA。それを引き換えると、各チャージ後に追加で5%のボーナスが得られ、無制限になります。

CAPTCHAなしでのスクレイピング:より簡単な例

すべてのサイトがCAPTCHAを使用しているわけではありません。CAPTCHAを使用していないサンドボックスであるbooks.toscrape.comをスクレイピングしてみましょう。

python Copy
import requests
from bs4 import BeautifulSoup

url = "http://books.toscrape.com/"
response = requests.get(url)
soup = BeautifulSoup(response.text, "html.parser")

# 書籍のタイトルと価格を抽出
for book in soup.select("article.product_pod"):
    title = book.h3.a["title"]
    price = book.select(".price_color")[0].get_text()
    print(f"タイトル:{title}、価格:{price}")

仕組み:
このサイトにはボット対策がありませんが、スクレイピングする前に常にウェブサイトのrobots.txtを確認してください


CAPTCHAの種類とパラメーターの特定🔍

CAPTCHAを解決する前に、その種類(例:reCAPTCHA v2、hCaptcha)を知る必要があります。CapsolverのCAPTCHA識別ガイドなどのツールを使用して、次のことを行います。

  1. CAPTCHAプロバイダーを検出します。
  2. sitekeypageurlなどの必要なパラメーターを見つけます。

reCAPTCHA v2のパラメーターの例:

  • websiteKey:"6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
  • websiteURL:ターゲットページのURL。

CAPTCHAを完全に回避するためのベストプラクティス

  1. 速度を落とす: time.sleep()を使用して、リクエスト間の遅延を追加します。
  2. プロキシをローテーションする: Nst Proxyなどのサービスを使用して、IPブロックを回避します。
  3. 現実的なヘッダーを使用する: ブラウザのUser-AgentAccept-Languageを模倣します。

FAQ:スクレイピング中のCAPTCHAの処理

1. CAPTCHAソルバーの仕組みは?

AIと人間の作業者の組み合わせを使用してCAPTCHAを解決し、自動化のためのトークンを返します。

2. すべてのCAPTCHAを自動化できますか?

一般的なタイプ(reCAPTCHA、hCaptcha)のほとんどは解決できますが、高度なタイプはより高度な方法が必要です。

4. CAPTCHAを回避する最も簡単な方法は?

  • PuppeteerまたはPlaywrightなどのヘッドレスブラウザを使用して、人間の操作をシミュレートする
  • モバイルプロキシを使用する
  • 最新のユーザーエージェントバージョンを使用する
  • TLSクライアントを使用する
  • 正しいヘッダー/ユーザーエージェントバージョンのヘッダー順序を使用する

まとめ

CAPTCHAは障害ですが、行き止まりではありません。Capsolverなどのツールとスマートなスクレイピング方法を組み合わせることで、中断を最小限に抑えましょう。スクレイピングを楽しんでください!🚀

コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。

もっと見る