# GeeTest v4

Solve GeeTest v4 invisible captcha challenges.


# Overview

GeeTest v4 is an invisible captcha that works behind the scenes. CaptchaSolv returns the validation tokens needed to pass the challenge.


# Task Types

Task Type Description Price
GeeTestV4TaskProxyless Without proxy (recommended) $0.00
GeeTestV4Task With your proxy $0.00

# Parameters

Parameter Type Required Description
websiteURL string Target URL with GeeTest
websiteKey string GeeTest captcha ID
proxy string Required for GeeTestV4Task

# Finding the Captcha ID

Look for GeeTest initialization in page source:

initGeetest4({
    captcha_id: "your_captcha_id_here",
    product: "bind"
});

Or search for:

  • captcha_id
  • gt4.geetest.com
  • initGeetest4

# Example

import requests, json

response = requests.post("https://v1.captchasolv.com/solve", json={
    "clientKey": "YOUR_API_KEY",
    "task": {
        "type": "GeeTestV4TaskProxyless",
        "websiteURL": "https://example.com",
        "websiteKey": "captcha_id_here"
    }
}, timeout=130)

token_data = json.loads(response.json()["solution"]["token"])
# Use: token_data["lot_number"], token_data["captcha_output"], token_data["pass_token"]
const response = await axios.post('https://v1.captchasolv.com/solve', {
    clientKey: 'YOUR_API_KEY',
    task: {
        type: 'GeeTestV4TaskProxyless',
        websiteURL: 'https://example.com',
        websiteKey: 'captcha_id_here'
    }
}, { timeout: 130000 });

const tokenData = JSON.parse(response.data.solution.token);
// Use: tokenData.lot_number, tokenData.captcha_output, tokenData.pass_token

# Response

{
  "errorId": 0,
  "solution": {
    "token": "{\"lot_number\":\"abc123\",\"captcha_output\":\"xyz789\",\"pass_token\":\"token123\",\"gen_time\":\"1706100000\"}"
  },
  "cost": "0.00200"
}

The token field contains JSON with these fields:

Field Description
lot_number Lot number for validation
captcha_output Captcha output token
pass_token Pass token for verification
gen_time Generation timestamp

# Using the Solution

import json

# After solving
geetest = solve_geetest_v4(url, captcha_id)

# Submit to verification endpoint
response = requests.post("https://example.com/api/verify", json={
    "lot_number": geetest["lot_number"],
    "captcha_output": geetest["captcha_output"],
    "pass_token": geetest["pass_token"],
    "gen_time": geetest["gen_time"],
    # ... other form data
})

# Tips

  1. Parse the token - The token field is JSON, parse it to get individual fields
  2. Use immediately - GeeTest tokens expire quickly
  3. Check product type - Some sites use bind, others use float or popup