mirror of
https://github.com/lanqian528/chat2api.git
synced 2026-06-05 21:03:53 +08:00
62 lines
2.8 KiB
Python
62 lines
2.8 KiB
Python
import json
|
|
import random
|
|
import uuid
|
|
|
|
import ua_generator
|
|
from ua_generator.data.version import VersionRange
|
|
from ua_generator.options import Options
|
|
|
|
import utils.globals as globals
|
|
from utils import configs
|
|
|
|
|
|
def get_fp(req_token):
|
|
fp = globals.fp_map.get(req_token, {})
|
|
if fp and fp.get("user-agent") and fp.get("impersonate"):
|
|
if "proxy_url" in fp.keys() and (fp["proxy_url"] is None or fp["proxy_url"] not in configs.proxy_url_list):
|
|
fp["proxy_url"] = random.choice(configs.proxy_url_list) if configs.proxy_url_list else None
|
|
globals.fp_map[req_token] = fp
|
|
with open(globals.FP_FILE, "w", encoding="utf-8") as f:
|
|
json.dump(globals.fp_map, f, indent=4)
|
|
if globals.impersonate_list and "impersonate" in fp.keys() and fp["impersonate"] not in globals.impersonate_list:
|
|
fp["impersonate"] = random.choice(globals.impersonate_list)
|
|
globals.fp_map[req_token] = fp
|
|
with open(globals.FP_FILE, "w", encoding="utf-8") as f:
|
|
json.dump(globals.fp_map, f, indent=4)
|
|
if configs.user_agents_list and "user-agent" in fp.keys() and fp["user-agent"] not in configs.user_agents_list:
|
|
fp["user-agent"] = random.choice(configs.user_agents_list)
|
|
globals.fp_map[req_token] = fp
|
|
with open(globals.FP_FILE, "w", encoding="utf-8") as f:
|
|
json.dump(globals.fp_map, f, indent=4)
|
|
fp = {k.lower(): v for k, v in fp.items()}
|
|
return fp
|
|
else:
|
|
options = Options(version_ranges={
|
|
'chrome': VersionRange(min_version=124),
|
|
'edge': VersionRange(min_version=124),
|
|
})
|
|
ua = ua_generator.generate(
|
|
device=configs.device_tuple if configs.device_tuple else ('desktop'),
|
|
browser=configs.browser_tuple if configs.browser_tuple else ('chrome', 'edge', 'firefox', 'safari'),
|
|
platform=configs.platform_tuple if configs.platform_tuple else ('windows', 'macos'),
|
|
options=options
|
|
)
|
|
fp = {
|
|
"user-agent": ua.text if not configs.user_agents_list else random.choice(configs.user_agents_list),
|
|
"impersonate": random.choice(globals.impersonate_list),
|
|
"proxy_url": random.choice(configs.proxy_url_list) if configs.proxy_url_list else None,
|
|
"oai-device-id": str(uuid.uuid4())
|
|
}
|
|
if ua.device == "desktop" and ua.browser in ("chrome", "edge"):
|
|
fp["sec-ch-ua-platform"] = ua.ch.platform
|
|
fp["sec-ch-ua"] = ua.ch.brands
|
|
fp["sec-ch-ua-mobile"] = ua.ch.mobile
|
|
|
|
if not req_token:
|
|
return fp
|
|
else:
|
|
globals.fp_map[req_token] = fp
|
|
with open(globals.FP_FILE, "w", encoding="utf-8") as f:
|
|
json.dump(globals.fp_map, f, indent=4)
|
|
return fp
|