در حال تایید پاسخ کاربر
با مجموعهها، منظم بمانید
ذخیره و طبقهبندی محتوا براساس اولویتهای شما.
این صفحه نحوه تأیید پاسخ کاربر به چالش reCAPTCHA از باطن برنامه شما را توضیح می دهد.
برای کاربران وب، می توانید نشانه پاسخ کاربر را به یکی از سه روش دریافت کنید:
- پارامتر POST
g-recaptcha-response
زمانی که کاربر فرم را در سایت شما ارسال می کند -
grecaptcha.getResponse(opt_widget_id)
پس از تکمیل چالش reCAPTCHA توسط کاربر - به عنوان یک آرگومان رشته ای برای تابع callback شما اگر
data-callback
در ویژگی تگ g-recaptcha
یا پارامتر callback در متد grecaptcha.render
مشخص شده باشد.
برای کاربران کتابخانه اندروید، میتوانید متد SafetyNetApi.RecaptchaTokenResult.getTokenResult() را فراخوانی کنید تا در صورت موفقیت آمیز بودن وضعیت، کد پاسخ را دریافت کنید.
محدودیت های توکن
هر کد پاسخ کاربر reCAPTCHA به مدت دو دقیقه معتبر است و فقط یک بار برای جلوگیری از حملات مجدد قابل تأیید است. اگر به یک توکن جدید نیاز دارید، میتوانید تأیید reCAPTCHA را دوباره اجرا کنید.
پس از دریافت رمز پاسخ، باید آن را در عرض دو دقیقه با reCAPTCHA با استفاده از API زیر تأیید کنید تا مطمئن شوید که رمز معتبر است.
درخواست API
URL: https://www.google.com/recaptcha/api/siteverify
روش: POST
پارامتر POST | توضیحات |
---|
secret | مورد نیاز. کلید مشترک بین سایت شما و reCAPTCHA. |
response | مورد نیاز. نشانه پاسخ کاربر ارائه شده توسط ادغام سمت مشتری reCAPTCHA در سایت شما. |
remoteip | اختیاری. آدرس IP کاربر. |
پاسخ API
پاسخ یک شی JSON است:
{
"success": true|false,
"challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
"hostname": string, // the hostname of the site where the reCAPTCHA was solved
"error-codes": [...] // optional
}
برای reCAPTCHA Android:
{
"success": true|false,
"challenge_ts": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)
"apk_package_name": string, // the package name of the app where the reCAPTCHA was solved
"error-codes": [...] // optional
}
مرجع کد خطا
کد خطا | توضیحات |
---|
missing-input-secret | پارامتر مخفی وجود ندارد. |
invalid-input-secret | پارامتر مخفی نامعتبر یا بد شکل است. |
missing-input-response | پارامتر پاسخ وجود ندارد. |
invalid-input-response | پارامتر پاسخ نامعتبر یا نادرست است. |
bad-request | درخواست نامعتبر یا نادرست است. |
timeout-or-duplicate | پاسخ دیگر معتبر نیست: یا خیلی قدیمی است یا قبلاً استفاده شده است. |
جز در مواردی که غیر از این ذکر شده باشد،محتوای این صفحه تحت مجوز Creative Commons Attribution 4.0 License است. نمونه کدها نیز دارای مجوز Apache 2.0 License است. برای اطلاع از جزئیات، به خطمشیهای سایت Google Developers مراجعه کنید. جاوا علامت تجاری ثبتشده Oracle و/یا شرکتهای وابسته به آن است.
تاریخ آخرین بهروزرسانی 2025-07-25 بهوقت ساعت هماهنگ جهانی.
[null,null,["تاریخ آخرین بهروزرسانی 2025-07-25 بهوقت ساعت هماهنگ جهانی."],[[["\u003cp\u003eThis page details how to verify if a user successfully completed a reCAPTCHA challenge on your website or Android app.\u003c/p\u003e\n"],["\u003cp\u003eYou'll receive a response token from the reCAPTCHA integration that needs to be verified within two minutes using the reCAPTCHA API.\u003c/p\u003e\n"],["\u003cp\u003eVerification involves sending a POST request to the reCAPTCHA API with the secret key, response token, and optionally, the user's IP address.\u003c/p\u003e\n"],["\u003cp\u003eThe API response is a JSON object indicating success or failure, along with details like timestamp and potential error codes.\u003c/p\u003e\n"],["\u003cp\u003eEach response token is valid for a single use and expires after two minutes to prevent replay attacks.\u003c/p\u003e\n"]]],["To verify a user's reCAPTCHA response, obtain the response token via the `g-recaptcha-response` parameter, `grecaptcha.getResponse()`, or a callback function for web users or the `SafetyNetApi.RecaptchaTokenResult.getTokenResult()` method for Android. Then, within two minutes, send a POST request to `https://www.google.com/recaptcha/api/siteverify` with `secret` (your site's key) and `response` (the user token). The optional `remoteip` can be included. The JSON response indicates success, timestamp, and hostname or `apk_package_name` if Android, and error codes if any.\n"],null,["# Verifying the user's response\n\nThis page explains how to verify a user's response to a reCAPTCHA challenge from your application's\nbackend.\n\nFor web users, you can get the user's response token in one of three ways:\n\n- `g-recaptcha-response` POST parameter when the user submits the form on your site\n- [`grecaptcha.getResponse(opt_widget_id)`](/recaptcha/docs/display#js_api) after the user completes the reCAPTCHA challenge\n- As a string argument to your [callback function](/recaptcha/docs/display#render_param) if `data-callback` is specified in either the `g-recaptcha` tag attribute or the callback parameter in the `grecaptcha.render` method\n\nFor Android library users, you can call the\n[SafetyNetApi.RecaptchaTokenResult.getTokenResult()](https://developers.google.com/android/reference/com/google/android/gms/safetynet/SafetyNetApi.RecaptchaTokenResult.html#getTokenResult())\nmethod to get response token if the status returns successful.\n\nToken Restrictions\n------------------\n\nEach reCAPTCHA user response token is valid for two minutes, and can only be verified *once* to\nprevent replay attacks. If you need a new token, you can re-run the reCAPTCHA verification.\n\nAfter you get the response token, you need to verify it within two minutes with reCAPTCHA using the\nfollowing API to ensure the token is valid.\n\nAPI Request\n-----------\n\nURL: `https://www.google.com/recaptcha/api/siteverify`\n\nMETHOD: `POST`\n\n| POST Parameter | Description |\n|----------------|---------------------------------------------------------------------------------------------------|\n| `secret` | Required. The shared key between your site and reCAPTCHA. |\n| `response` | Required. The user response token provided by the reCAPTCHA client-side integration on your site. |\n| `remoteip` | Optional. The user's IP address. |\n\nAPI Response\n------------\n\nThe response is a JSON object: \n\n {\n \"success\": true|false,\n \"challenge_ts\": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)\n \"hostname\": string, // the hostname of the site where the reCAPTCHA was solved\n \"error-codes\": [...] // optional\n }\n\nFor reCAPTCHA Android: \n\n {\n \"success\": true|false,\n \"challenge_ts\": timestamp, // timestamp of the challenge load (ISO format yyyy-MM-dd'T'HH:mm:ssZZ)\n \"apk_package_name\": string, // the package name of the app where the reCAPTCHA was solved\n \"error-codes\": [...] // optional\n }\n\n### Error code reference\n\n| Error code | Description |\n|--------------------------|---------------------------------------------------------------------------------|\n| `missing-input-secret` | The secret parameter is missing. |\n| `invalid-input-secret` | The secret parameter is invalid or malformed. |\n| `missing-input-response` | The response parameter is missing. |\n| `invalid-input-response` | The response parameter is invalid or malformed. |\n| `bad-request` | The request is invalid or malformed. |\n| `timeout-or-duplicate` | The response is no longer valid: either is too old or has been used previously. |"]]