diff --git a/app/helper/browser.py b/app/helper/browser.py index c98b4726..54dbe5ab 100644 --- a/app/helper/browser.py +++ b/app/helper/browser.py @@ -30,7 +30,7 @@ class PlaywrightHelper: @staticmethod def __flaresolverr_request(url: str, cookies: Optional[str] = None, - proxy_url: Optional[str] = None, + proxy_config: Optional[dict] = None, timeout: Optional[int] = 60) -> Optional[dict]: """ 调用 FlareSolverr 解决 Cloudflare 并返回 solution 结果 @@ -51,8 +51,13 @@ class PlaywrightHelper: payload["cookies"] = cookie_parse(cookies, array=True) except Exception as e: logger.debug(f"解析 cookies 失败,忽略: {str(e)}") - if proxy_url: - payload["proxy"] = {"url": proxy_url} + if proxy_config and proxy_config.get("server"): + proxy_payload = {"url": proxy_config["server"]} + if proxy_config.get("username"): + proxy_payload["username"] = proxy_config["username"] + if proxy_config.get("password"): + proxy_payload["password"] = proxy_config["password"] + payload["proxy"] = proxy_payload try: fs_api = settings.FLARESOLVERR_URL.rstrip("/") + "/v1" @@ -97,11 +102,8 @@ class PlaywrightHelper: fs_cookie_header = None fs_ua = None if settings.BROWSER_EMULATION == "flaresolverr": - proxy_url = None - if proxies and isinstance(proxies, dict): - proxy_url = proxies.get("server") solution = self.__flaresolverr_request(url=url, cookies=cookies, - proxy_url=proxy_url, timeout=timeout) + proxy_config=proxies, timeout=timeout) if solution: fs_cookie_header = self.__fs_cookie_str(solution.get("cookies", [])) fs_ua = solution.get("userAgent") @@ -158,11 +160,8 @@ class PlaywrightHelper: # 如果配置为 FlareSolverr,则直接调用获取页面源码 if settings.BROWSER_EMULATION == "flaresolverr": try: - proxy_url = None - if proxies and isinstance(proxies, dict): - proxy_url = proxies.get("server") solution = self.__flaresolverr_request(url=url, cookies=cookies, - proxy_url=proxy_url, timeout=timeout) + proxy_config=proxies, timeout=timeout) if solution: return solution.get("response") except Exception as e: