From 6820a421ab2081a7572f3eeaf3d40d5555af226c Mon Sep 17 00:00:00 2001 From: lanqian528 <5499636+lanqian528@users.noreply.github.com> Date: Sun, 23 Mar 2025 22:30:49 +0800 Subject: [PATCH 1/6] v1.8.6-beta1 --- chatgpt/ChatService.py | 2 +- chatgpt/proofofWork.py | 7 +++++-- gateway/backend.py | 4 ++-- requirements.txt | 3 ++- version.txt | 2 +- 5 files changed, 11 insertions(+), 7 deletions(-) diff --git a/chatgpt/ChatService.py b/chatgpt/ChatService.py index 328eabb..3cb3c67 100644 --- a/chatgpt/ChatService.py +++ b/chatgpt/ChatService.py @@ -183,7 +183,7 @@ async def get_chat_requirements(self): url = f'{self.base_url}/sentinel/chat-requirements' headers = self.base_headers.copy() try: - config = get_config(self.user_agent) + config = get_config(self.user_agent, self.req_token) p = get_requirements_token(config) data = {'p': p} r = await self.ss.post(url, headers=headers, json=data, timeout=5) diff --git a/chatgpt/proofofWork.py b/chatgpt/proofofWork.py index b5bee37..d6aa866 100644 --- a/chatgpt/proofofWork.py +++ b/chatgpt/proofofWork.py @@ -8,6 +8,7 @@ from html.parser import HTMLParser import pybase64 +import diskcache as dc from utils.Logger import logger from utils.configs import conversation_only @@ -15,6 +16,7 @@ cores = [8, 16, 24, 32] timeLayout = "%a %b %d %Y %H:%M:%S" +cache = dc.Cache('./data/pow_config_cache') cached_scripts = [] cached_dpl = "" cached_time = 0 @@ -430,9 +432,10 @@ def get_parse_time(): return now.strftime(timeLayout) + " GMT-0500 (Eastern Standard Time)" -def get_config(user_agent): +@cache.memoize(expire=3600 * 24 * 7) +def get_config(user_agent, req_token=None): config = [ - random.randint(1080, 1440+1080), + random.choice([1920 + 1080, 2560 + 1440, 1920 + 1200, 2560 + 1600]), get_parse_time(), 4294705152, 0, diff --git a/gateway/backend.py b/gateway/backend.py index 635b7a1..a3af471 100644 --- a/gateway/backend.py +++ b/gateway/backend.py @@ -306,7 +306,7 @@ async def sentinel_chat_conversations(request: Request): clients = client try: - config = get_config(user_agent) + config = get_config(user_agent, session_id) p = get_requirements_token(config) data = {'p': p} r = await clients.post(f'{host_url}/backend-api/sentinel/chat-requirements', headers=headers, json=data, @@ -406,7 +406,7 @@ async def chat_conversations(request: Request): sentinel_tokens = openai_sentinel_tokens_cache.get(req_token, {}) openai_sentinel_tokens_cache.pop(req_token, None) if not sentinel_tokens: - config = get_config(user_agent) + config = get_config(user_agent, session_id) p = get_requirements_token(config) data = {'p': p} r = await clients.post(f'{host_url}/backend-api/sentinel/chat-requirements', headers=headers, json=data, diff --git a/requirements.txt b/requirements.txt index dba48a1..085b8c5 100644 --- a/requirements.txt +++ b/requirements.txt @@ -10,4 +10,5 @@ pybase64 jinja2 APScheduler ua-generator -pyjwt \ No newline at end of file +pyjwt +diskcache \ No newline at end of file diff --git a/version.txt b/version.txt index 89800ce..e76ee2f 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.8.5-beta2 \ No newline at end of file +1.8.6-beta1 \ No newline at end of file From 4cdcbcf84ff29877d26cbd54fe18938dc1c65c55 Mon Sep 17 00:00:00 2001 From: lanqian528 <5499636+lanqian528@users.noreply.github.com> Date: Tue, 25 Mar 2025 18:17:52 +0800 Subject: [PATCH 2/6] v1.8.6-beta2 --- chatgpt/ChatService.py | 2 +- gateway/backend.py | 13 +++++++++---- version.txt | 2 +- 3 files changed, 11 insertions(+), 6 deletions(-) diff --git a/chatgpt/ChatService.py b/chatgpt/ChatService.py index 3cb3c67..163cd9e 100644 --- a/chatgpt/ChatService.py +++ b/chatgpt/ChatService.py @@ -211,7 +211,7 @@ async def get_chat_requirements(self): try: if turnstile_solver_url: res = await self.s.post( - turnstile_solver_url, json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx} + turnstile_solver_url, json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx, "ua": self.user_agent} ) self.turnstile_token = res.json().get("t") except Exception as e: diff --git a/gateway/backend.py b/gateway/backend.py index a3af471..d33edaf 100644 --- a/gateway/backend.py +++ b/gateway/backend.py @@ -269,6 +269,7 @@ async def edge(): if no_sentinel: openai_sentinel_tokens_cache = {} + openai_sentinel_cookies_cache = {} @app.post("/backend-api/sentinel/chat-requirements") async def sentinel_chat_conversations(request: Request): @@ -309,8 +310,12 @@ async def sentinel_chat_conversations(request: Request): config = get_config(user_agent, session_id) p = get_requirements_token(config) data = {'p': p} - r = await clients.post(f'{host_url}/backend-api/sentinel/chat-requirements', headers=headers, json=data, - timeout=10) + for cookie in openai_sentinel_cookies_cache.get(req_token, []): + clients.session.cookies.set(**cookie) + r = await clients.post(f'{host_url}/backend-api/sentinel/chat-requirements', headers=headers, json=data, timeout=10) + oai_sc = r.cookies.get("oai-sc") + if oai_sc: + openai_sentinel_cookies_cache[req_token] = [{"name": "oai-sc", "value": oai_sc}] if r.status_code != 200: raise HTTPException(status_code=r.status_code, detail="Failed to get chat requirements") resp = r.json() @@ -321,7 +326,7 @@ async def sentinel_chat_conversations(request: Request): try: if turnstile_solver_url: res = await client.post(turnstile_solver_url, - json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx}) + json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx, "ua": user_agent}) turnstile_token = res.json().get("t") except Exception as e: logger.info(f"Turnstile ignored: {e}") @@ -419,7 +424,7 @@ async def chat_conversations(request: Request): try: if turnstile_solver_url: res = await client.post(turnstile_solver_url, - json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx}) + json={"url": "https://chatgpt.com", "p": p, "dx": turnstile_dx, "ua": user_agent}) turnstile_token = res.json().get("t") except Exception as e: logger.info(f"Turnstile ignored: {e}") diff --git a/version.txt b/version.txt index e76ee2f..738087d 100644 --- a/version.txt +++ b/version.txt @@ -1 +1 @@ -1.8.6-beta1 \ No newline at end of file +1.8.6-beta2 \ No newline at end of file From 7cb6e5714394ef55a144663323f3cc7be6fbd046 Mon Sep 17 00:00:00 2001 From: lanqian528 <5499636+lanqian528@users.noreply.github.com> Date: Wed, 26 Mar 2025 19:10:33 +0800 Subject: [PATCH 3/6] v1.8.7-beta1 update UI --- gateway/backend.py | 43 + templates/chatgpt.html | 443 +- templates/chatgpt_context_1.json | 6886 +++++++++++-------- templates/chatgpt_context_2.json | 178 +- templates/gpts_context.json | 10423 +++++++++++++++-------------- version.txt | 2 +- 6 files changed, 10166 insertions(+), 7809 deletions(-) diff --git a/gateway/backend.py b/gateway/backend.py index d33edaf..27c8817 100644 --- a/gateway/backend.py +++ b/gateway/backend.py @@ -262,6 +262,49 @@ async def get_me(request: Request): return Response(content=json.dumps(me, indent=4), media_type="application/json") +@app.get("/backend-api/tasks") +async def get_me(request: Request): + token = request.headers.get("Authorization", "").replace("Bearer ", "") + if len(token) == 45 or token.startswith("eyJhbGciOi"): + return await chatgpt_reverse_proxy(request, "backend-api/tasks") + else: + tasks = { + "tasks": [], + "cursor": None + } + return Response(content=json.dumps(tasks, indent=4), media_type="application/json") + + +@app.get("/backend-api/user_system_messages") +async def get_me(request: Request): + token = request.headers.get("Authorization", "").replace("Bearer ", "") + if len(token) == 45 or token.startswith("eyJhbGciOi"): + return await chatgpt_reverse_proxy(request, "backend-api/user_system_messages") + else: + user_system_messages = { + "object": "user_system_message_detail", + "enabled": True, + "about_user_message": "", + "about_model_message": "", + "name_user_message": "", + "role_user_message": "", + "traits_model_message": "", + "other_user_message": "", + "disabled_tools": [] + } + return Response(content=json.dumps(user_system_messages, indent=4), media_type="application/json") + + +@app.get("/backend-api/memories") +async def get_me(request: Request): + token = request.headers.get("Authorization", "").replace("Bearer ", "") + if len(token) == 45 or token.startswith("eyJhbGciOi"): + return await chatgpt_reverse_proxy(request, "backend-api/memories") + else: + memories = {"memories":[],"memory_max_tokens":10000,"memory_num_tokens":0} + return Response(content=json.dumps(memories, indent=4), media_type="application/json") + + @app.post("/backend-api/edge") async def edge(): return Response(status_code=204) diff --git a/templates/chatgpt.html b/templates/chatgpt.html index 30d6e60..2f0cddc 100644 --- a/templates/chatgpt.html +++ b/templates/chatgpt.html @@ -1,13 +1,16 @@ - +
+ + + {% raw %} @@ -20,40 +23,40 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + +