mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-12-26 12:41:56 +03:00
6ce493d4df
* Fix api streaming, fix AsyncClient, Improve Client class, Some providers fixes, Update models list, Fix some tests, Update model list in Airforce provid er, Add OpenAi image generation url to api, Fix reload and debug in api arguments, Fix websearch in gui * Fix Cloadflare and Pi and AmigoChat provider * Fix conversation support in DDG provider, Add cloudflare bypass with nodriver * Fix unittests without curl_cffi
41 lines
1.5 KiB
Python
41 lines
1.5 KiB
Python
import random
|
||
import hashlib
|
||
import json
|
||
import base64
|
||
from datetime import datetime, timezone
|
||
|
||
def generate_proof_token(required: bool, seed: str = "", difficulty: str = "", user_agent: str = None, proofTokens: list = None):
|
||
if not required:
|
||
return
|
||
|
||
if proofTokens:
|
||
config = proofTokens[-1]
|
||
else:
|
||
screen = random.choice([3008, 4010, 6000]) * random.choice([1, 2, 4])
|
||
# Get current UTC time
|
||
now_utc = datetime.now(timezone.utc)
|
||
parse_time = now_utc.strftime('%a, %d %b %Y %H:%M:%S GMT')
|
||
config = [
|
||
screen, parse_time,
|
||
None, 0, user_agent,
|
||
"https://tcr9i.chat.openai.com/v2/35536E1E-65B4-4D96-9D97-6ADB7EFF8147/api.js",
|
||
"dpl=1440a687921de39ff5ee56b92807faaadce73f13","en","en-US",
|
||
None,
|
||
"plugins−[object PluginArray]",
|
||
random.choice(["_reactListeningcfilawjnerp", "_reactListening9ne2dfo1i47", "_reactListening410nzwhan2a"]),
|
||
random.choice(["alert", "ontransitionend", "onprogress"])
|
||
]
|
||
|
||
diff_len = len(difficulty)
|
||
for i in range(100000):
|
||
config[3] = i
|
||
json_data = json.dumps(config)
|
||
base = base64.b64encode(json_data.encode()).decode()
|
||
hash_value = hashlib.sha3_512((seed + base).encode()).digest()
|
||
|
||
if hash_value.hex()[:diff_len] <= difficulty:
|
||
return "gAAAAAB" + base
|
||
|
||
fallback_base = base64.b64encode(f'"{seed}"'.encode()).decode()
|
||
return "gAAAAABwQ8Lk5FbGpA2NcR9dShT6gYjU7VxZ4D" + fallback_base
|