返回提交历史
Modified
g4f/Provider/needs_auth/OpenaiChat.py
+7
-7
Modified
g4f/Provider/openai/har_file.py
+15
-13
XFEstudio/gpt4free
Improve reading .har file in OpenaiChat
1e2c1858
代码差异
2 个文件
+22
-20
@@ -412,7 +412,7 @@ class OpenaiChat(AsyncGeneratorProvider, ProviderModelMixin):
412
412
if "proofofwork" in chat_requirements:
413
413
proofofwork = generate_proof_token(
414
414
**chat_requirements["proofofwork"],
415
user_agent=cls._headers["user-agent"],
415
user_agent=cls._headers.get("user-agent"),
416
416
proof_token=RequestConfig.proof_token
417
417
)
418
418
[debug.log(text) for text in (
@@ -439,15 +439,15 @@ class OpenaiChat(AsyncGeneratorProvider, ProviderModelMixin):
439
439
messages = messages if conversation_id is None else [messages[-1]]
440
440
data["messages"] = cls.create_messages(messages, image_request)
441
441
headers = {
442
"Accept": "text/event-stream",
443
"Content-Type": "application/json",
444
"Openai-Sentinel-Chat-Requirements-Token": chat_token,
445
**cls._headers
442
**cls._headers,
443
"accept": "text/event-stream",
444
"content-type": "application/json",
445
"openai-sentinel-chat-requirements-token": chat_token,
446
446
}
447
447
if RequestConfig.arkose_token:
448
headers["Openai-Sentinel-Arkose-Token"] = RequestConfig.arkose_token
448
headers["openai-sentinel-arkose-token"] = RequestConfig.arkose_token
449
449
if proofofwork is not None:
450
headers["Openai-Sentinel-Proof-Token"] = proofofwork
450
headers["openai-sentinel-proof-token"] = proofofwork
451
451
if need_turnstile and RequestConfig.turnstile_token is not None:
452
452
headers['openai-sentinel-turnstile-token'] = RequestConfig.turnstile_token
453
453
async with session.post(
@@ -63,26 +63,28 @@ def readHAR():
63
63
continue
64
64
for v in harFile['log']['entries']:
65
65
v_headers = get_headers(v)
66
try:
67
if "openai-sentinel-proof-token" in v_headers:
68
RequestConfig.proof_token = json.loads(base64.b64decode(
69
v_headers["openai-sentinel-proof-token"].split("gAAAAAB", 1)[-1].encode()
70
).decode())
71
if "openai-sentinel-turnstile-token" in v_headers:
72
RequestConfig.turnstile_token = v_headers["openai-sentinel-turnstile-token"]
73
except Exception as e:
74
debug.log(f"Read proof token: {e}")
75
66
if arkose_url == v['request']['url']:
76
67
RequestConfig.arkose_request = parseHAREntry(v)
77
elif v['request']['url'] == start_url or v['request']['url'].startswith(conversation_url):
68
elif v['request']['url'].startswith(start_url):
78
69
try:
79
70
match = re.search(r'"accessToken":"(.*?)"', v["response"]["content"]["text"])
80
71
if match:
81
72
RequestConfig.access_token = match.group(1)
82
73
except KeyError:
83
continue
84
RequestConfig.cookies = {c['name']: c['value'] for c in v['request']['cookies']}
85
RequestConfig.headers = v_headers
74
pass
75
try:
76
if "openai-sentinel-proof-token" in v_headers:
77
RequestConfig.headers = v_headers
78
RequestConfig.proof_token = json.loads(base64.b64decode(
79
v_headers["openai-sentinel-proof-token"].split("gAAAAAB", 1)[-1].encode()
80
).decode())
81
if "openai-sentinel-turnstile-token" in v_headers:
82
RequestConfig.turnstile_token = v_headers["openai-sentinel-turnstile-token"]
83
if "authorization" in v_headers:
84
RequestConfig.access_token = v_headers["authorization"].split(" ")[1]
85
RequestConfig.cookies = {c['name']: c['value'] for c in v['request']['cookies']}
86
except Exception as e:
87
debug.log(f"Error on read headers: {e}")
86
88
if RequestConfig.proof_token is None:
87
89
raise NoValidHarFileError("No proof_token found in .har files")
88
90