From cbe81ba33c025036fc719f1a2f47da23130f152a Mon Sep 17 00:00:00 2001 From: Pollo Date: Tue, 12 Aug 2025 16:12:22 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8D=E8=B0=83=E7=94=A8flar?= =?UTF-8?q?esolverr=E6=97=B6=E6=9C=AA=E5=B0=86=E4=BB=A3=E7=90=86=E8=AE=A4?= =?UTF-8?q?=E8=AF=81=E4=BF=A1=E6=81=AF=E4=BC=A0=E5=85=A5=E7=9A=84=E9=97=AE?= =?UTF-8?q?=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/helper/browser.py | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) 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: