منوی مستندات

RecaptchaV3TaskProxyless: Recaptcha v3 گوگل را حل کن

این نوع شیء وظیفه برای حل کردن Google Recaptcha V3 در کامپیوتر کارگر لازم است. این وظیفه توسط سرویس ما با استفاده از سرورهای پروکسی خودمان و/یا آدرس‌های IP کارگران اجرا خواهد شد.

لطفاً توجه کنید که تفاوتی بین Recaptcha V2 نامرئی و Recaptcha V3 وجود دارد. ظاهر آنها شبیه به هم است و شاید گمراه‌کننده باشد. یک راه سریع برای تعیین نوع صحیح ریکپچا این‌گونه است: سعی کنید آن را با API ما به‌عنوان V2 نامرئی و V3 حل کنید. در یکی از تلاش‌ها به یک خطا خواهید رسید و در تلاش دیگر به خطایی نمی‌رسید

ما کارگرانمان را از نظر "نمره" تست می‌کنیم و آنها را در سه گروه (صف) قرار می‌دهیم: 0.3،
0.7
و 0.9 هرکدام از آنها ممکن است به دلیل تعداد کارگران بیکار، قیمت‌گذاری متفاوتی داشته باشند. با انتقال خصوصیت minScore شما صفی که وظیفه وارد آن خواهد شد را تعیین می‌کنید. اکثر کارگران در دسترس نمره 0.3 دارند و کمترین تعداد از بین آنها نمره 0.9 دارند.

اطلاعات بیشتر درباره Recaptcha V3 را می‌توان در این بخش سؤالات پرتکرار یافت.

یک مثال از Recaptcha v3 . معمولاً یک نشان لوگو وجود دارد که در گوشه پایین راست صفحه قرار دارد. می‌توان به‌سادگی آن را با جاوا اسکریپت حذف کرد.

شیء وظیفه

خصوصیت نوع موردنیاز هدف
type رشته بله RecaptchaV3TaskProxyless
websiteURL رشته بله آدرس صفحه وب هدف. می‌تواند در هرجایی در وب‌سایت حتی بخش اعضا قرار گرفته باشد. کارگران ما به آنجا نمی‌روند بلکه در عوض بازدید را شبیه‌سازی می‌کنند.
websiteKey رشته بله کلید وب‌سایت ریکپچا. در این مقاله می‌آموزید که چطور آن را پیدا کنید.
minScore اعشاری(دابل) بله کارگر با نمره موردنیاز را فیلتر می‌کند. می‌تواند یکی از مقدارهای زیر را بگیرد:
0.3
0.7
0.9
pageAction رشته خیر
مقدار "action" ریکپچا. مالک وب‌سایت از طریق این پارامتر تعریف می‌کند که کاربر چه‌کاری در صفحه انجام می‌دهد.
مثال::

grecaptcha.execute('site_key', {action:'login_test'})
isEnterprise بولی خیر اگر نیاز دارید که این V3 با Enterprise API حل شود، این پرچم را برابر با "true" در نظر بگیرید. مقدار پیش‌فرض "false" است و ریکپچا با API غیر Enterprise حل می‌شود. می‌توان آن را با یک فراخوان جاوا اسکریپت مثل آنچه در مثال زیر می‌بینید تعیین کرد:

grecaptcha.enterprise.execute('site_key', {..})
apiDomain رشته خیر از این پارامتر برای ارسال نام دامنه ای که اسکریپت Recaptcha باید از آن استفاده شود، استفاده کنید. می تواند تنها یکی از دو مقدار را داشته باشد: "www.google.com" یا "www.recaptcha.net". از این پارامتر استفاده نکنید مگر اینکه متوجه شوید که چه کاری انجام می دهید.

نمونه درخواست

CURL
          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"RecaptchaV3TaskProxyless",
            "websiteURL":"http://mywebsite.com/recaptcha/test.php",
            "websiteKey":"6Lc_aCMTAAAAABx7u2N0D1XnVbI_v6ZdbM6rYf16",
            "minScore": 0.3,
            "pageAction": "myverify",
            "isEnterprise": false
        }
}' https://api.anti-captcha.com/createTask
        
PHP
          <?php

//git clone git@github.com:AdminAnticaptcha/anticaptcha-php.git

include("anticaptcha.php");
include("recaptchaV3.php");

$api = new RecaptchaV3();
$api->setVerboseMode(true);

//your anti-captcha.com account key
$api->setKey("YOUR_API_KEY_HERE");

//target website address
$api->setWebsiteURL("http://makeawebsitehub.com/recaptcha/test.php");

//recaptcha key from target website
$api->setWebsiteKey("6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ");

//parameters for V3
//score you would like to have
$api->setMinScore(0.9);
//optional page action
$api->setPageAction("some_action");

//create task in API
if (!$api->createTask()) {
    $api->debout("API v2 send failed - ".$api->getErrorMessage(), "red");
    return false;
}

$taskId = $api->getTaskId();

//wait in a loop for max 300 seconds till task is solved
if (!$api->waitForResult(300)) {
    echo "could not solve captcha\n";
    echo $api->getErrorMessage()."\n";
} else {

    $gResponse    =   $api->getTaskSolution();
    echo "\n";
    echo "your recaptcha token: $gResponse\n\n";

    //check result, then:
    $api->reportCorrectRecaptcha();
    //or
    //$api->reportIncorrectRecaptcha();

}
        
Python
          #pip3 install anticaptchaofficial

from anticaptchaofficial.recaptchav3proxyless import *

solver = recaptchaV3Proxyless()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://website.com")
solver.set_website_key("SITE_KEY")
solver.set_page_action("home_page")
solver.set_min_score(0.9)

g_response = solver.solve_and_return_solution()
if g_response != 0:
    print "g-response: "+g_response
else:
    print "task finished with error "+solver.error_code
        
NodeJS
          //npm -i @antiadmin/anticaptchaofficial
//https://github.com/AdminAnticaptcha/anticaptcha-npm

const ac = require("@antiadmin/anticaptchaofficial");

ac.setAPIKey('YOUR_API_KEY_HERE');
ac.solveRecaptchaV3('http://DOMAIN.COM',
    'WEBSITE_KEY',
    0.3, //minimum score required: 0.3, 0.7 or 0.9
    'PAGE_ACTION_CAN_BE_EMPTY')
    .then(gresponse => {
        console.log('g-response: '+gresponse);
    })
    .catch(error => console.log('test received error '+error));

        
C#
          //git clone git@github.com:AdminAnticaptcha/anticaptcha-csharp

using System;
using Anticaptcha_example.Api;
using Anticaptcha_example.Helper;
using Newtonsoft.Json.Linq;

namespace Anticaptcha_example
{
    internal class Program
    {
        private static void Main() {

            DebugHelper.VerboseMode = true;

            var api = new RecaptchaV3Proxyless
            {
                ClientKey = "YOUR_API_KEY_HERE",
                WebsiteUrl = new Uri("http://makeawebsitehub.com/recaptcha/test.php"),
                WebsiteKey = "6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ",
                PageAction = "login_or_register",
                IsEnterprise = false
            };
            api.MinScore(0.3)

            if (!api.CreateTask())
                DebugHelper.Out("API v2 send failed. " + api.ErrorMessage, DebugHelper.Type.Error);
            else if (!api.WaitForResult())
                DebugHelper.Out("Could not solve the captcha.", DebugHelper.Type.Error);
            else
                DebugHelper.Out("Result: " + api.GetTaskSolution().GRecaptchaResponse, DebugHelper.Type.Success);

        }
    }
}

        
Java
          //git clone git@github.com:AdminAnticaptcha/anticaptcha-java.git

DebugHelper.setVerboseMode(true);

RecaptchaV3Proxyless api = new RecaptchaV3Proxyless();
api.setClientKey("YOUR_API_KEY_HERE");
api.setWebsiteUrl(new URL("http://getcaptchajob.com/"));
api.setWebsiteKey("6LfE4ZIUAAAAAGSYvvoszRvEC9IgFVyXwGkypn-W");
api.setPageAction("testPageAction");
api.setMinScore(0.9);

if (!api.createTask()) {
    DebugHelper.out(
            "API v2 send failed. " + api.getErrorMessage(),
            DebugHelper.Type.ERROR
    );
} else if (!api.waitForResult()) {
    DebugHelper.out("Could not solve the captcha.", DebugHelper.Type.ERROR);
} else {
    DebugHelper.out("Result: " + api.getTaskSolution().getGRecaptchaResponse(), DebugHelper.Type.SUCCESS);
}
        

نمونه پاسخ

JSON بدون هیچ خطایی
          {
    "errorId": 0,
    "taskId": 7654321
}
        
JSON با یک خطا
          {
    "errorId": 1,
    "errorCode": "ERROR_KEY_DOES_NOT_EXIST",
    "errorDescription": "Account authorization key not found in the system"
}
        

بازیابی راه‌حل

از متد getTaskResult برای درخواست راه‌حل استفاده کنید. قبل از این‌که درخواست اول را بفرستید، کمی به کارگر فرصت بدهید، مثلاً 5 ثانیه به او وقت بدهید. اگر کارگر همچنان شلوغ بود، 3 ثانیه بعد مجدداً تلاش کنید.

شیء راه‌حل وظیفه

خصوصیت نوع هدف
gRecaptchaResponse رشته رشته توکن که برای تعامل با فرم ارسال در وب‌سایت هدف لازم است.

نمونه پاسخ

JSON بدون هیچ خطایی
          {
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3"
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}