تستخدم منصات التذاكر اختبارات CAPTCHA لمنع عمليات الفحص والمشتريات الآلية. عند مراقبة توفر تذاكر الأحداث - الحفلات الموسيقية والرياضة والمسرح - ستواجه أداة الكشط الخاصة بك تحديات reCAPTCHA وحماية Cloudflare وتحديد المعدل. يتعامل CaptchaAI مع حل اختبار CAPTCHA حتى تتمكن شاشتك من التحقق من التوفر بشكل موثوق.
يبني هذا الدليل سير عمل لمراقبة التذاكر من خلال حل اختبار CAPTCHA المتكامل.
سير عمل المراقبة
Configure events → Check availability → CAPTCHA?
↓ Yes
Solve via CaptchaAI → Retry
↓ No
Parse availability → Changed?
↓ Yes
Send alert
ما تحتاجه
| المتطلبات | التفاصيل |
|---|---|
| مفتاح CaptchaAI API | captchaai.com |
| بايثون 3.8+ | مع requests |
| الوكيل | يوصى بالوكيل السكني |
pip install requests
مساعد حلال CAPTCHA
import requests
import time
API_KEY = "YOUR_API_KEY"
def solve_captcha(method, params):
"""Generic CaptchaAI solver for any supported method."""
params["key"] = API_KEY
params["json"] = 1
submit = requests.post("https://ocr.captchaai.com/in.php", data=params).json()
if submit.get("status") != 1:
raise RuntimeError(f"Submit error: {submit.get('request')}")
task_id = submit["request"]
initial_wait = 10 if method == "turnstile" else 20
time.sleep(initial_wait)
for _ in range(30):
result = requests.get("https://ocr.captchaai.com/res.php", params={
"key": API_KEY, "action": "get", "id": task_id, "json": 1
}).json()
if result.get("status") == 1:
return result["request"]
if result.get("request") != "CAPCHA_NOT_READY":
raise RuntimeError(f"Solve error: {result['request']}")
time.sleep(5)
raise TimeoutError("Solve timed out")
مراقب التذاكر
from datetime import datetime
import json
class TicketMonitor:
def __init__(self, proxy=None):
self.session = requests.Session()
self.session.headers.update({
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
})
if proxy:
self.session.proxies = {
"http": f"http://{proxy}",
"https": f"http://{proxy}"
}
self.last_status = {}
def check_event(self, event):
"""Check ticket availability for an event, solving CAPTCHAs if needed."""
url = event["url"]
response = self.session.get(url)
# Handle CAPTCHA if detected
if "g-recaptcha" in response.text or "recaptcha" in response.text:
sitekey = self._extract_sitekey(response.text)
if sitekey:
token = solve_captcha("userrecaptcha", {
"method": "userrecaptcha",
"googlekey": sitekey,
"pageurl": url
})
response = self.session.post(url, data={
"g-recaptcha-response": token
})
elif "cf-turnstile" in response.text:
sitekey = self._extract_turnstile_key(response.text)
if sitekey:
token = solve_captcha("turnstile", {
"method": "turnstile",
"sitekey": sitekey,
"pageurl": url
})
response = self.session.post(url, data={
"cf-turnstile-response": token
})
# Parse availability
availability = self._parse_availability(response.text, event)
# Check for changes
event_key = event["name"]
if event_key in self.last_status:
if availability != self.last_status[event_key]:
self._send_alert(event, availability)
self.last_status[event_key] = availability
return availability
def _extract_sitekey(self, html):
if 'data-sitekey="' in html:
start = html.index('data-sitekey="') + 14
end = html.index('"', start)
return html[start:end]
return None
def _extract_turnstile_key(self, html):
if 'data-sitekey="' in html:
start = html.index('data-sitekey="') + 14
end = html.index('"', start)
return html[start:end]
return None
def _parse_availability(self, html, event):
"""Parse ticket availability. Customize per ticketing site."""
available = "sold out" not in html.lower()
return {
"event": event["name"],
"available": available,
"checked_at": datetime.now().isoformat()
}
def _send_alert(self, event, availability):
"""Send availability change notification."""
status = "AVAILABLE" if availability["available"] else "SOLD OUT"
print(f"[ALERT] {event['name']}: {status}")
def monitor_all(self, events):
"""Check all events and return results."""
results = []
for event in events:
try:
result = self.check_event(event)
results.append(result)
print(f"[OK] {event['name']}: {'available' if result['available'] else 'sold out'}")
except Exception as e:
print(f"[ERROR] {event['name']}: {e}")
return results
# Usage
events = [
{
"name": "Concert - Madison Square Garden - Aug 15",
"url": "https://example-tickets.com/event/12345"
},
{
"name": "Basketball Finals - Game 7",
"url": "https://example-tickets.com/event/67890"
}
]
monitor = TicketMonitor(proxy="user:pass@proxy.example.com:8080")
results = monitor.monitor_all(events)
for r in results:
print(json.dumps(r, indent=2))
الناتج المتوقع:
[OK] Concert - Madison Square Garden - Aug 15: available
[OK] Basketball Finals - Game 7: sold out
الجدولة
قم بإجراء عمليات التحقق على فترات منتظمة:
# Check every 15 minutes
*/15 * * * * cd /path/to/project && python ticket_monitor.py >> /var/log/tickets.log 2>&1
استكشاف الأخطاء وإصلاحها
| المشكلة | السبب | الإجراء |
|---|---|---|
| اختبارات CAPTCHA المتكررة عند كل شيك | نفس IP، لا يوجد استمرار للجلسة | استخدم ملفات تعريف الارتباط، وقم بتدوير الوكلاء السكنيين |
| تم حظره بعد عدة عمليات فحص | الحد من المعدل | زيادة فترات التحقق، استخدم دوران الوكيل |
| حالة توفر خاطئة | تم تغيير بنية الصفحة | قم بتحديث طريقة _parse_availability |
| حل اختبار CAPTCHA بطيء | حمولة حلال عالية | تنفيذ منطق إعادة المحاولة مع التراجع |
الأسئلة الشائعة
كم مرة يجب أن أتحقق من توفر التذاكر؟
كل 10 إلى 30 دقيقة للمراقبة العامة. بالنسبة للأحداث ذات الطلب المرتفع، كل 2 إلى 5 دقائق - ولكن توقع المزيد من اختبارات CAPTCHA بترددات أعلى.
ما هي اختبارات CAPTCHA التي تستخدمها مواقع التذاكر؟
صفحات reCAPTCHA v2 وCloudflare Turnstile وCloudflare Challenge الأكثر شيوعًا. قد تستخدم أنظمة الانتظار مثل غرف الانتظار الافتراضية تحديات مخصصة.
هل يمكنني مراقبة منصات التذاكر المتعددة؟
نعم. قم بتخصيص المحلل اللغوي لبنية HTML لكل نظام أساسي وأضف أحداثًا من مواقع مختلفة.
هل أحتاج إلى وكلاء سكنيين؟
نعم. تقوم مواقع التذاكر بحظر عناوين IP لمراكز البيانات بشكل صارم. تعمل الوكلاء السكنيون على تقليل تكرار اختبار CAPTCHA.
كيف أتعامل مع غرف الانتظار/queues؟
غرف الانتظار منفصلة عن اختبارات CAPTCHA. يجب أن تكتشف شاشتك صفحات قائمة الانتظار وتنتظر أو تعيد المحاولة. CaptchaAI يحل اختبار CAPTCHA الذي يظهر بعد قائمة الانتظار.
احصل على مفتاح CaptchaAI API الخاص بك
ابدأ بمراقبة توفر التذاكر علىcaptchaai.com. تعامل مع اختبارات CAPTCHA تلقائيًا في سير عمل مراقبة الأحداث.