diff --git a/.github/workflows/build_docker.yml b/.github/workflows/build_docker.yml index 2565cca..22d0a5e 100644 --- a/.github/workflows/build_docker.yml +++ b/.github/workflows/build_docker.yml @@ -37,7 +37,7 @@ jobs: images: lanqian528/chat2api tags: | type=raw,value=latest,enable={{is_default_branch}} - type=raw,value=v1.5.6 + type=raw,value=v1.5.7 - name: Build and push uses: docker/build-push-action@v5 diff --git a/README.md b/README.md index 52735c1..636e2e5 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ ## 功能 -### 最新版 v1.5.6 +### 最新版 v1.5.7 > 已完成 > - [x] 流式、非流式传输 diff --git a/chat2api.py b/chat2api.py index 1233a0c..09e8113 100644 --- a/chat2api.py +++ b/chat2api.py @@ -134,16 +134,17 @@ async def error_tokens(): if enable_gateway: @app.get("/", response_class=HTMLResponse) async def chatgpt(request: Request): - seed_token = request.query_params.get("seed") - if not seed_token: - seed_token = request.cookies.get("seed_token") - if not seed_token: - seed_token = str(int(time.time())) - req_token = get_req_token(seed_token) + token = request.query_params.get("token") + if not token: + token = request.cookies.get("token") + if not token: + response = templates.TemplateResponse("login.html", {"request": request}) + return response + req_token = get_req_token(token) seed_token = await verify_token(req_token) - response = templates.TemplateResponse("chatgpt.html", {"request": request, "access_token": seed_token}) - response.set_cookie("seed_token", value=seed_token) + response = templates.TemplateResponse("chatgpt.html", {"request": request, "token": token}) + response.set_cookie("token", value=seed_token) return response @@ -224,7 +225,9 @@ if enable_gateway: for redirect_path in redirect_paths: if redirect_path in path: redirect_url = str(request.base_url) - return RedirectResponse(url=f"{redirect_url}?seed={int(time.time())}", status_code=302) + response = RedirectResponse(url=f"{redirect_url}", status_code=302) + response.delete_cookie("token") + return response return await chatgpt_reverse_proxy(request, path) else: diff --git a/chatgpt/reverseProxy.py b/chatgpt/reverseProxy.py index 9d701d4..b524858 100644 --- a/chatgpt/reverseProxy.py +++ b/chatgpt/reverseProxy.py @@ -101,14 +101,14 @@ async def chatgpt_reverse_proxy(request: Request, path: str): "sec-fetch-site": "same-origin", }) - seed_token = headers.get("authorization", "").replace("Bearer ", "") - if seed_token: - req_token = get_req_token(seed_token) + token = headers.get("authorization", "").replace("Bearer ", "") + if token: + req_token = get_req_token(token) access_token = await verify_token(req_token) if access_token.startswith("eyJhbGciOi"): headers.update({"authorization": access_token}) else: - req_token = get_req_token(None, seed_token) + req_token = get_req_token(None, token) access_token = await verify_token(req_token) headers.update({"authorization": access_token}) else: diff --git a/templates/chatgpt.html b/templates/chatgpt.html index 64b35a7..89f67b6 100644 --- a/templates/chatgpt.html +++ b/templates/chatgpt.html @@ -4309,7 +4309,7 @@ "queryKey": ["session"], "state": { "data": { - "accessToken": "{{ access_token }}", + "accessToken": "{{ token }}", "authProvider": "login-web", "user": {} }, @@ -4329,7 +4329,7 @@ }, "isAndroidChrome": false, "isElectron": false, - "isIos": false + "isIos": true }, "routes/_conversation": { "prefetchSearch": null diff --git a/templates/login.html b/templates/login.html new file mode 100644 index 0000000..2ad8dd3 --- /dev/null +++ b/templates/login.html @@ -0,0 +1,84 @@ + + + + + + 登录 + + + + +
+

登录

+ +

+ 非 + RT + 与 + AT + 的输入,将作为 + Seed + 随机抽取后台账号 +

+
+ + + + + + diff --git a/utils/config.py b/utils/config.py index 4cff663..f4246ad 100644 --- a/utils/config.py +++ b/utils/config.py @@ -52,7 +52,7 @@ proxy_url_list = proxy_url.split(',') if proxy_url else [] user_agents_list = ast.literal_eval(user_agents) logger.info("-" * 60) -logger.info("Chat2Api 1.5.6 | https://github.com/lanqian528/chat2api") +logger.info("Chat2Api 1.5.7 | https://github.com/lanqian528/chat2api") logger.info("-" * 60) logger.info("Environment variables:") logger.info("API_PREFIX: " + str(api_prefix))