-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgeetest_v4.py
More file actions
93 lines (70 loc) · 2.63 KB
/
geetest_v4.py
File metadata and controls
93 lines (70 loc) · 2.63 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
import os
import time
import requests
from dotenv import load_dotenv
# Load environment variables from .env file
load_dotenv()
# CapSolver API configuration
CAPSOLVER_API_KEY = os.getenv("CAPSOLVER_API_KEY")
CREATE_TASK_URL = "https://api.capsolver.com/createTask"
GET_RESULT_URL = "https://api.capsolver.com/getTaskResult"
# Target website configuration for Geetest V4
# Replace with your target site values
SITE_URL = "https://example.com"
CAPTCHA_ID = "your_captcha_id_here" # Required for V4
def create_task():
"""Create a Geetest V4 solving task."""
payload = {
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "GeeTestTaskProxyLess",
"websiteURL": SITE_URL,
"captchaId": CAPTCHA_ID
}
}
response = requests.post(CREATE_TASK_URL, json=payload)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Failed to create task: {result.get('errorDescription')}")
return result.get("taskId")
def get_task_result(task_id):
"""Poll for the task result until it's ready."""
payload = {
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
while True:
response = requests.post(GET_RESULT_URL, json=payload)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"Failed to get result: {result.get('errorDescription')}")
status = result.get("status")
if status == "ready":
return result.get("solution")
elif status == "processing":
print("Task is still processing, waiting...")
time.sleep(2)
else:
raise Exception(f"Unknown status: {status}")
def main():
if not CAPSOLVER_API_KEY:
print("Error: CAPSOLVER_API_KEY not found in .env file")
print("Please create a .env file with your API key:")
print("CAPSOLVER_API_KEY=your_api_key_here")
return
print("Creating Geetest V4 solving task...")
print(f"Captcha ID: {CAPTCHA_ID}")
task_id = create_task()
print(f"Task created successfully! Task ID: {task_id}")
print("Waiting for solution...")
solution = get_task_result(task_id)
print("\nSolution received!")
print(f"captcha_id: {solution.get('captcha_id')}")
print(f"captcha_output: {solution.get('captcha_output')}")
print(f"gen_time: {solution.get('gen_time')}")
print(f"lot_number: {solution.get('lot_number')}")
print(f"pass_token: {solution.get('pass_token')}")
print(f"risk_type: {solution.get('risk_type')}")
# Use these values in your target website form submission
if __name__ == "__main__":
main()