fix: 优化启动脚本命令
This commit is contained in:
@@ -10,7 +10,7 @@ from urllib.parse import urlencode
|
||||
import httpx
|
||||
from fastapi import FastAPI, HTTPException, Query, Request
|
||||
from fastapi.middleware.cors import CORSMiddleware
|
||||
from fastapi.responses import HTMLResponse
|
||||
from fastapi.responses import HTMLResponse, Response
|
||||
from pydantic import BaseModel
|
||||
|
||||
try:
|
||||
@@ -431,7 +431,8 @@ def _slider_form_html(key_val: str, data62_val: str, ticket_val: str) -> str:
|
||||
k = html.escape(key_val, quote=True)
|
||||
d = html.escape(data62_val, quote=True)
|
||||
t = html.escape(ticket_val, quote=True)
|
||||
script_src = html.escape(f"{SLIDER_VERIFY_BASE_URL.rstrip('/')}/assets/N_jYM_2V.js", quote=True)
|
||||
# 脚本走本机代理 /auth/slider-assets/...,避免跨域加载 7765 被 CORS 拦截
|
||||
script_src = "/auth/slider-assets/N_jYM_2V.js"
|
||||
return f"""<!DOCTYPE html>
|
||||
<html lang="zh-CN">
|
||||
<head>
|
||||
@@ -477,13 +478,31 @@ def _slider_form_html(key_val: str, data62_val: str, ticket_val: str) -> str:
|
||||
</html>"""
|
||||
|
||||
|
||||
@app.get("/auth/slider-assets/{path:path}")
|
||||
async def slider_asset_proxy(path: str):
|
||||
"""代理 7765 的 assets(如 N_jYM_2V.js),避免跨域加载被 CORS 拦截。"""
|
||||
url = f"{SLIDER_VERIFY_BASE_URL.rstrip('/')}/assets/{path}"
|
||||
try:
|
||||
async with httpx.AsyncClient(timeout=15.0) as client:
|
||||
resp = await client.get(url)
|
||||
if resp.status_code >= 400:
|
||||
raise HTTPException(status_code=resp.status_code, detail=resp.text[:200])
|
||||
media_type = "application/javascript" if path.endswith(".js") else "application/octet-stream"
|
||||
return Response(content=resp.content, media_type=media_type)
|
||||
except HTTPException:
|
||||
raise
|
||||
except Exception as e:
|
||||
logger.warning("Slider asset proxy error: %s", e)
|
||||
raise HTTPException(status_code=502, detail=str(e)) from e
|
||||
|
||||
|
||||
@app.get("/auth/slider-form", response_class=HTMLResponse)
|
||||
async def slider_form(
|
||||
key: str = Query(..., description="Key(提交到第三方滑块)"),
|
||||
data62: str = Query("", description="Data62"),
|
||||
ticket: str = Query(..., description="Original Ticket"),
|
||||
):
|
||||
"""本地滑块验证页:与 7765 同 DOM(#app、keyInput、data62Input、originalTicketInput),加载 7765 的 module 脚本,不用 iframe。"""
|
||||
"""本地滑块验证页:与 7765 同 DOM,脚本经本机代理加载,避免 CORS。"""
|
||||
data62 = _clean_data62(data62)
|
||||
return HTMLResponse(content=_slider_form_html(key, data62, ticket))
|
||||
|
||||
|
||||
Reference in New Issue
Block a user