Menu

reCAPTCHA V3 풀기

해당 유형의 작업 객체는 작업자의 컴퓨터에서 Google reCAPTCHA V3를 풀기 위해 필요한 객체입니다. 해당 작업은 당사의 자체 프록시 서버 및/또는 작업자의 IP 주소를 사용하여 당사의 서비스를 통해 실행됩니다.

reCAPTCHA V2-Invisible과 reCAPTCHA V3의 경우, 동일하게 보여 혼동될 수 있습니다만, 이 둘 사이에는 차이가 존재하니 유의하시기 바랍니다. 여기서 정확한 유형을 간단하게 확인하는 방법으로 API를 통해 V2-Invisible 및 V3로 풀어보시기 바랍니다. 둘 중 하나에서만 오류가 발생하여 간편하게 확인하실 수 있습니다.

당사는 작업자의 reCAPTCHA "점수"를 테스트하여 0.3, 0.7, 0.9의 3개의 그룹(대기열)으로 분류합니다. 유휴 작업자 수에 따라 각각 비용이 다를 수 있습니다. "minScore" 속성을 전달하면 작업이 어느 대기열에 배치될지 정의할 수 있으며, 대부분의 가용 작업자는 0.3점을 받으며, 소수의 경우에는 0.9점을 받기도 합니다.

Recaptcha v3 example
reCAPTCHA V3의 예제. 일반적으로 페이지 우측 하단에 로고 배지가 있으나, 자바스크립트로 손쉽게 제거할 수 있습니다.
Python
Node.js
Go
PHP
Java
Kotlin
C#
C++
Rust
Ruby
bash

Python에서 reCaptcha V3을(를) 해결하는 방법

#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)

# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter
solver.set_soft_id(0)

g_response = solver.solve_and_return_solution()
if g_response != 0:
    print("g-response: "+g_response)
    # user-agent in case you need it:
    print("user-agent: "+solver.get_user_agent())
else:
    print("task finished with error "+solver.error_code)

Node.js에서 reCaptcha V3을(를) 해결하는 방법

//npm install @antiadmin/anticaptchaofficial
//https://github.com/anti-captcha/anticaptcha-npm

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

ac.setAPIKey('YOUR_API_KEY_HERE');

//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
ac.setSoftId(0);

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));

// in case you need it
console.log("worker's user-agent:");
console.log(ac.getUserAgent());

Go에서 reCaptcha V3을(를) 해결하는 방법

// Install with:
// go get github.com/anti-captcha/anticaptcha-go
package main

import (
    "fmt"
    "github.com/anti-captcha/anticaptcha-go"
    "log"
)

func main() {
    // Create API client and set the API Key
    ac := anticaptcha.NewClient("API_KEY_HERE")

    // set to 'false' to turn off debug output
    ac.IsVerbose = true

    // Specify softId to earn 10% commission with your app.
    // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
    //ac.SoftId = 1187

    // Make sure the API key funds balance is positive
    balance, err := ac.GetBalance()
    if err != nil {
        log.Fatal(err)
        // Exit program to make sure you don't DDoS API with requests, while having empty balance
        return
    }
    fmt.Println("Balance:", balance)

    // Solve Recaptcha V3
    solution, err := ac.SolveRecaptchaV3(anticaptcha.RecaptchaV3{
        WebsiteURL: "https://onlyfans.com/",
        WebsiteKey: "6LcvNcwdAAAAAMWAuNRXH74u3QePsEzTm6GEjx0J",
        PageAction: "somefun",
        MinScore:   0.9
    })
    if err != nil {
        log.Fatal(err)
    }
    fmt.Println("Recaptcha g-response token:", solution)
    // In case you need the worker's user-agent
    fmt.Println("User-Agent:", ac.WorkersUserAgent)
}

PHP에서 reCaptcha V3을(를) 해결하는 방법

//git clone https://github.com/anti-captcha/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");

//Specify softId to earn 10% commission with your app.
//Get your softId here: https://anti-captcha.com/clients/tools/devcenter
$api->setSoftId(0);

//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";
    echo "worker's user-agent in case you need it:\n";
    echo $api->getWorkersUserAgent()."\n";

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

}

Java에서 reCaptcha V3을(를) 해결하는 방법

// GitHub: https://github.com/anti-captcha/anticaptcha-java
//
// Maven, add to pom.xml:
//   <dependency>
//     <groupId>com.anti-captcha</groupId>
//     <artifactId>anticaptcha</artifactId>
//     <version>1.0.0</version>
//   </dependency>
//
// Gradle, add to build.gradle:
//   implementation "com.anti-captcha:anticaptcha:1.0.0"

import com.anti_captcha.Api.RecaptchaV3Proxyless;
import com.anti_captcha.Helper.DebugHelper;

public class Main {

    public static void main(String[] args) throws InterruptedException {
        // Set to false to turn the debug output off
        DebugHelper.setVerboseMode(true);

        RecaptchaV3Proxyless api = new RecaptchaV3Proxyless();
        api.setClientKey("YOUR_API_KEY_HERE");

        // Specify softId to earn 10% commission with your app.
        // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
        api.setSoftId(0);

        api.setWebsiteUrl("http://makeawebsitehub.com/recaptcha/test.php");
        api.setWebsiteKey("6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ");
        api.setPageAction("login_or_register");

        // Score you need, one of 0.3, 0.7 or 0.9
        api.setMinScore(0.3);

        // Make sure the API key funds balance is positive
        Double balance = api.getBalance();
        if (balance == null || balance <= 0) {
            // Stop here to make sure you don't DDoS the API while having empty balance
            DebugHelper.out("Balance error: " + api.getErrorMessage(), DebugHelper.Type.ERROR);
            return;
        }
        DebugHelper.out("Balance: " + balance, DebugHelper.Type.SUCCESS);

        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("Recaptcha g-response token: " + api.getTaskSolution().getGRecaptchaResponse(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Worker's user-agent in case you need it: " + api.getTaskSolution().getUserAgent(), DebugHelper.Type.SUCCESS);
        }
    }
}

Kotlin에서 reCaptcha V3을(를) 해결하는 방법

// GitHub: https://github.com/anti-captcha/anticaptcha-kotlin
//
// Gradle, add to build.gradle.kts:
//   implementation("com.anti-captcha:anticaptcha-kotlin:1.0.0")

import com.anticaptcha.AnticaptchaClient
import com.anticaptcha.AnticaptchaException
import com.anticaptcha.ApiException
import com.anticaptcha.RecaptchaV3
import kotlinx.coroutines.runBlocking

fun main(): Unit = runBlocking {
    // Create the API client and set the API key
    val ac = AnticaptchaClient(
        apiKey = "YOUR_API_KEY_HERE",
        // Specify softId to earn 10% commission with your app.
        // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
        softId = 0,
        // Set to false to turn the debug output off
        verbose = true,
    )

    try {
        // Make sure the API key funds balance is positive
        val balance = ac.getBalance()
        if (balance <= 0) {
            // Stop here to make sure you don't DDoS the API while having empty balance
            System.err.println("Empty balance")
            return@runBlocking
        }
        println("Balance: $balance")

        val solution = ac.solveRecaptchaV3(
            RecaptchaV3(
                websiteUrl = "http://makeawebsitehub.com/recaptcha/test.php",
                websiteKey = "6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ",
                pageAction = "login_or_register",
                isEnterprise = false,

                // Score you need, one of 0.3, 0.7 or 0.9
                minScore = 0.3,
            ),
        )

        println("Recaptcha g-response token: ${solution.gRecaptchaResponse}")
        println("Worker's user-agent in case you need it: ${solution.userAgent}")
    } catch (error: ApiException) {
        // https://anti-captcha.com/apidoc/errors
        System.err.println("API error: ${error.errorCode} ${error.description}")
    } catch (error: AnticaptchaException) {
        System.err.println("Failed: ${error.message}")
    }
}

C#에서 reCaptcha V3을(를) 해결하는 방법

// GitHub: https://github.com/anti-captcha/anticaptcha-csharp.git
// install:  dotnet add package AntiCaptchaOfficial
// or, in the Package Manager Console:
// Install-Package AntiCaptchaOfficial

using System;
using AntiCaptcha.Api;
using AntiCaptcha.Helper;


class Program
{
    static void Main()
    {
        // Set to 'false' to turn off debug output
        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,
            // Score you need, one of 0.3, 0.7 or 0.9
            MinScore = 0.3,
            // Specify softId to earn 10% commission with your app.
            // Get your softId here:
            // https://anti-captcha.com/clients/tools/devcenter
            SoftId = 0
        };

        // Make sure the API key funds balance is positive
        var balance = api.GetBalance();
        if (balance == null || balance <= 0)
        {
            // Exit the program to make sure you don't DDoS the API with requests while having empty balance
            Console.WriteLine("Balance error: " + api.ErrorMessage);
            return;
        }
        Console.WriteLine("Balance: " + balance);

        var solution = api.Solve();
        Console.WriteLine("Recaptcha g-response token: " + solution?.GRecaptchaResponse);
        Console.WriteLine("Worker's user-agent in case you need it: " + solution?.UserAgent);
    }
}

C++에서 reCaptcha V3을(를) 해결하는 방법

// GitHub: https://github.com/anti-captcha/anticaptcha-cplus.git
// Add it to your CMake project:
//   include(FetchContent)
//   FetchContent_Declare(anticaptcha
//           GIT_REPOSITORY https://github.com/anti-captcha/anticaptcha-cplus.git
//           GIT_TAG v1.0.0)
//   FetchContent_MakeAvailable(anticaptcha)
//   target_link_libraries(your_app PRIVATE anticaptcha::anticaptcha)

#include <iostream>
#include <anticaptcha/anticaptcha.hpp>

int main() {
    // Create the API client and set the API key
    anticaptcha::Client ac("YOUR_API_KEY_HERE");

    // Debug output is on by default, turn it off with:
    // ac.shut_up();

    // Specify softId to earn 10% commission with your app.
    // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
    ac.set_soft_id(0);

    try {
        // Make sure the API key funds balance is positive
        const double balance = ac.get_balance();
        if (balance <= 0) {
            // Stop here to make sure you don't DDoS the API while having empty balance
            std::cerr << "Empty balance" << std::endl;
            return 1;
        }
        std::cout << "Balance: " << balance << std::endl;

        anticaptcha::RecaptchaV3 params;
        params.website_url = "http://makeawebsitehub.com/recaptcha/test.php";
        params.website_key = "6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ";
        params.page_action = "login_or_register";
        params.is_enterprise = false;
        // Score you need, one of 0.3, 0.7 or 0.9
        params.min_score = 0.3;

        const anticaptcha::Solution solution = ac.solve_recaptcha_v3(params);
        std::cout << "Recaptcha g-response token: " << solution.g_recaptcha_response() << std::endl;
        std::cout << "Worker's user-agent in case you need it: " << solution.user_agent() << std::endl;
    } catch (const anticaptcha::ApiError& error) {
        // https://anti-captcha.com/apidoc/errors
        std::cerr << "API error: " << error.error_code() << " " << error.description() << std::endl;
        return 1;
    } catch (const anticaptcha::Error& error) {
        std::cerr << "Failed: " << error.what() << std::endl;
        return 1;
    }

    return 0;
}

Rust에서 reCaptcha V3을(를) 해결하는 방법

// GitHub: https://github.com/anti-captcha/anticaptcha-rust
// Install with:
//   cargo add anticaptchaofficial
// or add it to Cargo.toml:
//   [dependencies]
//   anticaptchaofficial = "1"

use anticaptcha::{Client, RecaptchaV3};

#[tokio::main]
async fn main() -> anticaptcha::Result<()> {
    // Create the API client and set the API key
    let ac = Client::new("YOUR_API_KEY_HERE")
        // Specify softId to earn 10% commission with your app.
        // Get your softId here: https://anti-captcha.com/clients/tools/devcenter
        .with_soft_id(0);
    // .quiet() turns the debug output off

    // Make sure the API key funds balance is positive
    let balance = ac.get_balance().await?;
    if balance <= 0.0 {
        // Stop here to make sure you don't DDoS the API while having empty balance
        eprintln!("Empty balance");
        return Ok(());
    }
    println!("Balance: {balance}");

    let solution = ac
        .solve_recaptcha_v3(&RecaptchaV3 {
            website_url: "http://makeawebsitehub.com/recaptcha/test.php".into(),
            website_key: "6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ".into(),
            page_action: "login_or_register".into(),
            is_enterprise: false,
            // Score you need, one of 0.3, 0.7 or 0.9
            min_score: 0.3,
            ..Default::default()
        })
        .await?;

    println!("Recaptcha g-response token: {}", solution.g_recaptcha_response());
    println!("Worker's user-agent in case you need it: {}", solution.user_agent());

    Ok(())
}

Ruby에서 reCaptcha V3을(를) 해결하는 방법

# GitHub: https://github.com/anti-captcha/anticaptcha-ruby
# Install with:
#   gem install anticaptchaofficial
# or add it to your Gemfile:
#   gem "anticaptchaofficial"

require "anticaptcha"

# Create the API client and set the API key
ac = Anticaptcha.new("YOUR_API_KEY_HERE")

# Specify softId to earn 10% commission with your app.
# Get your softId here: https://anti-captcha.com/clients/tools/devcenter
ac.soft_id = 0

# Set to false to turn the debug output off
ac.verbose = true

begin
  # Make sure the API key funds balance is positive
  balance = ac.balance
  # Stop here to make sure you don't DDoS the API while having empty balance
  abort "Empty balance" if balance <= 0
  puts "Balance: #{balance}"

  solution = ac.solve_recaptcha_v3(
    website_url: "http://makeawebsitehub.com/recaptcha/test.php",
    website_key: "6LfI9IsUAAAAAKuvopU0hfY8pWADfR_mogXokIIZ",
    page_action: "login_or_register",
    is_enterprise: false,
    # Score you need, one of 0.3, 0.7 or 0.9
    min_score: 0.3
  )

  puts "Recaptcha g-response token: #{solution.g_recaptcha_response}"
  puts "Worker's user-agent in case you need it: #{solution.user_agent}"
rescue Anticaptcha::ApiError => e
  # https://anti-captcha.com/apidoc/errors
  warn "API error: #{e.error_code} #{e.description}"
rescue Anticaptcha::Error => e
  warn "Failed: #{e.message}"
end

bash에서 reCaptcha V3을(를) 해결하는 방법

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
        },
    "softId": 0
}' https://api.anti-captcha.com/createTask

작업 객체

속성 유형 필수 목적
type 문자열 RecaptchaV3TaskProxyless
websiteURL 문자열 대상 웹페이지 주소. 회원 영역을 포함하여 웹사이트의 어느 곳에나 위치할 수 있습니다. 당사의 작업자는 해당 페이지를 탐색하지는 않으나, 대신에 해당 페이지의 방문 시뮬레이션합니다.
websiteKey 문자열 reCAPTCHA 웹사이트 키. 해당 키를 찾는 방법의 경우, 해당 글을 참고하시기 바랍니다.
minScore 2배 특정 점수의 작업자를 필터링합니다. 다음 중 하나의 값을 갖습니다:
0.3
0.7
0.9
pageAction 문자열 아니요
보안 문자의 '작업' 값입니다. 웹사이트 소유자는 이 매개변수를 사용하여 사용자가 페이지에서 수행하는 작업을 정의합니다. 예제:

grecaptcha.execute('site_key', {action:'login_test'})
isEnterprise 불린 아니요 이 V3를 엔터프라이즈 API로 풀어야 하는 경우, 이 플래그를 "true"fh로 설정하시기 바랍니다. 기본값은 "false"이며, 이 경우 reCAPTCHA는 비엔터프라이즈 API로 처리됩니다. 다음 예제에서와 같이 자바스크립트 호출로 확인할 수 있습니다.

grecaptcha.enterprise.execute('site_key', {..})
apiDomain 문자열 아니요 해당 매개변수를 사용하면 reCAPTCHA 스크립트가 제공되어야 하는 도메인 이름을 전송합니다. "www.google.com" 또는 "www.recaptcha.net"의 두 값 중 하나만 가질 수 있습니다. 수행 중인 작업을 제대로 파악하고 있지 못하는 경우에는 이 매개변수를 사용하지 마시기 바랍니다.

작업 솔루션 객체

속성 유형 목적
gRecaptchaResponse 문자열 대상 웹사이트의 제출 양식과 상호작용하는 데 필요한 토큰 문자열.
userAgent 문자열 작업자 브라우저의 사용자 에이전트. 응답 토큰을 제출할 때 사용합니다.

응답 예제

{
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "gRecaptchaResponse":"3AHJ_VuvYIBNBW5yyv0zRYJ75VkOKvhKj9_xGBJKnQimF72rfoq3Iy-DyGHMwLAo6a3",
        "userAgent":"Mozilla\5.0 (Windows NT 10.0; Win64; x64) AppleWebKit\/537.36 (KHTML, like Gecko) Chrome\/145.0.0.0 Safari\/537.36"
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}