Social-Media-Plattformen nutzen CAPTCHAs zum Schutz vor automatisierter Datenerfassung. Marktforscher, Markenbeobachter und akademische Forscher müssen diese Herausforderungen meistern, um öffentliche soziale Daten für die Analyse zu sammeln.
CAPTCHAs auf allen sozialen Plattformen
| Plattform | CAPTCHA-Typ | Wenn ausgelöst | Kontext |
|---|---|---|---|
| reCAPTCHA v2 | Login, Suche, Profilzugriff | Ratenbegrenzung | |
| reCAPTCHA v2 | Login, wiederholte Suche | Sicherheitskontrollpunkt | |
| Twitter/X | Cloudflare Turnstile | Login, API-Zugriff | Bot-Prävention |
| TikTok | reCAPTCHA v3 | Profilansichten, Suche | Verkehrsqualität |
| Cloudflare Challenge | Profilschaben | Bot-Erkennung | |
| reCAPTCHA v2 | Anmelden, intensives Surfen | Missbrauchsprävention |
Social-Media-Recherche-Scraper
import requests
import time
import re
CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"
def solve_captcha(method, sitekey, pageurl, **kwargs):
data = {
"key": CAPTCHAAI_KEY,
"method": method,
"googlekey": sitekey,
"pageurl": pageurl,
"json": 1,
}
data.update(kwargs)
resp = requests.post(f"{CAPTCHAAI_URL}/in.php", data=data)
task_id = resp.json()["request"]
for _ in range(60):
time.sleep(5)
result = requests.get(f"{CAPTCHAAI_URL}/res.php", params={
"key": CAPTCHAAI_KEY, "action": "get",
"id": task_id, "json": 1,
})
r = result.json()
if r["request"] != "CAPCHA_NOT_READY":
return r["request"]
raise TimeoutError("Solve timeout")
class SocialMediaResearcher:
def __init__(self, proxy=None):
self.session = requests.Session()
if proxy:
self.session.proxies = {"http": proxy, "https": proxy}
self.session.headers.update({
"User-Agent": "Mozilla/5.0 (iPhone; CPU iPhone OS 17_5 like Mac OS X) "
"AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.5 "
"Mobile/15E148 Safari/604.1",
"Accept-Language": "en-US,en;q=0.9",
})
def authenticate(self, login_url, credentials, sitekey):
"""Login with CAPTCHA handling."""
# Load login page
self.session.get(login_url)
# Solve CAPTCHA
token = solve_captcha("userrecaptcha", sitekey, login_url)
# Submit login
resp = self.session.post(login_url, data={
**credentials,
"g-recaptcha-response": token,
})
return resp.status_code == 200
def collect_profiles(self, profile_urls):
"""Collect public profile data with CAPTCHA handling."""
profiles = []
for url in profile_urls:
try:
resp = self.session.get(url, timeout=30)
# Handle CAPTCHA if triggered
if self._has_captcha(resp.text):
resp = self._handle_captcha(resp.text, url)
profiles.append({
"url": url,
"data": self._parse_profile(resp.text),
"status": "success",
})
time.sleep(5) # Slow down between profiles
except Exception as e:
profiles.append({
"url": url,
"error": str(e),
"status": "failed",
})
return profiles
def _has_captcha(self, html):
return any(tag in html.lower() for tag in [
'data-sitekey', 'g-recaptcha', 'cf-turnstile',
'challenge-platform', 'captcha',
])
def _handle_captcha(self, html, url):
match = re.search(r'data-sitekey="([^"]+)"', html)
if not match:
return self.session.get(url)
sitekey = match.group(1)
if 'cf-turnstile' in html:
token = solve_captcha("turnstile", sitekey, url)
return self.session.post(url, data={"cf-turnstile-response": token})
else:
token = solve_captcha("userrecaptcha", sitekey, url)
return self.session.post(url, data={"g-recaptcha-response": token})
def _parse_profile(self, html):
from bs4 import BeautifulSoup
soup = BeautifulSoup(html, "html.parser")
return {
"name": self._safe_text(soup, "h1, .profile-name"),
"bio": self._safe_text(soup, ".bio, .profile-bio"),
"followers": self._safe_text(soup, "[data-followers], .followers"),
"posts": self._safe_text(soup, "[data-posts], .posts-count"),
}
def _safe_text(self, soup, selector):
el = soup.select_one(selector)
return el.get_text(strip=True) if el else ""
Hashtag- und Trendforschung
def research_hashtag(hashtag, platform_url, pages=5):
"""Collect posts for a specific hashtag."""
researcher = SocialMediaResearcher(
proxy="http://user:pass@mobile.proxy.com:5000"
)
all_posts = []
for page in range(pages):
url = f"{platform_url}/explore/tags/{hashtag}?page={page}"
resp = researcher.session.get(url, timeout=30)
if researcher._has_captcha(resp.text):
resp = researcher._handle_captcha(resp.text, url)
from bs4 import BeautifulSoup
soup = BeautifulSoup(resp.text, "html.parser")
posts = soup.select(".post-item, article")
for post in posts:
all_posts.append({
"text": post.get_text(strip=True)[:500],
"hashtag": hashtag,
"page": page,
})
time.sleep(5)
return all_posts
Überwachung der Markenerwähnung
import json
from datetime import datetime
class BrandMonitor:
def __init__(self, brand_name, keywords, proxy=None):
self.brand = brand_name
self.keywords = keywords
self.researcher = SocialMediaResearcher(proxy=proxy)
def daily_scan(self, platform_urls):
"""Run daily brand mention scan across platforms."""
report = {
"brand": self.brand,
"date": datetime.now().isoformat(),
"platforms": {},
}
for name, url in platform_urls.items():
mentions = []
for keyword in self.keywords:
search_url = f"{url}/search?q={keyword}"
try:
resp = self.researcher.session.get(search_url, timeout=30)
if self.researcher._has_captcha(resp.text):
resp = self.researcher._handle_captcha(
resp.text, search_url,
)
from bs4 import BeautifulSoup
soup = BeautifulSoup(resp.text, "html.parser")
results = soup.select(".search-result, .post")
mentions.append({
"keyword": keyword,
"count": len(results),
})
time.sleep(5)
except Exception as e:
mentions.append({
"keyword": keyword,
"error": str(e),
})
report["platforms"][name] = mentions
return report
# Usage
monitor = BrandMonitor(
brand_name="CaptchaAI",
keywords=["captchaai", "captcha ai", "captcha solver"],
proxy="http://user:pass@mobile.proxy.com:5000",
)
report = monitor.daily_scan({
"twitter": "https://twitter-alternative.example.com",
"reddit": "https://www.reddit.com",
})
print(json.dumps(report, indent=2))
Netzwerkempfehlungen
| Plattform | Bester Proxy | Warum |
|---|---|---|
| Mobil (4G) | Erwartet Datenverkehr über Mobilgeräte | |
| Wohnen | Markiert DC-IPs aggressiv | |
| Twitter/X | Wohnen | Cloudflare blockiert DCs |
| TikTok | Mobil (4G) | Entwickelt für den mobilen Zugriff |
| ISP-Wohngebiet | Erwartet Desktop/corporate-IPs | |
| Wohnrotation | Ratenlimits pro IP |
Richtlinien zur Ratenbegrenzung
| Plattform | Sichere Anforderungsrate | Sitzungsdauer |
|---|---|---|
| 1 Anforderung / 10 Sek | Maximal 5 Minuten, dann ruhen | |
| 1 Anforderung / 5 Sek | Maximal 10 Min | |
| Twitter/X | 1 Anforderung / 3 Sek | Maximal 15 Min |
| TikTok | 1 Anforderung / 5 Sek | Maximal 5 Min |
| 1 Anforderung / 10 Sek | Maximal 5 Min | |
| 1 Anforderung / 2 Sek | Maximal 30 Min |
Fehlerbehebung
| Problem | Ursache | Lösung |
|---|---|---|
| CAPTCHA für jede Anfrage | IP markiert | IP rotieren, mobilen Proxy verwenden |
| Konto gesperrt | Zu viele Aktionen | Reduzieren Sie die Häufigkeit, verwenden Sie mehrere Konten |
| Es wurde eine leere Seite zurückgegeben | Inhalt hinter der Anmeldung | Authentifizieren Sie sich zuerst |
| Cloudflare-Herausforderungsschleife | Nicht übereinstimmender Browser-Signalprofil | Verwenden Sie einen datenschutzorientierten Browser oder konfiguriertes Puppeteer-Profil |
| Anderer Inhalt als Browser | Location/cookie Unterschiede | Passen Sie den Geo-Proxy an die Zielgruppe an |
FAQ
Ist Social-Media-Scraping zu Forschungszwecken erlaubt?
Die öffentliche Datenerhebung für nichtkommerzielle Forschungszwecke ist üblich. Gerichte haben entschieden, dass das Scraping öffentlicher Daten keinen Verstoß gegen die CFAA darstellt. Beachten Sie jedoch immer die Nutzungsbedingungen und die Tarifbeschränkungen der Plattform.
Warum CAPTCHA ich auf sozialen Plattformen so schnell?
Soziale Plattformen investieren stark in die Bot-Erkennung. Sie analysieren Browsing-Muster, Anforderungshäufigkeit und Geräte-Browser-Signalprofile. Verwenden Sie mobile Proxys und realistische Browsing-Muster.
Sollte ich eine API anstelle von Scraping verwenden?
Wenn die Plattform eine API mit den von Ihnen benötigten Daten bietet, bevorzugen Sie diese. APIs sind zuverlässiger und ToS-konform. Verwenden Sie Scraping + CaptchaAI nur für Daten, die nicht über offizielle APIs verfügbar sind.
Verwandte Leitfäden
- Mobile Proxys zur CAPTCHA-Lösung
- Persistenz der Browsersitzung
- Browser-Profil-Isolation + CaptchaAI
Erfassen Sie zuverlässig Social-Media-Forschungsdaten – Holen Sie sich Ihren CaptchaAI-Schlüsselund Plattform-CAPTCHAs automatisch verarbeiten.