v1.3.5 add test turnstile

This commit is contained in:
lanqian528 2024-06-29 22:51:26 +08:00
parent c0165755e2
commit 37ccaf9fa3
6 changed files with 278 additions and 11 deletions

View File

@ -37,7 +37,7 @@ jobs:
images: lanqian528/chat2api
tags: |
type=raw,value=latest,enable={{is_default_branch}}
type=raw,value=v1.3.4
type=raw,value=v1.3.5
- name: Build and push
uses: docker/build-push-action@v5

View File

@ -22,7 +22,7 @@
## 功能
### 最新版 v1.3.4
### 最新版 v1.3.5
> 已完成
> - [x] 流式、非流式传输

View File

@ -14,6 +14,7 @@ from chatgpt.authorization import get_req_token, verify_token
from chatgpt.chatFormat import api_messages_to_chat, stream_response, wss_stream_response, format_not_stream_response
from chatgpt.chatLimit import check_is_limit, handle_request_limit
from chatgpt.proofofWork import get_config, get_dpl, get_answer_token, get_requirements_token
from chatgpt.turnstile import process_turnstile
from chatgpt.wssClient import token2wss, set_wss
from utils.Client import Client
from utils.Logger import logger
@ -23,7 +24,7 @@ from utils.config import proxy_url_list, chatgpt_base_url_list, arkose_token_url
class ChatService:
def __init__(self, origin_token=None):
self.user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36 Edg/126.0.0.0"
self.user_agent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36"
self.req_token = get_req_token(origin_token)
self.chat_token = "gAAAAAB"
self.s = None
@ -78,6 +79,7 @@ class ChatService:
self.persona = None
self.arkose_token = None
self.proof_token = None
self.turnstile_token = None
self.chat_headers = None
self.chat_request = None
@ -151,7 +153,8 @@ class ChatService:
headers = self.base_headers.copy()
try:
config = get_config(self.user_agent)
data = {'p': get_requirements_token(config)}
p = get_requirements_token(config)
data = {'p': p}
r = await self.s.post(url, headers=headers, json=data, timeout=5)
if r.status_code == 200:
resp = r.json()
@ -182,11 +185,15 @@ class ChatService:
"code": "model_not_found"
})
# turnstile = resp.get('turnstile', {})
# turnstile_required = turnstile.get('required')
# if turnstile_required:
# logger.info("Turnstile required: ignore")
# raise HTTPException(status_code=403, detail="Turnstile required")
turnstile = resp.get('turnstile', {})
turnstile_required = turnstile.get('required')
if turnstile_required:
turnstile_dx = turnstile.get("dx")
try:
self.turnstile_token = process_turnstile(turnstile_dx, p)
except Exception as e:
logger.info(f"Turnstile ignored: {e}")
# raise HTTPException(status_code=403, detail="Turnstile required")
arkose = resp.get('arkose', {})
arkose_required = arkose.get('required')
@ -259,10 +266,14 @@ class ChatService:
if self.arkose_token:
self.chat_headers['Openai-Sentinel-Arkose-Token'] = self.arkose_token
if self.turnstile_token:
self.chat_headers['Openai-Sentinel-Turnstile-Token'] = self.turnstile_token
if conversation_only:
self.chat_headers.pop('Openai-Sentinel-Chat-Requirements-Token', None)
self.chat_headers.pop('Openai-Sentinel-Proof-Token', None)
self.chat_headers.pop('Openai-Sentinel-Arkose-Token', None)
self.chat_headers.pop('Openai-Sentinel-Turnstile-Token', None)
if "gpt-4-gizmo" in self.origin_model:
gizmo_id = self.origin_model.split("gpt-4-gizmo-")[-1]

View File

@ -492,5 +492,5 @@ if __name__ == "__main__":
cached_scripts.append(
"https://cdn.oaistatic.com/_next/static/cXh69klOLzS0Gy2joLDRS/_ssgManifest.js?dpl=453ebaec0d44c2decab71692e1bfe39be35a24b3")
cached_dpl = "dpl=453ebaec0d44c2decab71692e1bfe39be35a24b3"
config = get_config("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome")
config = get_config("Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/127.0.0.0 Safari/537.36")
get_requirements_token(config)

256
chatgpt/turnstile.py Normal file

File diff suppressed because one or more lines are too long

View File

@ -42,7 +42,7 @@ arkose_token_url_list = arkose_token_url.split(',') if arkose_token_url else []
proxy_url_list = proxy_url.split(',') if proxy_url else []
logger.info("-" * 60)
logger.info("Chat2Api v1.3.4 | https://github.com/lanqian528/chat2api")
logger.info("Chat2Api v1.3.5 | https://github.com/lanqian528/chat2api")
logger.info("-" * 60)
logger.info("Environment variables:")
logger.info("API_PREFIX: " + str(api_prefix))