mirror of
https://github.com/xtekky/gpt4free.git
synced 2024-11-26 09:57:24 +03:00
stytch auth udpdate for provider
This commit is contained in:
parent
2fad27b2c5
commit
8add819c3e
@ -65,6 +65,7 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
||||
timeout=(30, timeout)
|
||||
) as session:
|
||||
cookies = await cls.get_cookies(session) if chat_mode != "default" else None
|
||||
|
||||
upload = json.dumps([await cls.upload_file(session, cookies, to_bytes(image), image_name)]) if image else ""
|
||||
headers = {
|
||||
"Accept": "text/event-stream",
|
||||
@ -131,6 +132,7 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
||||
|
||||
@classmethod
|
||||
async def get_cookies(cls, client: StreamSession) -> Cookies:
|
||||
|
||||
if not cls._cookies or cls._cookies_used >= 5:
|
||||
cls._cookies = await cls.create_cookies(client)
|
||||
cls._cookies_used = 0
|
||||
@ -151,8 +153,8 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
||||
}}).encode()).decode()
|
||||
|
||||
def get_auth() -> str:
|
||||
auth_uuid = "507a52ad-7e69-496b-aee0-1c9863c7c8"
|
||||
auth_token = f"public-token-live-{auth_uuid}bb:public-token-live-{auth_uuid}19"
|
||||
auth_uuid = "507a52ad-7e69-496b-aee0-1c9863c7c819"
|
||||
auth_token = f"public-token-live-{auth_uuid}:public-token-live-{auth_uuid}"
|
||||
auth = base64.standard_b64encode(auth_token.encode()).decode()
|
||||
return f"Basic {auth}"
|
||||
|
||||
@ -172,12 +174,12 @@ class You(AsyncGeneratorProvider, ProviderModelMixin):
|
||||
"dfp_telemetry_id": await get_dfp_telemetry_id(),
|
||||
"email": f"{user_uuid}@gmail.com",
|
||||
"password": f"{user_uuid}#{user_uuid}",
|
||||
"dfp_telemetry_id": f"{uuid.uuid4()}",
|
||||
"session_duration_minutes": 129600
|
||||
}
|
||||
) as response:
|
||||
await raise_for_status(response)
|
||||
session = (await response.json())["data"]
|
||||
|
||||
return {
|
||||
"stytch_session": session["session_token"],
|
||||
'stytch_session_jwt': session["session_jwt"],
|
||||
|
@ -4,6 +4,8 @@ import json
|
||||
import os
|
||||
import random
|
||||
import uuid
|
||||
import asyncio
|
||||
import requests
|
||||
|
||||
from ...requests import StreamSession, raise_for_status
|
||||
|
||||
@ -65,8 +67,86 @@ async def sendRequest(tmpArk: arkReq, proxy: str = None):
|
||||
return await response.text()
|
||||
|
||||
async def get_dfp_telemetry_id(proxy: str = None):
|
||||
return str(uuid.uuid4())
|
||||
return await telemetry_id_with_driver(proxy)
|
||||
global chatArks
|
||||
if chatArks is None:
|
||||
chatArks = readHAR()
|
||||
return await sendRequest(random.choice(chatArks), proxy)
|
||||
return await sendRequest(random.choice(chatArks), proxy)
|
||||
|
||||
async def telemetry_id_with_driver(proxy: str = None):
|
||||
from ...debug import logging
|
||||
if logging:
|
||||
print('getting telemetry_id for you.com with nodriver')
|
||||
try:
|
||||
import nodriver as uc
|
||||
from nodriver import start, cdp, loop
|
||||
except ImportError:
|
||||
if logging:
|
||||
print('nodriver not found, random uuid (may fail)')
|
||||
return str(uuid.uuid4())
|
||||
|
||||
CAN_EVAL = False
|
||||
payload_received = False
|
||||
payload = None
|
||||
|
||||
try:
|
||||
browser = await start()
|
||||
tab = browser.main_tab
|
||||
|
||||
async def send_handler(event: cdp.network.RequestWillBeSent):
|
||||
nonlocal CAN_EVAL, payload_received, payload
|
||||
if 'telemetry.js' in event.request.url:
|
||||
CAN_EVAL = True
|
||||
if "/submit" in event.request.url:
|
||||
payload = event.request.post_data
|
||||
payload_received = True
|
||||
|
||||
tab.add_handler(cdp.network.RequestWillBeSent, send_handler)
|
||||
await browser.get("https://you.com")
|
||||
|
||||
while not CAN_EVAL:
|
||||
await tab.sleep(1)
|
||||
|
||||
await tab.evaluate('window.GetTelemetryID("public-token-live-507a52ad-7e69-496b-aee0-1c9863c7c819", "https://telemetry.stytch.com/submit");')
|
||||
|
||||
while not payload_received:
|
||||
await tab.sleep(.1)
|
||||
|
||||
except Exception as e:
|
||||
print(f"Error occurred: {str(e)}")
|
||||
|
||||
finally:
|
||||
try:
|
||||
await tab.close()
|
||||
except Exception as e:
|
||||
print(f"Error occurred while closing tab: {str(e)}")
|
||||
|
||||
try:
|
||||
await browser.stop()
|
||||
except Exception as e:
|
||||
pass
|
||||
|
||||
headers = {
|
||||
'Accept': '*/*',
|
||||
'Accept-Language': 'en,fr-FR;q=0.9,fr;q=0.8,es-ES;q=0.7,es;q=0.6,en-US;q=0.5,am;q=0.4,de;q=0.3',
|
||||
'Connection': 'keep-alive',
|
||||
'Content-type': 'application/x-www-form-urlencoded',
|
||||
'Origin': 'https://you.com',
|
||||
'Referer': 'https://you.com/',
|
||||
'Sec-Fetch-Dest': 'empty',
|
||||
'Sec-Fetch-Mode': 'cors',
|
||||
'Sec-Fetch-Site': 'cross-site',
|
||||
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/123.0.0.0 Safari/537.36',
|
||||
'sec-ch-ua': '"Google Chrome";v="123", "Not:A-Brand";v="8", "Chromium";v="123"',
|
||||
'sec-ch-ua-mobile': '?0',
|
||||
'sec-ch-ua-platform': '"macOS"',
|
||||
}
|
||||
|
||||
proxies = {
|
||||
'http': proxy,
|
||||
'https': proxy} if proxy else None
|
||||
|
||||
response = requests.post('https://telemetry.stytch.com/submit',
|
||||
headers=headers, data=payload, proxies=proxies)
|
||||
|
||||
return (response.text)
|
||||
|
Loading…
Reference in New Issue
Block a user