增加了代理
This commit is contained in:
+52
-5
@@ -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 响应")
|
||||
|
||||
Reference in New Issue
Block a user