Демо капч

GeeTest CAPTCHA демо

На этой демо странице вы можете протестировать пример формы с GeeTest CAPTCHA.

GeeTest - это такой вид капчи, где требуется передвинуть кусок пазла или выбрать несколько объектов в нужном порядке.

Загрузка GeeTest...
Логотип "GeeTest CAPTCHA"

Во многих случаях GeeTest CAPTCHA создает проблемы с доступностью для сайтов, ограничивает доступ к открытой информации и также усложняет тестирование сайтов. Используйте сервис автоматического решения GeeTest CAPTCHA.

Обход GeeTest CAPTCHAДокументация API

Как решить GeeTest

  1. Найдите следующие параметры GeeTest на странице (обычно их можно найти внутри функции initGeetest):
    gt - публичный ключ сайта (статический)
    challenge - динамический ключ задания
    api_server - домен API (обязателен для некоторых сайтов)

    Важно: для каждого запроса к нашему API необходимо получать новое значение challenge. Если капча уже была загружена на странице, то значение challenge является недействительным. Вам необходимо изучить запросы, которые выполняются при загрузке страницы и найти тот, в котором возвращается значение challenge. Затем, для получения нового challenge вам нужно каждый раз выполнять данный запрос и парсить его.

  2. Отправьте эти параметры на наш API.

    Используя SDK (рекомендовано):

    PHP

    // https://github.com/2captcha/2captcha-php
    
    require(__DIR__ . '/../src/autoloader.php');
    
    $solver = new \TwoCaptcha\TwoCaptcha('YOUR_API_KEY');
    
    try {
        $result = $solver->geetest([
            'gt'        => '81388ea1fc187e0c335c0a8907ff2625',
            'apiServer' => 'api.geetest.com',
            'challenge' => '12345678abc90123d45678ef90123a456b',
            'url'       => 'https://2captcha.com/demo/geetest',
        ]);
    } catch (\Exception $e) {
        die($e->getMessage());
    }
    
    die('Captcha solved: ' . $result->code);

    Python

    # https://github.com/2captcha/2captcha-python
    
    import sys
    import os
    import requests
    sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))
    
    from twocaptcha import TwoCaptcha
    
    api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')
    
    solver = TwoCaptcha(api_key)
    
    resp = requests.get("http://2captcha.com/demo/geetest")
    challenge = resp.content.decode('utf-8').split(';')[0]
    
    try:
        result = solver.geetest(gt='f3bf6dbdcf7886856696502e1d55e00c',
                                apiServer='api.geetest.com',
                                challenge=challenge,
                                url='https://2captcha.com/demo/geetest')
    
    except Exception as e:
        sys.exit(e)
    
    else:
        sys.exit('solved: ' + str(result))

    Java

    // https://github.com/2captcha/2captcha-java
    
    package examples;
    
    import com.twocaptcha.TwoCaptcha;
    import com.twocaptcha.captcha.GeeTest;
    
    public class GeeTestExample {
        public static void main(String[] args) {
            TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
            GeeTest captcha = new GeeTest();
            captcha.setGt("81388ea1fc187e0c335c0a8907ff2625");
            captcha.setApiServer("api.geetest.com");
            captcha.setChallenge("12345678abc90123d45678ef90123a456b");
            captcha.setUrl("https://2captcha.com/demo/geetest");
            try {
                solver.solve(captcha);
                System.out.println("Captcha solved: " + captcha.getCode());
            } catch (Exception e) {
                System.out.println("Error occurred: " + e.getMessage());
            }
        }
    }

    C#

    // https://github.com/2captcha/2captcha-csharp
    
    using System;
    using System.Linq;
    using TwoCaptcha.Captcha;
    
    namespace TwoCaptcha.Examples
    {
        public class GeeTestExample
        {
            public void Main()
            {
                TwoCaptcha solver = new TwoCaptcha("YOUR_API_KEY");
                GeeTest captcha = new GeeTest();
                captcha.SetGt("81388ea1fc187e0c335c0a8907ff2625");
                captcha.SetApiServer("api.geetest.com");
                captcha.SetChallenge("12345678abc90123d45678ef90123a456b");
                captcha.SetUrl("https://2captcha.com/demo/geetest");
                try
                {
                    solver.Solve(captcha).Wait();
                    Console.WriteLine("Captcha solved: " + captcha.Code);
                }
                catch (AggregateException e)
                {
                    Console.WriteLine("Error occurred: " + e.InnerExceptions.First().Message);
                }
            }
        }
    }

    Go

    // https://github.com/2captcha/2captcha-go
    
    package main
    
    import (
        "fmt"
        "log"
        "github.com/2captcha/2captcha-go"
    )
    
    func main() {
        client := api2captcha.NewClient("API_KEY")
        cap := api2captcha.GeeTest{
            GT: "81388ea1fc187e0c335c0a8907ff2625",
            ApiServer: "api.geetest.com",
            Challenge: "12345678abc90123d45678ef90123a456b",
            Url: "https://2captcha.com/demo/geetest",
        }
        code, err := client.Solve(cap.ToRequest())
        if err != nil {
            log.Fatal(err);
        }
        fmt.Println("code "+code)
    }

    C++

    // https://github.com/2captcha/2captcha-cpp
    
    #include <cstdio>
    
    #include "curl_http.hpp"
    #include "api2captcha.hpp"
    
    int main (int ac, char ** av)
    {
    api2captcha::curl_http_t http;
    http.set_verbose (true);
    
    api2captcha::client_t client;
    client.set_http_client (&http);
    client.set_api_key (API_KEY);
    
    api2captcha::geetest_t cap;
    cap.set_gt ("81388ea1fc187e0c335c0a8907ff2625");
    cap.set_api_server ("api.geetest.com");
    cap.set_challenge ("12345678abc90123d45678ef90123a456b");
    cap.set_url ("https://2captcha.com/demo/geetest");
    
    try
    {
        client.solve (cap);
        printf ("code '%s'\n", cap.code ().c_str ());
    }
    catch (std::exception & e)
    {
        fprintf (stderr, "Failed: %s\n", e.what ());
    }
    
    return 0;   
    }

    Ruby

    # https://github.com/2captcha/2captcha-ruby
    require 'api_2captcha'
    
    client =  Api2Captcha.new("YOUR_API_KEY")
    
    result = client.geetest({
      gt: 'f1ab2cdefa3456789012345b6c78d90e',
      api_server: 'api-na.geetest.com',
      challenge: '12345678abc90123d45678ef90123a456b',
      pageurl: 'https://www.site.com/page/'
    })

    Вручную:

    1. Отправьте GET или POST запрос на наш API URL: https://2captcha.com/in.php с параметрами из предыдущего шага.
      Пример запроса:
      https://2captcha.com/in.php?key=1abc234de56fab7c89012d34e56fa7b8&method=geetest&gt=929c4274113891610f91fecd8f98f84a&challenge=12345678abc90123d45678ef90123a456b&api_server=api-na.geetest.com&pageurl=http://2captcha.com/demo/geetest

    2. Если вы отправили корректный запрос, сервер вернёт ID вашей капчи:

      OK|2122988149
      В противном случае сервер вернет ошибку.

    3. Через 15-20 секунд отправьте GET запрос чтобы получить результат:

      GET https://2captcha.com/res.php?key=YOUR_API_KEY&action=get&id=2122988149
      Если ваша капча уже решена, сервер вернёт ответ на неё.

      Если ваша капча ещё не решена, сервер вернёт CAPCHA_NOT_READY. В таком случае повторите ваш запрос через 5 секунд. Если что-то пошло не так, сервер вернёт ошибку.

  3. Если капча уже решена, сервер вернёт ответ в формате JSON. Ответ содержит три параметра: challenge, validate and seccode:

    {
        "challenge": "1a2b3456cd67890e12345fab678901c2de",
        "validate": "09fe8d7c6ba54f32e1dcb0a9fedc8765",
        "seccode": "12fe3d4c56789ba01f2e345d6789c012|jordan"
    }
  4. Используйте значения, полученные в ответе от нашего API в запросе к сайту, передавая их в соотстветствующих полях запроса:

    geetest_challenge
    geetest_validate
    geetest_seccode
  5. Нажмите кнопку "Проверить".