Update captcha configuration
(
request: dict,
token: str = Depends(verify_admin_token)
)
| 1774 | |
| 1775 | @router.post("/api/captcha/config") |
| 1776 | async def update_captcha_config( |
| 1777 | request: dict, |
| 1778 | token: str = Depends(verify_admin_token) |
| 1779 | ): |
| 1780 | """Update captcha configuration""" |
| 1781 | captcha_method = request.get("captcha_method") |
| 1782 | yescaptcha_api_key = request.get("yescaptcha_api_key") |
| 1783 | yescaptcha_base_url = request.get("yescaptcha_base_url") |
| 1784 | yescaptcha_task_type = normalize_yescaptcha_task_type(request.get("yescaptcha_task_type")) |
| 1785 | capmonster_api_key = request.get("capmonster_api_key") |
| 1786 | capmonster_base_url = request.get("capmonster_base_url") |
| 1787 | ezcaptcha_api_key = request.get("ezcaptcha_api_key") |
| 1788 | ezcaptcha_base_url = request.get("ezcaptcha_base_url") |
| 1789 | capsolver_api_key = request.get("capsolver_api_key") |
| 1790 | capsolver_base_url = request.get("capsolver_base_url") |
| 1791 | remote_browser_base_url = request.get("remote_browser_base_url") |
| 1792 | remote_browser_api_key = request.get("remote_browser_api_key") |
| 1793 | remote_browser_timeout = request.get("remote_browser_timeout", 60) |
| 1794 | browser_proxy_enabled = request.get("browser_proxy_enabled", False) |
| 1795 | browser_proxy_url = request.get("browser_proxy_url", "") |
| 1796 | browser_count = request.get("browser_count", 1) |
| 1797 | personal_project_pool_size = request.get("personal_project_pool_size") |
| 1798 | personal_max_resident_tabs = request.get("personal_max_resident_tabs") |
| 1799 | browser_personal_fresh_restart_every_n_solves = request.get( |
| 1800 | "browser_personal_fresh_restart_every_n_solves", |
| 1801 | 10, |
| 1802 | ) |
| 1803 | personal_idle_tab_ttl_seconds = request.get("personal_idle_tab_ttl_seconds") |
| 1804 | |
| 1805 | # 验证浏览器代理URL格式 |
| 1806 | if browser_proxy_enabled and browser_proxy_url: |
| 1807 | is_valid, error_msg = _validate_browser_proxy_url_local(browser_proxy_url) |
| 1808 | if not is_valid: |
| 1809 | return {"success": False, "message": error_msg} |
| 1810 | |
| 1811 | if remote_browser_base_url: |
| 1812 | try: |
| 1813 | remote_browser_base_url = _normalize_http_base_url(remote_browser_base_url) |
| 1814 | except RuntimeError as e: |
| 1815 | return {"success": False, "message": str(e)} |
| 1816 | |
| 1817 | try: |
| 1818 | remote_browser_timeout = max(5, int(remote_browser_timeout or 60)) |
| 1819 | except Exception: |
| 1820 | return {"success": False, "message": "远程打码超时时间必须是整数秒"} |
| 1821 | try: |
| 1822 | browser_count = max(1, min(20, int(browser_count or 1))) |
| 1823 | except Exception: |
| 1824 | return {"success": False, "message": "浏览器实例数量必须是整数"} |
| 1825 | try: |
| 1826 | browser_personal_fresh_restart_every_n_solves = max( |
| 1827 | 0, |
| 1828 | int(browser_personal_fresh_restart_every_n_solves if browser_personal_fresh_restart_every_n_solves is not None else 10), |
| 1829 | ) |
| 1830 | except Exception: |
| 1831 | return {"success": False, "message": "重置码数必须是整数,0 表示禁用"} |
| 1832 | |
| 1833 | if captcha_method == "remote_browser": |
nothing calls this directly
no test coverage detected