בקשת טוקן reCAPTCHA Enterprise באמצעות cURL
צרו משימה עם שם המארח של האתר, הפעולה והפרוקסי שלכם. אם מוחזר pending או solving, בצעו תשאול באמצעות מזהה המשימה שהוחזר. קראו את הטוקן מתוך solution.token רק כשהמצב הוא ready.
בדף הזה
הכנת האתר, המפתח והפרוקסי
- ודאו ש-cURL ו-jq זמינים במעטפת הפקודות שלכם.
- הגדירו את
SOLVETHREE_API_KEYלמפתח ה-API של סביבת העבודה שלכם. הריצו את הפקודות האלה בצד השרת; אל תכללו את המפתח בקוד דפדפן. - הגדירו את
SOLVETHREE_PROXYלכתובת הפרוקסי שבכוונתכם להשתמש בו לפתרון ולשליחת הטוקן. - הגדירו בקונסולה פרופיל אתר reCAPTCHA פעיל עבור סביבת העבודה שלכם. החליפו בדוגמה את
accounts.example.comואתloginבשם המארח ובפעולה שלכם.
שליחת שם מארח ופעולה אינה יוצרת פרופיל אתר. הפרופיל חייב להיות פעיל כבר לפני בקשת הפתרון.
יצירת המשימה עם המתנה מפורשת
# Set SOLVETHREE_API_KEY and SOLVETHREE_PROXY in your environment first.
# Replace the hostname and action with your active site profile.
jq -n \
--arg proxy "$SOLVETHREE_PROXY" \
--arg requestId "login-$(date +%s)-$$" \
'{site:"accounts.example.com", action:"login", proxy:$proxy, requestId:$requestId}' \
| curl --fail-with-body --max-time 30 \
'https://api.solvethree.com/v1/tasks?waitMs=15000' \
-H "Authorization: Bearer $SOLVETHREE_API_KEY" \
-H 'Content-Type: application/json' \
--data-binary @-גוף ה-JSON מספק site, action ו-proxy יחיד. נדרש בדיוק אחד מבין proxy או proxyCandidates. אל תוסיפו type או url; השמטת recaptchaType בוחרת ב-enterprise-v3.
פרמטר השאילתה waitMs=15000 מבקש מבקשת היצירה להמתין עד 15 שניות. מקומו בכתובת ה-URL, לא בגוף ה-JSON. הזמן הקצוב של cURL הוא 30 שניות, כך שנשאר מרווח לתקורת רשת מעבר להמתנה בצד השרת. ייתכן שהמשימה עדיין לא תהיה במצב סופי כשהתגובה תגיע.
קריאת התגובה ותשאול משימות שטרם הסתיימו
בדקו אם אירעה שגיאת HTTP לפני פירוש הגוף כתגובת משימה. שתי הפקודות משתמשות ב---fail-with-body; טפלו בבקשת HTTP שנכשלה בנפרד ממשימה שהמצב שלה הוא failed.
זהו המבנה של תגובה מוכנה. הערכים שלהלן הם ערכי דוגמה, לא טוקן שניתן לשלוח.
{
"id": "example-task",
"status": "ready",
"solution": {
"token": "EXAMPLE_TOKEN",
"userAgent": "EXAMPLE_USER_AGENT",
"secChUa": "EXAMPLE_CLIENT_HINTS"
}
}| מצב | הפעולה הבאה |
|---|---|
| pending או solving | שמרו את ה-id שהוחזר ואחזרו את אותה משימה. עדיין אין פתרון שניתן להשתמש בו; אל תיצרו משימה חלופית. |
| מוכן | הפסיקו את התשאול וקראו את solution.token, solution.userAgent ו-solution.secChUa. |
| failed | הפסיקו את התשאול ובדקו את errorCode ואת error. על פתרונות שנכשלו ניתן החזר כספי. תקנו את הגורם לפני התחלת משימה נוספת. |
אם התגובה אינה במצב סופי, הגדירו בסביבה שלכם את TASK_ID לערך id שהוחזר, ואז אחזרו את המשימה:
curl --fail-with-body --max-time 30 \
"https://api.solvethree.com/v1/tasks/$TASK_ID?waitMs=15000" \
-H "Authorization: Bearer $SOLVETHREE_API_KEY"בקשת GET זו ממתינה עד 15 שניות לתוצאה, עם זמן קצוב של 30 שניות ל-HTTP. ללא waitMs, בקשת GET חוזרת ללא המתנה. חזרו על ה-GET רק כל עוד המצב הוא pending או solving, והגדירו בקוד הקורא מגבלת זמן כוללת כדי שלולאת התשאול לא תוכל לרוץ ללא הגבלה.
אם המשימה נכשלת, השתמשו בפרטי השגיאה שלה במקום להניח שמדובר בבעיית יתרה. למשל, site-unreachable מחייב לבדוק אם ניתן להגיע ליעד, ולא לשלוח שוב באופן עיוור קלט שלא השתנה.
שליחת הטוקן
השתמשו ב־solution.token בבקשה ליישום היעד. ה־id של המשימה משמש רק לאחזור המשימה; הוא אינו אסימון ה־CAPTCHA. המיקום של האסימון תלוי בטופס או ב־API של היעד, ולכן אין פקודה אוניברסלית לשליחה ליעד.
השתמשו ב־solution.userAgent וב־solution.secChUa שהוחזרו, יחד עם הפרוקסי שבו הפתרון הצליח, בעת שליחת האסימון. בדוגמה עם פרוקסי יחיד שלעיל, השתמשו באותו SOLVETHREE_PROXY. אל תשלבו זהות דפדפן או כתובת URL של יעד שאינן קשורות.
ready מציין ש־solvethree יצר פתרון. בדקו בנפרד את תגובת יישום היעד כדי לקבוע אם הוא קיבל את הבקשה שלכם.
שאלות נוספות
האם זה זהה ל־API של siteverify של Google?
לא. siteverify של Google בודק אסימון שכבר קיים ודורש את סוד האימות של בעל האתר. ה־API של solvethree יוצר פתרון באמצעות מפתח ה־API של סביבת העבודה שלכם. אל תכניסו סוד אימות של Google לבקשת המשימה.
מקורות ותיעוד API
הפעלת המשימה הראשונה שלך.
התחילו עם $5 בקרדיט לסביבת העבודה.