mirror of
https://ghfast.top/https://github.com/aeroxw/tick-stock-panel.git
synced 2026-09-12 16:44:15 +08:00
问题(Issue #8): AI API 反代到 Cloudflare 后,OpenAI SDK 默认 UA (OpenAI/Python) 被 Bot Fight Mode 拦截,报 'Your request was blocked'。 方案: 后端始终发送浏览器风格 UA,默认内置 Chrome UA(开箱即用); AI 设置页提供开关 + 随机生成/手动粘贴的自定义 UA。 后端(config.py / settings.py / ai_generator.py / strategy.py): - 新增 ai_user_agent 配置项,默认桌面 Chrome UA - 两处 OpenAI client 创建均注入 default_headers={User-Agent} (ai_generator 实际生成 + strategy 测试连通性) - 空 UA 自动回退内置默认,保证默认状态即绕过拦截 前端(api.ts / AI.tsx): - 自定义 UA 开关:默认关闭(用内置默认),开启才显示输入框 - 随机生成按钮: 产出近期 Chrome 桌面 UA(Win/Mac/Linux 随机) - 已有自定义 UA 时开关默认开启 不影响直连官方 OpenAI/DeepSeek 的用户(官方不校验 UA)。
This commit is contained in:
@@ -58,6 +58,7 @@ def get_settings() -> dict:
|
||||
"has_ai_key": bool(secrets_store.get_ai_key()),
|
||||
"ai_model": secrets_store.get_ai_config("ai_model", settings.ai_model),
|
||||
"ai_daily_token_budget": int(secrets_store.get_ai_config("ai_daily_token_budget", str(settings.ai_daily_token_budget)) or settings.ai_daily_token_budget),
|
||||
"ai_user_agent": secrets_store.get_ai_config("ai_user_agent", settings.ai_user_agent),
|
||||
}
|
||||
|
||||
|
||||
@@ -212,6 +213,7 @@ class AiSettingsIn(BaseModel):
|
||||
api_key: str | None = None
|
||||
model: str = ""
|
||||
daily_token_budget: int = 500_000
|
||||
user_agent: str = ""
|
||||
|
||||
|
||||
@router.post("/ai")
|
||||
@@ -238,6 +240,9 @@ def save_ai_settings(req: AiSettingsIn) -> dict:
|
||||
settings.ai_model = req.model
|
||||
updates["ai_daily_token_budget"] = req.daily_token_budget
|
||||
settings.ai_daily_token_budget = req.daily_token_budget
|
||||
# user_agent 允许清空(回到默认浏览器 UA),故无条件持久化
|
||||
updates["ai_user_agent"] = req.user_agent
|
||||
settings.ai_user_agent = req.user_agent
|
||||
|
||||
if updates:
|
||||
secrets_store.save(updates)
|
||||
|
||||
Reference in New Issue
Block a user