Sosyal medya platformları, otomatik veri toplamaya karşı koruma sağlamak için CAPTCHA'ları kullanır. Pazar araştırmacıları, marka gözlemcileri ve akademik araştırmacıların, analiz için halka açık sosyal verileri toplamak amacıyla bu zorlukların üstesinden gelmesi gerekiyor.
Sosyal Platformlardaki CAPTCHA'lar
| platformu | CAPTCHA Türü | Tetiklendiğinde | Bağlam |
|---|---|---|---|
| reCAPTCHA v2 | Giriş yapma, arama, profil erişimi | Hız sınırlaması | |
| reCAPTCHA v2 | Giriş yapın, tekrarlanan aramalar | Güvenlik kontrol noktası | |
| Twitter/X | Cloudflare Turnstile | Giriş, API erişimi | Bot önleme |
| Tiktok | reCAPTCHA v3 | Profil görünümleri, arama | Trafik kalitesi |
| Cloudflare doğrulama akışı | Profil kazıma | Bot tespiti | |
| reCAPTCHA v2 | Giriş yapın, yoğun gezinme | Kötüye kullanımın önlenmesi |
Sosyal Medya Araştırma Kazıyıcı
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 ve Trend Araştırması
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
Marka Adı Takibi
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))
Vekil Önerileri
| platformu | En İyi Vekil | neden |
|---|---|---|
| Mobil (4G) | Mobil cihaz trafiği bekleniyor | |
| Konut | DC IP'lerini agresif bir şekilde işaretler | |
| Twitter/X | Konut | Cloudflare DC'leri engelliyor |
| Tiktok | Mobil (4G) | Mobil erişim için tasarlandı |
| İSS konutu | Masaüstü/corporate IP'leri bekleniyor | |
| Konut rotasyonu | IP başına hız sınırları |
Hız Sınırlama Yönergeleri
| platformu | Güvenli Talep Oranı | Oturum Süresi |
|---|---|---|
| 1 talep / 10 sn | Maksimum 5 dakika sonra dinlenin | |
| 1 talep / 5 sn | Maksimum 10 dakika | |
| Twitter/X | 1 talep / 3 sn | Maksimum 15 dakika |
| Tiktok | 1 talep / 5 sn | Maksimum 5 dakika |
| 1 talep / 10 sn | Maksimum 5 dakika | |
| 1 talep / 2 sn | Maksimum 30 dakika |
Sorun giderme
| Sorun | Sebep | Düzeltme |
|---|---|---|
| CAPTCHA her istek | IP işaretli | IP'yi döndürün, kendi sunucu altyapınız kullanın |
| Hesap kilitlendi | Çok fazla eylem | Sıklığı azaltın, birden fazla hesap kullanın |
| Boş sayfa geri döndü | Girişin arkasındaki içerik | Önce kimlik doğrulaması yapın |
| Cloudflare meydan okuma döngüsü | Tarayıcı test profil yapılandırması uyuşmazlığı | Gizlilik odaklı tarayıcıyı veya Puppeteer gizliliğini kullanın |
| Tarayıcıdan farklı içerik | Konum/cookie farkları | Coğrafi proxy'yi hedef kitleyle eşleştirin |
SSS
Araştırma için sosyal medya kazımasına izin veriliyor mu?
Ticari olmayan araştırmalar için kamuya açık veri toplanması yaygındır. Mahkemeler, kamuya açık verilerin kazınmasının CFAA'yı ihlal etmediğine karar verdi. Ancak Hizmet Şartlarına ve platform ücret sınırlarına her zaman saygı gösterin.
Sosyal platformlar neden beni bu kadar çabuk CAPTCHA yapıyor?
Sosyal platformlar bot tespitine büyük yatırım yapıyor. Tarama modellerini, istek sıklığını ve cihazın parmak izlerini analiz ederler. Kendi sunucu altyapınız'leri ve gerçekçi tarama modellerini kullanın.
Kazımak yerine API kullanmalı mıyım?
Platform ihtiyacınız olan verileri içeren bir API sunuyorsa bunu tercih edin. API'ler daha güvenilir ve Hizmet Şartları uyumludur. Kazıma + CaptchaAI'yi yalnızca resmi API'ler aracılığıyla kullanılamayan veriler için kullanın.
İlgili Kılavuzlar
- CAPTCHA Çözümü için Kendi sunucu altyapınız'ler
- Tarayıcı Oturumu Kalıcılığı
- Gizli Yapılandırılmış Tarayıcı Entegrasyonu
Sosyal medya araştırma verilerini güvenilir bir şekilde toplayın —CaptchaAI anahtarınızı alınve platform CAPTCHA'larını otomatik olarak yönetin.