Amazon verwendet Bild-CAPTCHAs, um den automatisierten Zugriff zu blockieren. Wenn Sie den Anti-Bot-Schwellenwert erreichen, wird eine Seite angezeigt, auf der Sie aufgefordert werden, Zeichen aus einem verzerrten Bild einzugeben. Die OCR-Lösung von CaptchaAI verarbeitet diese automatisch.
So funktioniert das CAPTCHA von Amazon
Amazon löst CAPTCHAs basierend auf:
| Signal | Beschreibung |
|---|---|
| Volumen anfordern | Zu viele Anfragen von einer IP in einem kurzen Fenster |
| Fehlende Kekse | Keine Amazon-Sitzungscookies |
| Verdächtige Header | Bot-ähnlicher User-Agent oder fehlende Header |
| IP-Reputation | Bekannte Rechenzentrums- oder Proxy-IP-Bereiche |
Bei Auslösung leitet Amazon zu einer Seite mit einem verzerrten Textbild und einem Eingabefeld weiter. Sie müssen das Bild lösen und den Text einreichen, um fortzufahren.
Anforderungen
| Anforderung | Einzelheiten |
|---|---|
| CaptchaAI API-Schlüssel | Auscaptchaai.com |
| Python 3.7+ | Mit Wünschen und schöner Suppe4 |
| Wohn-Proxys | Empfohlen für anhaltendes Schaben |
Lösen des Bild-CAPTCHA von Amazon
Schritt 1: Ermitteln Sie die CAPTCHA-Seite
import requests
from bs4 import BeautifulSoup
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept-Language": "en-US,en;q=0.9",
"Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"
})
def is_captcha_page(html):
return "Type the characters you see in this image" in html or \
"captcha" in html.lower()
url = "https://www.amazon.com/dp/B0EXAMPLE"
resp = session.get(url)
if is_captcha_page(resp.text):
print("CAPTCHA detected!")
else:
print("Page loaded successfully")
Schritt 2: Extrahieren und lösen Sie das Bild
import base64
API_KEY = "YOUR_API_KEY"
def solve_amazon_captcha(session, captcha_page_html, captcha_page_url):
soup = BeautifulSoup(captcha_page_html, "html.parser")
# Find the CAPTCHA image
img_tag = soup.find("img", src=lambda s: s and "captcha" in s.lower())
if not img_tag:
raise Exception("CAPTCHA image not found")
img_url = img_tag["src"]
# Download the image
img_resp = session.get(img_url)
img_base64 = base64.b64encode(img_resp.content).decode()
# Submit to CaptchaAI
submit_resp = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY,
"method": "base64",
"body": img_base64
})
task_id = submit_resp.text.split("|")[1]
# Poll for result
import time
for _ in range(30):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id
})
if result.text == "CAPCHA_NOT_READY":
continue
if result.text.startswith("OK|"):
return result.text.split("|")[1]
raise Exception(f"Solve error: {result.text}")
raise TimeoutError("Solve timed out")
Schritt 3: Senden Sie die Lösung
def submit_captcha_solution(session, captcha_page_html, solution, captcha_page_url):
soup = BeautifulSoup(captcha_page_html, "html.parser")
form = soup.find("form")
# Build form data
form_data = {}
for inp in form.find_all("input"):
name = inp.get("name")
if name:
form_data[name] = inp.get("value", "")
# Set the CAPTCHA answer
form_data["field-keywords"] = solution
# Submit
action = form.get("action", captcha_page_url)
if action.startswith("/"):
from urllib.parse import urljoin
action = urljoin(captcha_page_url, action)
resp = session.post(action, data=form_data)
return resp
Vollständiges Arbeitsbeispiel
import requests
import base64
import time
from bs4 import BeautifulSoup
API_KEY = "YOUR_API_KEY"
def scrape_amazon_product(url):
session = requests.Session()
session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
"Accept-Language": "en-US,en;q=0.9"
})
resp = session.get(url)
# Handle CAPTCHA if present
if "captcha" in resp.text.lower():
soup = BeautifulSoup(resp.text, "html.parser")
img = soup.find("img", src=lambda s: s and "captcha" in s.lower())
if img:
# Download and solve
img_data = session.get(img["src"]).content
img_b64 = base64.b64encode(img_data).decode()
submit = requests.get("https://ocr.captchaai.com/in.php", params={
"key": API_KEY, "method": "base64", "body": img_b64
})
task_id = submit.text.split("|")[1]
for _ in range(30):
time.sleep(5)
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id
})
if result.text == "CAPCHA_NOT_READY":
continue
if result.text.startswith("OK|"):
solution = result.text.split("|")[1]
break
# Submit solution
form = soup.find("form")
form_data = {inp.get("name"): inp.get("value", "")
for inp in form.find_all("input") if inp.get("name")}
form_data["field-keywords"] = solution
action = form.get("action", url)
resp = session.post(action, data=form_data)
# Parse product data
soup = BeautifulSoup(resp.text, "html.parser")
title = soup.find("span", {"id": "productTitle"})
price = soup.find("span", class_="a-price-whole")
return {
"title": title.text.strip() if title else None,
"price": price.text.strip() if price else None
}
product = scrape_amazon_product("https://www.amazon.com/dp/B0EXAMPLE")
print(product)
Best Practices für Amazon Scraping
- Verwenden Sie private Proxys – Amazon blockiert IPs von Rechenzentren aggressiv
- Benutzeragenten rotieren – Verwenden Sie einen Pool realistischer Browserzeichenfolgen
- Sitzungen beibehalten – Cookies über alle Anfragen hinweg beibehalten
- Verzögerungen hinzufügen – 3–10 Sekunden zwischen Anfragen
- Accept-Language festlegen – Immer Gebietsschema-Header einschließen
- Keine eingeloggten Seiten durchsuchen – Produktseiten sind ohne Anmeldung zugänglich
Fehlerbehebung
| Problem | Beheben |
|---|---|
| CAPTCHA bei jeder Anfrage | Verwenden Sie Wohn-Proxys. Verlangsamen Sie die Anforderungsrate |
| CAPTCHA-Lösung abgelehnt | Überprüfen Sie, ob das Bild korrekt heruntergeladen wurde. Versuchen Sie es erneut |
| Schleifen umleiten | Überprüfen Sie den Umgang mit Cookies. Verwenden Sie allow_redirects=True |
| Leere Produktdaten | Amazon bietet möglicherweise unterschiedliche Layouts an. Überprüfen Sie die Selektoren |
FAQ
Verwendet Amazon reCAPTCHA?
Amazon verwendet hauptsächlich sein eigenes bildbasiertes CAPTCHA (verzerrter Text). CaptchaAI löst diese mithilfe des Endpunkts method=base64 für die Lösung von image/OCR.
Wie viele Anfragen dauert es, bis Amazon ein CAPTCHA anzeigt?
Es variiert. Mit guten Proxys und realistischen Headern können Sie Hunderte von Seiten durchsuchen. Ohne Proxys können CAPTCHAs nach 10–20 Anfragen erscheinen.
Ist das Scrapen von Amazon legal?
Das Scrapen öffentlich verfügbarer Produktdaten ist im Allgemeinen legal, prüfen Sie jedoch die Nutzungsbedingungen von Amazon und die in Ihrem Land geltenden Gesetze.
Verwandte Leitfäden
- Erfassung von Suchergebnissen mit CAPTCHA-Verwaltung
- Proxy-Rotation für CAPTCHA-Scraping
- Bild-CAPTCHA-Lösung mithilfe der API
Diskussionen (0)
Beteiligen Sie sich an der Unterhaltung
Melden Sie sich an, um Ihre Meinung zu teilen.
AnmeldenNoch keine Kommentare.