import requests
import time
import execjs
import json
from datetime import datetime, timezone, timedelta
jscode = ''
with open("demo.js", "r", encoding="utf-8") as f:
jscode = f.read()
jscode = execjs.compile(jscode)
challenge = jscode.call("uuid")
headers = {
"Accept": "*/*",
"Accept-Language": "zh-CN,zh;q=0.9",
"Cache-Control": "no-cache",
"Connection": "keep-alive",
"Pragma": "no-cache",
"Referer": "https://gt4.geetest.com/",
"Sec-Fetch-Dest": "script",
"Sec-Fetch-Mode": "no-cors",
"Sec-Fetch-Site": "same-site",
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/139.0.0.0 Safari/537.36",
"sec-ch-ua": "\"Not;A=Brand\";v=\"99\", \"Google Chrome\";v=\"139\", \"Chromium\";v=\"139\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"Windows\""
}
cookies = {
"captcha_v4_user": "011a9cb06bdd4689975694733321d078",
"sensorsdata2015jssdkcross": "%7B%22distinct_id%22%3A%221984a8102985cf-0b16af714940d38-26011151-2073600-1984a810299111c%22%2C%22first_id%22%3A%22%22%2C%22props%22%3A%7B%7D%2C%22%24device_id%22%3A%221984a8102985cf-0b16af714940d38-26011151-2073600-1984a810299111c%22%7D",
"Hm_lvt_25b04a5e7a64668b9b88e2711fb5f0c4": "1753596626,1753862889",
"_uetvid": "635904806ab011f0ba3ed52cdc6e75e1"
}
captchaid = "99b142aaece96330d0f3ffb565ffb3ef"
url = "https://gcaptcha4.geetest.com/load"
params = {
"captcha_id": captchaid,
"challenge": challenge,
"client_type": "web",
"lang": "zho",
"callback": f"geetest_{int(time.time()*1000)}"
}
response = requests.get(url, headers=headers, cookies=cookies, params=params)
data = json.loads(response.text[response.text.find('{'):-1])
lot_number = data["data"]["lot_number"]
payload = data["data"]["payload"]
process_token = data["data"]["process_token"]
static_path = data["data"]["static_path"]
# 创建当前时间(带有时区信息)
now = datetime.now(timezone(timedelta(hours=8))) # +08:00 时区
# 格式化为指定格式
formatted_time = str(now.isoformat())
url = "https://gcaptcha4.geetest.com/verify"
w = jscode.call("getW", lot_number, captchaid, formatted_time, static_path, payload, process_token)
params = {
"callback": f"geetest_{int(time.time()*1000)}",
"captcha_id": captchaid,
"client_type": "web",
"lot_number": lot_number,
"payload": payload,
"process_token": process_token,
"payload_protocol": "1",
"pt": "1",
"w": w
}
response = requests.get(url, headers=headers, cookies=cookies, params=params)
data = json.loads(response.text[response.text.find('{'):-1])
gen_time = data['data']['seccode']['gen_time']
captcha_output = data['data']['seccode']['captcha_output']
pass_token = data['data']['seccode']['pass_token']
url = "https://gt4.geetest.com/demov4/demo/login"
params = {
"captcha_id": captchaid,
"lot_number": lot_number,
"pass_token": pass_token,
"gen_time": gen_time,
"captcha_output": captcha_output
}
response = requests.get(url, headers=headers, params=params)
print(response.json())