שליחת טוקן reCAPTCHA באמצעות HTTPX ב-Python
השתמשו ב-solution.token, בפרוקסי שהצליח בפתרון ובזהות הדפדפן שהוחזרה בעת שליחת POST ליעד. שמרו את עוגיות היישום בלקוח HTTPX אחד; טוקן תקף לא מחליף את דרישות הסשן או ה-CSRF של היישום.
בדף הזה
שלחו את הטוקן המוכן דרך הפרוקסי שהצליח
התקינו את HTTPX באמצעות pip install httpx. הדוגמה משתמשת גם ב-SDK הרשמי של Python; אם הוא לא מותקן, עיינו בהגדרת ה-SDK של Python.
הדוגמה כוללת את קריאת הפתרון כדי להראות מהיכן מגיעה התוצאה. אם כבר יש לכם תוצאת SDK בסטטוס ready, השתמשו בה שוב בתור result לצד ה-request המקורי. אל תיצרו משימה נוספת רק כדי לשלוח את הטוקן שלה.
- הגדירו את
SOLVETHREE_API_KEYלמפתח ה-API של סביבת העבודה שלכם ואתSOLVETHREE_PROXYלכתובת ה-URL של הפרוקסי. שמרו את מפתח ה-API בשרת. - החליפו את
accounts.example.com, את הפעולהloginואת כתובת ה-URL לשליחה בערכים של היעד המיועד. לשם המארח נדרש פרופיל אתר פעיל בסביבת העבודה שלכם; ראו הגדרת פרופיל אתר. - התאימו את שדות הטופס לבקשה האמיתית של היישום. הדוגמה שולחת רק את שדה ה-CAPTCHA, ולא טופס כניסה מלא.
# pip install httpx and the official solvethree SDK wheel.
import os
import httpx
from solvethree import Solvethree, successful_proxy
request = {"site": "accounts.example.com", "action": "login", "proxy": os.environ["SOLVETHREE_PROXY"]}
result = Solvethree(os.environ["SOLVETHREE_API_KEY"]).solve(request, timeout=180)
solution = result["solution"]
proxy = successful_proxy(request, result)
if proxy is None:
raise RuntimeError("No valid successful proxy")
with httpx.Client(proxy=proxy, timeout=30, follow_redirects=False, trust_env=False) as target:
# Use this client's cookie jar for any required application session first.
response = target.post("https://accounts.example.com/login",
data={"g-recaptcha-response": solution["token"]},
headers={"User-Agent": solution["userAgent"], "sec-ch-ua": solution["secChUa"]})
print("Application HTTP status:", response.status_code)
# Check the application's actual response and required CSRF/session fields.successful_proxy(request, result) בוחר את הפרוקסי לשימוש חוזר בשליחה. השאירו את הבדיקה שעוצרת את השליחה אם הוא לא מחזיר פרוקסי תקף. השתמשו בפרמטר העדכני של HTTPX בצורת יחיד, proxy=, ולא ב-proxies=. ההגדרה trust_env=False מונעת מהגדרות פרוקסי במשתני הסביבה לשנות את הנתיב שנבחר במפורש.
שמרו יחד את העוגיות, זהות הדפדפן ושדות הטופס
אם היישום דורש בקשה ראשונית לדף כדי ליצור סשן או לקבל ערך CSRF, בצעו אותה באותו לקוח HTTPX לפני ה-POST. מאגר העוגיות שלו שומר עוגיות בין בקשות. לקוח נפרד לא יקבל את הסשן הזה אוטומטית.
השתמשו ב-userAgent וב-secChUa שהוחזרו גם בבקשות המקדימות האלה, ולא בזהות דפדפן לא תואמת. הדוגמה מספקת אותם בבקשת ה-POST בתור User-Agent ו-sec-ch-ua. הקפידו על עקביות בכותרות האלה ובפרוקסי שהצליח בעת שליחת הפתרון ליעד המיועד.
data= שולח נתוני טופס. כאן, g-recaptcha-response מקבל את solution.token; אסור להעביר אליו את מזהה המשימה או את מילון הפתרון כולו. התאימו את שם השדה לבקשה האמיתית של היעד, וכללו באותה שליחה את כל פרטי ההזדהות, השדות המוסתרים וערך ה-CSRF הנדרשים.
בדקו הפניות לפני שתחשיבו את השליחה למוצלחת
follow_redirects=False משאיר את תגובת היישום הראשונה גלויה. אם היא מפנה לכתובת אחרת, בדקו את הסטטוס ואת היעד שלה לפני שתמשיכו במפורש לשלב הבא הצפוי ביישום באמצעות אותו לקוח. אל תשלחו שוב את הטוקן אוטומטית לכתובת URL אחרת.
סטטוס ה-HTTP שמודפס הוא רק נקודת התחלה. בדקו את גוף התגובה, את יעד ההפניה או את מצב היישום שהתקבל כדי לקבוע אם היעד קיבל את הבקשה. תגובת 200 או הפניה עשויות לייצג הצלחה או תהליך שגיאה; הסטטוס ready של solvethree מציין שנוצר פתרון, לא שהיעד קיבל אותו.
מקורות ותיעוד API
הפעלת המשימה הראשונה שלך.
התחילו עם $5 בקרדיט לסביבת העבודה.