fix: 修复调用flaresolverr时未将代理认证信息传入的问题

This commit is contained in:
Pollo
2025-08-12 16:12:22 +08:00
parent fdbfae953d
commit cbe81ba33c
+10 -11
View File
@@ -30,7 +30,7 @@ class PlaywrightHelper:
@staticmethod @staticmethod
def __flaresolverr_request(url: str, def __flaresolverr_request(url: str,
cookies: Optional[str] = None, cookies: Optional[str] = None,
proxy_url: Optional[str] = None, proxy_config: Optional[dict] = None,
timeout: Optional[int] = 60) -> Optional[dict]: timeout: Optional[int] = 60) -> Optional[dict]:
""" """
调用 FlareSolverr 解决 Cloudflare 并返回 solution 结果 调用 FlareSolverr 解决 Cloudflare 并返回 solution 结果
@@ -51,8 +51,13 @@ class PlaywrightHelper:
payload["cookies"] = cookie_parse(cookies, array=True) payload["cookies"] = cookie_parse(cookies, array=True)
except Exception as e: except Exception as e:
logger.debug(f"解析 cookies 失败,忽略: {str(e)}") logger.debug(f"解析 cookies 失败,忽略: {str(e)}")
if proxy_url: if proxy_config and proxy_config.get("server"):
payload["proxy"] = {"url": proxy_url} 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: try:
fs_api = settings.FLARESOLVERR_URL.rstrip("/") + "/v1" fs_api = settings.FLARESOLVERR_URL.rstrip("/") + "/v1"
@@ -97,11 +102,8 @@ class PlaywrightHelper:
fs_cookie_header = None fs_cookie_header = None
fs_ua = None fs_ua = None
if settings.BROWSER_EMULATION == "flaresolverr": 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, solution = self.__flaresolverr_request(url=url, cookies=cookies,
proxy_url=proxy_url, timeout=timeout) proxy_config=proxies, timeout=timeout)
if solution: if solution:
fs_cookie_header = self.__fs_cookie_str(solution.get("cookies", [])) fs_cookie_header = self.__fs_cookie_str(solution.get("cookies", []))
fs_ua = solution.get("userAgent") fs_ua = solution.get("userAgent")
@@ -158,11 +160,8 @@ class PlaywrightHelper:
# 如果配置为 FlareSolverr,则直接调用获取页面源码 # 如果配置为 FlareSolverr,则直接调用获取页面源码
if settings.BROWSER_EMULATION == "flaresolverr": if settings.BROWSER_EMULATION == "flaresolverr":
try: try:
proxy_url = None
if proxies and isinstance(proxies, dict):
proxy_url = proxies.get("server")
solution = self.__flaresolverr_request(url=url, cookies=cookies, solution = self.__flaresolverr_request(url=url, cookies=cookies,
proxy_url=proxy_url, timeout=timeout) proxy_config=proxies, timeout=timeout)
if solution: if solution:
return solution.get("response") return solution.get("response")
except Exception as e: except Exception as e: