Menú de Documentación

GeeTestTaskProxyless: resuelve captcha de geetest.com sin proxy

Este tipo de tarea resuelve los captchas de GeeTest en los navegadores de nuestros trabajadores. Su aplicación envía la dirección del sitio web, la clave gt, la clave de desafío y después de la finalización de la tarea recibe una solución que consiste en 3 tokens. Para la versión 4 de GeeTest la solución consiste en 5 valores y la clave de desafío no es necesaria.

Todo es similar a GeeTestTask, excepto que nosotros no requerimos proxies y lo resolvemos desde nuestras propias direcciones IP.

Ejemplos

Objeto de la tarea

Propiedad Tipo Requerido Propósito
type Cadena GeeTestTaskProxyless
websiteURL Cadena Dirección de un sitio web objetivo. Puede localizarse en cualquier parte del sitio web, incluso en un área de miembros. Nuestros trabajadores no navegan ahí, en su lugar simulan la visita.
gt Cadena La clave pública del dominio, rara vez actualizada.
challenge Cadena No Clave de token cambiante. Asegúrate de conseguir una nueva para cada captcha, o de lo contrario te cobrarían por un error en la tarea. Necesario para la versión 3. No es necesario para la versión 4
geetestApiServerSubdomain Cadena No Subdominio API opcional. Se requiere para algunas implementaciones.
geetestGetLib Cadena No Se requiere para algunas implementaciones. Envía el cifrado JSON a una cadena. El valor puede ser rastreado con las herramientas de desarrollador del navegador. Coloca un punto de quiebre antes de llamar la función "initGeetest".
version Entero No Número de versión. La versión por defecto es la 3. Versiones soportadas: 3 y 4.
initParameters Objeto No Parámetros de inicialización adicionales para la versión 4

Ejemplo de solicitud (V3)

CURL
          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"GeeTestTaskProxyless",
            "websiteURL":"http://mywebsite.com/geetest/test.php",
            "gt":"874703612e5cac182812a00e273aad0d",
            "challenge":"a559b82bca2c500101a1c8a4f4204742"
        },
    "softId": 0
}' https://api.anti-captcha.com/createTask
        
PHP
          <?php

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

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

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

//grabbing challenge key ... ";
$data = json_decode(file_get_contents("https://www.geetest.com/demo/gt/register-enIcon-official?t=1547634498036"), true);

echo "grabbed data:\n";
print_r($data);

if (!isset($data["gt"]) && !isset($data["challange"])) {
    echo "something went wrong, probably example was changed or network is inaccessible\n";
    exit;
}

$challenge  =   $data["challenge"];
$gt         =   $data["gt"];

echo "setting gt=$gt, challenge=$challenge\n";
$api->setWebsiteURL("https://www.geetest.com/en/");
$api->setGTKey($gt);
$api->setChallenge($challenge);

//optional API subdomain, make sure you understand what to set here
$api->setAPISubdomain("optional.subdomain.api.geetest.com");

//read the docs about this optional parameter
$api->setGeetestLib("{\"customlibs\":\"url-to-lib.js\"}");

//your anti-captcha.com account key
$api->setKey("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);

//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 {

    echo "your geetest tokens:\n";
    print_r($api->getTaskSolution());

}
        
Python
          #pip3 install anticaptchaofficial

from anticaptchaofficial.geetestproxyless import *

solver = geetestProxyless()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://address.com")
solver.set_gt_key("CONSTANT_GT_KEY")
solver.set_challenge_key("VARIABLE_CHALLENGE_KEY")

# optional API subdomain, make sure you understand what to set here
# solver.set_js_api_domain("custom-domain.geetest.com")

# getLib payload, see documentation for explanation of this
# solver.set_geetest_lib("{\"customlibs\":\"url-to-lib.js\"}")

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

token = solver.solve_and_return_solution()
if token != 0:
    print "result tokens: "
    print token
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');

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

ac.solveGeeTestProxyless('http://DOMAIN.COM',
    'GT',
    'CHALLENGE',
    'API_SUBDOMAIN',
    'GET_LIB')
    .then(result => {
        console.log('result: ');
        console.log(result);
    })
    .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 GeeTestProxyless()
            {
                ClientKey = "YOUR_API_KEY_HERE",
                WebsiteUrl = new Uri("http://www.supremenewyork.com"),
                WebsiteKey = "b6e21f90a91a3c2d4a31fe84e10d0442",
                WebsiteChallenge = "169acd4a58f2c99770322dfa5270c221"

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

            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 CHALLENGE: " + api.GetTaskSolution().Challenge, DebugHelper.Type.Success);
                DebugHelper.Out("Result SECCODE: " + api.GetTaskSolution().Seccode, DebugHelper.Type.Success);
                DebugHelper.Out("Result VALIDATE: " + api.GetTaskSolution().Validate, DebugHelper.Type.Success);
            }

        }
    }
}

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

package com.anti_captcha;

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

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;

public class Main {

    public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {
        DebugHelper.setVerboseMode(true);

        GeeTestProxyless api = new GeeTestProxyless();
        api.setClientKey("YOUR_API_KEY_HERE");
        api.setWebsiteUrl(new URL("http://biletmaster.com/"));
        api.setWebsiteKey("be33de396f8d04030f6eca8fbd225071");
        api.setWebsiteChallenge("grabbed_one_time_challenge_32bytes");

        //optional API subdomain, make sure you understand what to set here
        //api.setGeetestApiServerSubdomain("optional.subdomain.api.geetest.com");

        //read the docs about this optional parameter
        //api.setGeetestLib("{\"customlibs\":\"url-to-lib.js\"}");

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

        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 CHALLENGE: " + api.getTaskSolution().getChallenge(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result SECCODE: " + api.getTaskSolution().getSeccode(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result VALIDATE: " + api.getTaskSolution().getValidate(), DebugHelper.Type.SUCCESS);
        }
    }

}

        

GeeTest V4

CURL
          curl -i -H "Accept: application/json" \
     -H "Content-Type: application/json" \
     -X POST -d '{
    "clientKey":"YOUR_API_KEY_HERE",
    "task":
        {
            "type":"GeeTestTaskProxyless",
            "websiteURL":"http://mywebsite.com/geetest/test.php",
            "gt":"874703612e5cac182812a00e273aad0d",
            "version":4,
            "initParameters": {
              "riskType": "slide"
            }
        },
    "softId": 0
}' https://api.anti-captcha.com/createTask
        
PHP
          <?php

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

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

$api = new GeeTestProxyless();
$api->setVerboseMode(true);
$api->setWebsiteURL("https://www.geetest.com/en/adaptive-captcha-demo");
$api->setGTKey("fcd636b4514bf7ac4143922550b3008b");
$api->setVersion(4);
$api->setInitParameters([
    "riskType": "slide"
]);
//optional API subdomain, make sure you understand what to set here
$api->setAPISubdomain("gcaptcha4.geetest.com");

//your anti-captcha.com account key
$api->setKey("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);

//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 {

    echo "your geetest tokens:\n";
    print_r($api->getTaskSolution());

}
        
Python
          #pip3 install anticaptchaofficial

from anticaptchaofficial.geetestproxyless import *

solver = geetestProxyless()
solver.set_verbose(1)
solver.set_key("YOUR_API_KEY_HERE")
solver.set_website_url("https://address.com")
solver.set_gt_key("captchaId value")
solver.set_version(4)

# optional API subdomain, make sure you understand what to set here
# solver.set_js_api_domain("custom-domain.geetest.com")

# optional initialization parameters
# solver.set_init_parameters({"riskType": "slide"})

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

token = solver.solve_and_return_solution()
if token != 0:
    print "result tokens: "
    print token
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');

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

ac.solveGeeTestV4Proxyless('http://DOMAIN.COM',
    'captchaId',
    'API_SUBDOMAIN',
    {
        "riskType": "slide"
    })
    .then(result => {
        console.log('result: ');
        console.log(result);
    })
    .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 GeeTestV4Proxyless()
            {
                ClientKey = ClientKey,
                WebsiteUrl = new Uri("http://www.supremenewyork.com"),
                WebsiteKey = "b6e21f90a91a3c2d4a31fe84e10d0442",

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

            api.initParameters.Add("riskType", "slide");

            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 CaptchaId: " + api.GetTaskSolution().CaptchaId, DebugHelper.Type.Success);
                DebugHelper.Out("Result LotNumber: " + api.GetTaskSolution().LotNumber, DebugHelper.Type.Success);
                DebugHelper.Out("Result PassToken: " + api.GetTaskSolution().PassToken, DebugHelper.Type.Success);
                DebugHelper.Out("Result GenTime: " + api.GetTaskSolution().GenTime, DebugHelper.Type.Success);
                DebugHelper.Out("Result CaptchaOutput: " + api.GetTaskSolution().CaptchaOutput, DebugHelper.Type.Success);
            }

        }
    }
}

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

package com.anti_captcha;

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

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.Iterator;
import java.util.concurrent.ThreadLocalRandom;

public class Main {

    public static void main(String[] args) throws InterruptedException, MalformedURLException, JSONException {
        DebugHelper.setVerboseMode(true);

        GeeTestProxyless api = new GeeTestV4Proxyless();
        api.setClientKey("YOUR_API_KEY_HERE");
        api.setWebsiteUrl(new URL("http://biletmaster.com/"));
        api.setWebsiteKey("be33de396f8d04030f6eca8fbd225071");

        // optional initial parameters
        JSONObject additionalInitParameters = new JSONObject();
        try {
            additionalInitParameters.put("riskType", "ai");
        } catch (Exception e) {
            DebugHelper.out("JSON error: "+e.getMessage(), DebugHelper.Type.ERROR);
            return;
        }
        api.setInitParameters(additionalInitParameters);

        //optional API subdomain, make sure you understand what to set here
        //api.setGeetestApiServerSubdomain("optional.subdomain.api.geetest.com");

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

        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 captcha_id: " + api.getTaskSolution().getCaptchaId(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result lot_number: " + api.getTaskSolution().getLotNumber(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result pass_token: " + api.getTaskSolution().getPassToken(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result gen_time: " + api.getTaskSolution().getGenTime(), DebugHelper.Type.SUCCESS);
            DebugHelper.out("Result captcha_output: " + api.getTaskSolution().getCaptchaOutput(), DebugHelper.Type.SUCCESS);
        }
    }

}

        

Ejemplo de respuesta

JSON sin errores
          {
    "errorId": 0,
    "taskId": 7654321
}
        
JSON con un error
          {
    "errorId": 1,
    "errorCode": "ERROR_KEY_DOES_NOT_EXIST",
    "errorDescription": "Account authorization key not found in the system"
}
        

Obtener la solución

Usa el método getTaskResult para pedir la solución. Dale algo de tiempo al trabajador, como 5 segundos, antes de hacer la primera solicitud. Si el trabajador sigue ocupado, vuelve a intentar en 3 segundos.

Objeto de solución de la tarea (V3)

Propiedad Tipo Propósito
challenge Cadena Cadena hash requerida para interactuar con el envío de un formulario a un sitio web objetivo.
validate Cadena Cadena hash también requerida.
seccode Cadena Otra cadena hash requerida, no tenemos idea de por qué hay 3.

Objeto de solución de la tarea (V4)

Propiedad Tipo
captcha_id Cadena
lot_number Cadena
pass_token Cadena
gen_time Entero
captcha_output Cadena

Ejemplo de respuesta (v3)

JSON sin errores
          {
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "challenge":"3c1c5153aa48011e92883aed820069f3hj",
        "validate":"47ad5a0a6eb98a95b2bcd9e9eecc8272",
        "seccode":"83fa4f2d23005fc91c3a015a1613f803|jordan"
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}
        

Ejemplo de uso de token

Ejemplo de respuesta (v4)

JSON sin errores
          {
    "errorId":0,
    "status":"ready",
    "solution":
    {
        "captcha_id": "fcd636b4514bf7ac4143922550b3008b",
        "lot_number": "354ab6dd4e594fdc903074c4d8d37b24",
        "pass_token": "b645946a654e60218c7922b74b3b5ee8e8717e8fd3cd5182a5c98d660bbd1ed5",
        "gen_time": "1649921519",
        "captcha_output": "cFPIALDXSop8Ri2mPABbRWzNBs86N8D4vNUTuVa7wN7E...[cut]...ciM50ePCCzLBZ1bmaV9Yt7IkkFI9Emx4eaP8rRoA=="
    },
    "cost":"0.001500",
    "ip":"46.98.54.221",
    "createTime":1472205564,
    "endTime":1472205570,
    "solveCount":"0"
}