Platform media sosial menggunakan CAPTCHA untuk melindungi terhadap pengumpulan data otomatis. Peneliti pasar, pemantau merek, dan peneliti akademis perlu mengatasi tantangan ini untuk mengumpulkan data sosial publik untuk dianalisis.
CAPTCHA di Seluruh Platform Sosial
| Peron | Jenis CAPTCHA | Saat Dipicu | Konteks |
|---|---|---|---|
| reCAPTCHA v2 | Login, pencarian, akses profil | Pembatasan tarif | |
| reCAPTCHA v2 | Masuk, pencarian berulang | Pos pemeriksaan keamanan | |
| Twitter/X | Cloudflare Turnstile | Masuk, akses API | Pencegahan bot |
| TikTok | reCAPTCHA v3 | Tampilan profil, pencarian | Kualitas lalu lintas |
| Cloudflare Challenge | Scraping profil | Deteksi bot | |
| reCAPTCHA v2 | Masuk, penjelajahan berat | Pencegahan penyalahgunaan |
Scraper Riset Media Sosial
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 ""
Riset Hashtag dan Tren
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
Pemantauan Penyebutan Merek
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))
Rekomendasi Proxy
| Peron | Proxy Terbaik | Mengapa |
|---|---|---|
| Seluler (4G) | Mengharapkan lalu lintas perangkat seluler | |
| Perumahan | Menandai IP DC secara agresif | |
| Twitter/X | Perumahan | Cloudflare memblokir DC |
| TikTok | Seluler (4G) | Dirancang untuk akses seluler |
| perumahan ISP | Mengharapkan IP desktop/corporate | |
| Rotasi perumahan | Batasan tarif per IP |
Pedoman Pembatasan Tarif
| Peron | Tingkat Request Aman | Durasi Sesi |
|---|---|---|
| 1 request / 10 detik | Maks 5 menit lalu istirahat | |
| 1 request / 5 detik | Maks 10 menit | |
| Twitter/X | 1 request / 3 detik | Maks 15 menit |
| TikTok | 1 request / 5 detik | Maks 5 menit |
| 1 request / 10 detik | Maks 5 menit | |
| 1 request / 2 detik | Maks 30 menit |
Pemecahan Masalah
| Masalah | Penyebab | Solusi |
|---|---|---|
| CAPTCHA setiap request | IP ditandai | Putar IP, gunakan proxy seluler |
| Akun terkunci | Terlalu banyak tindakan | Kurangi frecookiensi, gunakan banyak akun |
| Halaman kosong dikembalikan | Konten di balik login | Otentikasi terlebih dahulu |
| Lingkaran tantangan Cloudflare | Ketidakcocokan sinyal browser browser | Gunakan browser yang berfokus pada privasi atau mode standar Dalang |
| Konten berbeda dari browser | Perbedaan Lokasi/cookie | Cocokkan proxy geografis dengan audiens target |
Pertanyaan Umum
Apakah media sosial yang digunakan untuk penelitian diperbolehkan?
Pengumpulan data publik untuk penelitian non-komersial adalah hal biasa. Pengadilan telah memutuskan bahwa menghapus data publik tidak melanggar CFAA. Namun, selalu hormati Ketentuan Layanan dan batasan tarif platform.
Mengapa platform sosial CAPTCHA saya begitu cepat?
Platform sosial berinvestasi besar dalam deteksi bot. Mereka menganalisis pola penelusuran, frecookiensi request, dan sinyal browser perangkat. Gunakan proxy seluler dan pola penjelajahan yang realistis.
Haruskah saya menggunakan API daripada menggores?
Jika platform menawarkan API dengan data yang Anda butuhkan, pilihlah itu. API lebih andal dan sesuai ToS. Gunakan scraping + CaptchaAI hanya untuk data yang tidak tersedia melalui API resmi.
Panduan Terkait
- Proxy Seluler untuk Pemecahan CAPTCHA
- Kegigihan Sesi Browser
- Integrasi Browser yang Dikonfigurasi Secara Tersembunyi
Kumpulkan data penelitian media sosial dengan andal –dapatkan kunci CaptchaAI Andadan menangani CAPTCHA platform secara otomatis.