GeeTest · Живое демо

Демо GeeTest v3

Головоломка от GeeTest: передвиньте фрагмент пазла на нужное место.

Windows x64·Работает локально, поэтому капча не покидает ваш компьютер
  • Бесплатно, без регистрации
  • Виджет реального провайдера
  • Посмотреть ответ проверки
GeeTest в месяц8,000
8.0k250.0k
В других сервисах поштучно, примерно $2.10 за 1000$16.80
CapSkip Bronze, фиксированно$10.00
$6.80остаётся у вас в карманекаждый месяц при таком объёме

Живой виджет GeeTest v3

Нажмите на полосу, затем передвиньте фрагмент пазла на место. Проверка происходит, как только GeeTest возвращает значения challenge, validate и seccode.

Time to solve 0.0s
Solve cost $0 with CapSkip

Как решить GeeTest v3

Поле выше работает как живая GeeTest v3 задание: головоломка «сдвинь, чтобы совместить». На этой странице показаны три простых способа решить GeeTest v3 и получить три возвращаемых им значения, geetest_challenge, geetest_validate и geetest_seccode: автоматически с помощью расширения CapSkip для браузера, в вашем собственном коде с помощью SDK CapSkip или перенаправив на CapSkip сервис капчи, к которому уже обращаются ваши инструменты. CapSkip работает локально на вашем устройстве, поэтому нет платы за каждое решение и ничего не покидает ваш компьютер.

Код не нужен

Вариант 1: решение GeeTest v3 с помощью браузерного расширения

Самый простой способ обойти GeeTest v3: Расширение CapSkip для распознавания капчи для Chrome и Firefox. Оно находит пропуск в пазле, перетаскивает элемент на место человекоподобным движением и передаёт сайту действительный seccode, без написания кода.

1

Установите расширение

Добавьте CapSkip из Chrome Web Store или Firefox Add-ons. Он также работает в Brave, Edge, Opera и Vivaldi.

2

Запустите приложение CapSkip

Установите и откройте десктопное приложение CapSkip. Оно выполняет распознавание на вашем устройстве и работает в паре с расширением.

3

Решает автоматически

Перезагрузите эту страницу, и CapSkip сам вставит кусочек пазла в нужное место. Предпочитаете сохранять контроль? Переключитесь в ручной режим в любой момент.

Для разработчиков

Вариант 2: решение GeeTest v3 с помощью CapSkip SDK

Создаёте автоматизацию, парсер или бота? Используйте SDK для распознавания капчи CapSkip чтобы решать GeeTest v3 из Python, Node.js, PHP или C#. Вы передаёте этой страницы gt, свежий challenge и URL страницы, и CapSkip возвращает решённые значения challenge, validate и seccode, которые вы можете отправить как настоящие.

Captcha ID (gt)
e3a600a044ef0ad51749da5c451adca0
URL страницы
https://capskip.com/ru/captcha-demo/geetest-v3/

Прежде чем начать

CapSkip решает капчу локально. Скачайте и запустите Десктопное приложение CapSkip и держите его открытым в фоновом режиме. SDK обращается к нему по 127.0.0.1:8080, поэтому нет обращений к облаку и нет платы за каждое решение.

challenge истекает

В отличие от site key у reCAPTCHA, для GeeTest v3 нужны два значения. gt выше статично и никогда не меняется, но challenge одноразовый и умирает примерно через минуту, и он сгорает в тот момент, когда виджет его загружает. Получайте свежий непосредственно перед каждым решением. Именно это и делает шаг 2.

1

Установите SDK

Добавьте официальный клиент CapSkip в свой проект.

pip install capskip
npm install capskip
composer require capskip/capskip
dotnet add package CapSkip
2

Получите свежие gt и challenge

Эта страница регистрирует свой challenge GeeTest на стороне сервера и выводит нужный ей nonce во встроенном capskipCaptcha объект. Прочитайте его, затем запросите у страницы собственное задание, чтобы то, которое использует виджет, осталось нетронутым.

import json, re, requests

PAGE = "https://capskip.com/ru/captcha-demo/geetest-v3/"
AJAX = "https://capskip.com/wp-admin/admin-ajax.php"

session = requests.Session()
html = session.get(PAGE).text

# The page prints its ajax nonce and page id in an inline capskipCaptcha object
cfg = json.loads(re.search(r"capskipCaptcha\s*=\s*(\{.*\});", html).group(1))

# Register a fresh challenge (single use, expires in about a minute)
data = session.post(AJAX, data={
    "action": "capskip_geetest_register",
    "nonce": cfg["nonce"],
    "post_id": cfg["postId"],
}).json()["data"]

gt, challenge = data["gt"], data["challenge"]
print(gt, challenge)
const PAGE = 'https://capskip.com/ru/captcha-demo/geetest-v3/';
const AJAX = 'https://capskip.com/wp-admin/admin-ajax.php';

const html = await (await fetch(PAGE)).text();

// The page prints its ajax nonce and page id in an inline capskipCaptcha object
const cfg = JSON.parse(html.match(/capskipCaptcha\s*=\s*(\{.*\});/)[1]);

// Register a fresh challenge (single use, expires in about a minute)
const res = await fetch(AJAX, {
  method: 'POST',
  headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
  body: new URLSearchParams({
    action: 'capskip_geetest_register',
    nonce: cfg.nonce,
    post_id: cfg.postId,
  }),
});

const { gt, challenge } = (await res.json()).data;
console.log(gt, challenge);
<?php
$page = 'https://capskip.com/ru/captcha-demo/geetest-v3/';
$ajax = 'https://capskip.com/wp-admin/admin-ajax.php';

$html = file_get_contents($page);

// The page prints its ajax nonce and page id in an inline capskipCaptcha object
preg_match('/capskipCaptcha\s*=\s*(\{.*\});/', $html, $m);
$cfg = json_decode($m[1], true);

// Register a fresh challenge (single use, expires in about a minute)
$res = file_get_contents($ajax, false, stream_context_create([
    'http' => [
        'method'  => 'POST',
        'header'  => 'Content-Type: application/x-www-form-urlencoded',
        'content' => http_build_query([
            'action'  => 'capskip_geetest_register',
            'nonce'   => $cfg['nonce'],
            'post_id' => $cfg['postId'],
        ]),
    ],
]));

$data = json_decode($res, true)['data'];
$gt = $data['gt'];
$challenge = $data['challenge'];
echo $gt, ' ', $challenge;
using System.Text.Json.Nodes;
using System.Text.RegularExpressions;

const string Page = "https://capskip.com/ru/captcha-demo/geetest-v3/";
const string Ajax = "https://capskip.com/wp-admin/admin-ajax.php";

var http = new HttpClient();
var html = await http.GetStringAsync(Page);

// The page prints its ajax nonce and page id in an inline capskipCaptcha object
var cfg = JsonNode.Parse(Regex.Match(html, @"capskipCaptcha\s*=\s*(\{.*\});").Groups[1].Value)!;

// Register a fresh challenge (single use, expires in about a minute)
var form = new FormUrlEncodedContent(new Dictionary<string, string> {
    ["action"] = "capskip_geetest_register",
    ["nonce"] = cfg["nonce"]!.ToString(),
    ["post_id"] = cfg["postId"]!.ToString(),
});
var res = await http.PostAsync(Ajax, form);
var data = JsonNode.Parse(await res.Content.ReadAsStringAsync())!["data"]!;

string gt = data["gt"]!.ToString();
string challenge = data["challenge"]!.ToString();
Console.WriteLine($"{gt} {challenge}");

Вы получаете со страницы её gt плюс новый 32-символьный challenge. Решите её сразу же.

3

Решите GeeTest v3 и получите три значения

Передайте gt, challenge который вы только что зарегистрировали, и этой страницы url в geetest(). CapSkip перетаскивает элемент пазла в прорезь и возвращает решённый triplet.

from capskip import CapSkip

# Connect to the CapSkip app running on your machine
solver = CapSkip(host="127.0.0.1", port=8080)

# Solve the GeeTest v3 slider on this page
result = solver.geetest(
    gt=gt,
    challenge=challenge,
    url="https://capskip.com/ru/captcha-demo/geetest-v3/",
)

print(result["challenge"])   # geetest_challenge
print(result["validate"])    # geetest_validate
print(result["seccode"])     # geetest_seccode
const { CapSkip } = require('capskip');

// Connect to the CapSkip app running on your machine
const solver = new CapSkip({ host: '127.0.0.1', port: 8080 });

// Solve the GeeTest v3 slider on this page
const result = await solver.geetest(
  gt,
  challenge,
  'https://capskip.com/ru/captcha-demo/geetest-v3/',
);

console.log(result.challenge); // geetest_challenge
console.log(result.validate);  // geetest_validate
console.log(result.seccode);   // geetest_seccode
<?php
require 'vendor/autoload.php';

use CapSkip\CapSkip;

// Connect to the CapSkip app running on your machine
$solver = new CapSkip(['host' => '127.0.0.1', 'port' => 8080]);

// Solve the GeeTest v3 slider on this page
$result = $solver->geetest(
    $gt,
    $challenge,
    'https://capskip.com/ru/captcha-demo/geetest-v3/'
);

echo $result['challenge'];  // geetest_challenge
echo $result['validate'];   // geetest_validate
echo $result['seccode'];    // geetest_seccode
using CapSkip;

// Connect to the CapSkip app running on your machine
var solver = new CapSkipClient(host: "127.0.0.1", port: 8080);

// Solve the GeeTest v3 slider on this page
var result = await solver.GeetestAsync(
    gt,
    challenge,
    "https://capskip.com/ru/captcha-demo/geetest-v3/");

Console.WriteLine(result.Challenge);  // geetest_challenge
Console.WriteLine(result.Validate);   // geetest_validate
Console.WriteLine(result.Seccode);    // geetest_seccode

Вы получаете challenge, validate и seccode, готовый к отправке.

4

Используйте три значения

Отправьте триплет обратно под теми именами, которые использует сам виджет. На этой странице это тот же вызов admin-ajax, что и Проверить шаг, который проверяет seccode через GeeTest, прежде чем он станет зелёным.

// The three values GeeTest returns, exactly as the widget produces them
const payload = {
  geetest_challenge: result.challenge,
  geetest_validate:  result.validate,
  geetest_seccode:   result.seccode,
};

// Send them to whatever endpoint the site verifies with, then submit the form.
// This demo posts challenge, validate and seccode to admin-ajax.php with
// action=capskip_captcha_verify and provider=geetest_v3.
Дополнительно

Использование CapSkip на других сайтах с GeeTest v3

Чтобы решить GeeTest v3 где угодно, вам нужны три вещи со страницы:

  • gt: публичный captcha ID, статичный для сайта. Это gt query-параметр в вызовах виджета к api.geetest.com/gettype.php и get.php.
  • challenge: одноразовое значение, которое приходит из собственного запроса init или register сайта, обычно в виде небольшого JSON-ответа рядом с gt. Повторяйте этот запрос перед каждым решением, чтобы получить свежую капчу.
  • URL страницы: полный адрес страницы.

Региональные API-серверы и прокси

Некоторые сайты привязаны к региональному endpoint GeeTest, например api-na.geetest.com. Передайте его как api_server через HTTP API, когда это так. proxy (proxy и proxytype) также поддерживается, что помогает, когда сайт привязывает challenge к вашему IP.

result = solver.geetest(
    gt="GT_FROM_PAGE",
    challenge="FRESH_CHALLENGE",   # register a new one right before every solve
    url="https://example.com/login",
)

challenge = result["challenge"]   # geetest_challenge
validate = result["validate"]     # geetest_validate
seccode = result["seccode"]       # geetest_seccode
const result = await solver.geetest(
  'GT_FROM_PAGE',
  'FRESH_CHALLENGE',   // register a new one right before every solve
  'https://example.com/login',
);

const { challenge, validate, seccode } = result;
$result = $solver->geetest(
    'GT_FROM_PAGE',
    'FRESH_CHALLENGE',   // register a new one right before every solve
    'https://example.com/login'
);

$challenge = $result['challenge'];  // geetest_challenge
$validate = $result['validate'];    // geetest_validate
$seccode = $result['seccode'];      // geetest_seccode
var result = await solver.GeetestAsync(
    "GT_FROM_PAGE",
    "FRESH_CHALLENGE",   // register a new one right before every solve
    "https://example.com/login");

string challenge = result.Challenge;  // geetest_challenge
string validate = result.Validate;    // geetest_validate
string seccode = result.Seccode;      // geetest_seccode

Если решение возвращается отклонённым, обычно виной всему устаревшая проверка: он уже был использован страницей или пролежал неиспользованным более минуты.

Не используете Python, Node.js, PHP или C#? SDK представляют собой всего лишь обёртки над HTTP API CapSkip (стандартный in.php / res.php эндпоинты с method=geetest), так что вы можете решать GeeTest v3 из любой язык, фреймворк или инструмент. См. Справочник по API GeeTest v3.

Без изменений в коде

Вариант 3: направьте существующий код сервиса-решателя в CapSkip

Уже решаете GeeTest v3 через сервис с оплатой за капчу, такой как 2Captcha, Anti-Captcha или CapMonster? Вам не нужно переписывать ни строки. Приложение CapSkip включает эмулятор сервиса который локально говорит на собственных API этих сервисов: выберите используемый сервис, нажмите Добавить в файл hosts, и на каждый запрос, который ваш бот, парсер или готовый инструмент уже отправляет ему, отвечает CapSkip на вашей собственной машине, по фиксированной цене вместо счёта за каждое решение.

1

Выберите свой сервис

Откройте приложение CapSkip и выберите сервис, с которым уже работает ваш код: 2Captcha, RuCaptcha, Anti-Captcha, CapMonster Cloud, CapSolver, DeathByCaptcha, SolveCaptcha или Captchas.io.

2

Добавить в файл hosts

Один клик в приложении направляет домен этого сервиса на CapSkip, поэтому вызовы, которые делает ваш инструмент, обрабатываются на вашей машине, а не уходят к платному API.

3

Запускайте свой инструмент без изменений

Тот же ключ API, тот же запрос, тот же цикл опроса. CapSkip отвечает в собственном формате этого сервиса, и ваш код получает обратно решённую капчу, значения validate и seccode.

Ничего из приведённого ниже не меняется при переходе. Это тот же вызов, который ваш код делает сегодня, за исключением того, что GeeTest v3 теперь решается локально, а решённые значения challenge, validate и seccode возвращаются из CapSkip:

POST https://2captcha.com/in.php
     key=YOUR_EXISTING_API_KEY
     method=geetest
     gt=e3a600a044ef0ad51749da5c451adca0
     challenge=FRESH_CHALLENGE_FROM_THE_PAGE
     pageurl=https://capskip.com/ru/captcha-demo/geetest-v3/

GET  https://2captcha.com/res.php?key=YOUR_EXISTING_API_KEY&action=get&id=2122988149
     {"geetest_challenge":"…","geetest_validate":"…","geetest_seccode":"…"}

Клиентские библиотеки работают так же: в стиле Anti-Captcha createTask / getTaskResult пара, или любая обёртка, построенная на одном из этих сервисов, продолжает работать, как только включён эмулятор. Полный справочник по запросам и ответам находится в Документация по API CapSkip.

Об этом демо GeeTest v3

Эта страница работает как живая Демо GeeTest v3 где вы можете протестировать, как работает головоломка со сдвигом фрагмента на место, и увидеть её решение в реальном времени. GeeTest v3 представляет собой слайдер-капчу, которую вы встречаете на формах входа и регистрации по всему миру: из картинки вырезается фрагмент, и вы перетаскиваете его обратно в пробел. Решите её, и GeeTest возвращает три значения, geetest_challenge, geetest_validate и geetest_seccode, который ваш сервер сверяет с GeeTest, прежде чем доверять запросу.

Разработчики, тестировщики и инженеры по автоматизации могут использовать эту тестовую страницу GeeTest v3, чтобы увидеть, как регистрируется задача, срабатывает слайдер и возвращается триплет, и оценить, как CapSkip решает GeeTest v3. Нужно ли вам решить GeeTest один раз или автоматизировать тысячи решений, CapSkip работает как Решение для GeeTest который работает тремя способами: без кода расширение для распознавания капчи для Chrome и Firefox, и SDK для распознавания капчи для Python, Node.js, PHP и C#, а также готовую эмуляцию сервисов распознавания капчи, за которые вы, возможно, сегодня платите за каждое решение, и всё это с безлимитным решением по единой фиксированной цене. Все три работают на одном и том же десктопном AI распознавание капчи, устанавливается один раз и работает на вашей машине, поэтому ничто не ставится в очередь на удалённом сервере и ничто не тарифицируется за каждое решение.

Могу ли я сохранить свой существующий код 2Captcha или Anti-Captcha?
Да. Приложение CapSkip эмулирует API 2Captcha, RuCaptcha, Anti-Captcha, CapMonster Cloud, CapSolver, DeathByCaptcha и SolveCaptcha. Выберите свой сервис в приложении, нажмите «Add to hosts file», и запросы, которые ваш код уже отправляет, решаются локально в CapSkip, без изменений в коде и без платы за каждое решение.
Как решить GeeTest v3?
Установите Расширение CapSkip или SDK, запустите десктопное приложение CapSkip, и CapSkip вернёт валидные challenge, validate и seccode для gt и challenge, которые вы ему передадите. Расширение само передвигает элемент пазла на странице, а SDK позволяет решать GeeTest v3 из вашего собственного кода.
Можно ли обойти GeeTest v3?
Да. CapSkip, решение для GeeTest v3, определяет, где находится зазор, перетаскивает в него фрагмент и выдаёт вам тройку geetest_challenge, geetest_validate и geetest_seccode, которую вы можете отправить как реальный пользователь.
Почему для каждого решения нужен новый challenge?
GeeTest v3 разделяет свои параметры на два. gt служит статическим идентификатором сайта, а challenge одноразовый: он истекает примерно за минуту, и загрузка виджета его расходует. Регистрируйте новый challenge непосредственно перед каждым решением, ровно как в шаге 2 выше, иначе GeeTest отклонит ответ.
Насколько быстро CapSkip решает GeeTest v3?
CapSkip обычно возвращает триплет GeeTest v3 за несколько секунд. Каждое решение выполняется локально на вашем устройстве, поэтому ничего не ставится в очередь на удалённом сервере, что здесь важно, ведь капча быстро истекает.
Можно ли использовать CapSkip с другими языками программирования?
Да. Помимо SDK для Python, Node.js, PHP и C#, CapSkip предоставляет стандартный HTTP API, так что вы можете решать GeeTest v3 на любом языке, фреймворке или инструменте. См. Справочник по API GeeTest v3.
Является ли CapSkip бесплатным сервисом распознавания GeeTest?
Расширение устанавливается бесплатно, а пробный доступ за один доллар даёт вам полный доступ на семь дней с 1 000 решений. Платные лицензии открывают безлимитное решение по единой фиксированной цене, без платы за каждую капчу.
ЦеныВойти