增加了代理

This commit is contained in:
yml2213
2026-06-21 22:30:30 +08:00
parent 1ce867f3a8
commit 828f9889ed
10 changed files with 317 additions and 49 deletions
+52 -5
View File
@@ -132,16 +132,30 @@ def get_c_s(gt:str, challenge:str, w:str) -> Tuple[list[int],str]:
}
response = requests.get(
'https://apiv6.geetest.com/get.php?gt=' + gt + '&challenge=' + challenge + '&lang=zh-cn&pt=0&client_type=web&w=' + w + '&callback=geetest_' + str(
'https://api.geetest.com/get.php?gt=' + gt + '&challenge=' + challenge + '&lang=zh-cn&pt=0&client_type=web&w=' + w + '&callback=geetest_' + str(
int(round(time.time() * 1000))),
headers=headers,
timeout=REQUEST_TIMEOUT,
)
response.raise_for_status()
# 检查是否是错误响应
if response.text.startswith('{'):
# 直接JSON响应
data = json.loads(response.text)
if 'status' in data and data['status'] == 'error':
raise ValueError(f"极验请求失败: {data.get('user_error', data.get('error', '未知错误'))}")
match = re.search(r'\((.*)\)$', response.text)
if match:
json_str = match.group(1)
return json.loads(json_str)['data']['c'], json.loads(json_str)['data']['s']
data = json.loads(json_str)
# 检查是否是错误响应
if 'status' in data and data['status'] == 'error':
raise ValueError(f"极验请求失败: {data.get('user_error', data.get('error', '未知错误'))}")
return data['data']['c'], data['data']['s']
else:
raise ValueError("无法解析 JSONP 响应")
@@ -212,8 +226,30 @@ def get_picture(gt:str, challenge:str) -> tuple[str, str, list[int], str, str, s
match = re.search(r'\((.*)\)$', response.text)
if match:
json_str = match.group(1)
return json.loads(json_str)['bg'], json.loads(json_str)['fullbg'], json.loads(json_str)['c'], \
json.loads(json_str)['s'], json.loads(json_str)['slice'], json.loads(json_str)['challenge']
data = json.loads(json_str)
# 检查验证码类型
if 'data' in data and isinstance(data['data'], dict):
# 新版极验格式
inner_data = data['data']
return (
inner_data.get('bg', ''),
inner_data.get('fullbg', ''),
inner_data.get('c', []),
inner_data.get('s', ''),
inner_data.get('slice', ''),
inner_data.get('challenge', '')
)
else:
# 旧版极验格式
return (
data.get('bg', ''),
data.get('fullbg', ''),
data.get('c', []),
data.get('s', ''),
data.get('slice', ''),
data.get('challenge', '')
)
else:
raise ValueError("无法解析 JSONP 响应")
@@ -245,6 +281,17 @@ def req_end(gt:str, challenge:str, w:str) -> dict:
if match:
json_str = match.group(1)
data = json.loads(json_str)
return data
print(f"极验验证响应: {data}")
# 检查验证是否成功
if data.get('success') == 1:
return data
else:
# 如果验证失败,返回错误信息
return {
'success': 0,
'message': data.get('message', '验证失败'),
'validate': ''
}
else:
raise ValueError("无法解析 JSONP 响应")