MCPcopy Create free account
hub / github.com/Tron521/codex-console-temp / test_dynamic_proxy

Function test_dynamic_proxy

src/web/routes/settings.py:266–309  ·  view source on GitHub ↗

测试动态代理 API

(request: DynamicProxySettings)

Source from the content-addressed store, hash-verified

264
265@router.post("/proxy/dynamic/test")
266async def test_dynamic_proxy(request: DynamicProxySettings):
267 """测试动态代理 API"""
268 from ...core.dynamic_proxy import fetch_dynamic_proxy
269
270 if not request.api_url:
271 raise HTTPException(status_code=400, detail="请填写动态代理 API 地址")
272
273 # 若未传入 api_key,使用已保存的
274 api_key = request.api_key or ""
275 if not api_key:
276 settings = get_settings()
277 if settings.proxy_dynamic_api_key:
278 api_key = settings.proxy_dynamic_api_key.get_secret_value()
279
280 proxy_url = fetch_dynamic_proxy(
281 api_url=request.api_url,
282 api_key=api_key,
283 api_key_header=request.api_key_header,
284 result_field=request.result_field,
285 )
286
287 if not proxy_url:
288 return {"success": False, "message": "动态代理 API 返回为空或请求失败"}
289
290 # 用获取到的代理测试连通性
291 import time
292 from curl_cffi import requests as cffi_requests
293 try:
294 proxies = {"http": proxy_url, "https": proxy_url}
295 start = time.time()
296 resp = cffi_requests.get(
297 "https://api.ipify.org?format=json",
298 proxies=proxies,
299 timeout=10,
300 impersonate="chrome110"
301 )
302 elapsed = round((time.time() - start) * 1000)
303 if resp.status_code == 200:
304 ip = resp.json().get("ip", "")
305 return {"success": True, "proxy_url": proxy_url, "ip": ip, "response_time": elapsed,
306 "message": f"动态代理可用,出口 IP: {ip},响应时间: {elapsed}ms"}
307 return {"success": False, "proxy_url": proxy_url, "message": f"代理连接失败: HTTP {resp.status_code}"}
308 except Exception as e:
309 return {"success": False, "proxy_url": proxy_url, "message": f"代理连接失败: {e}"}
310
311
312@router.get("/registration")

Callers

nothing calls this directly

Calls 4

get_settingsFunction · 0.85
fetch_dynamic_proxyFunction · 0.85
getMethod · 0.45
jsonMethod · 0.45

Tested by

no test coverage detected