From 776f629771bedebc8dfcba910657ddef65509ded Mon Sep 17 00:00:00 2001 From: jxxghp Date: Sun, 20 Jul 2025 15:50:45 +0800 Subject: [PATCH] fix User-Agent --- app/api/endpoints/system.py | 4 ++-- app/chain/media.py | 2 +- app/chain/recommend.py | 2 +- app/core/config.py | 11 +++++++++-- app/modules/douban/apiv2.py | 2 +- app/modules/telegram/telegram.py | 2 +- app/modules/themoviedb/tmdbapi.py | 2 +- 7 files changed, 16 insertions(+), 9 deletions(-) diff --git a/app/api/endpoints/system.py b/app/api/endpoints/system.py index 0d1233a3..645b507b 100644 --- a/app/api/endpoints/system.py +++ b/app/api/endpoints/system.py @@ -95,7 +95,7 @@ def fetch_image( # 请求远程图片 referer = "https://movie.douban.com/" if "doubanio.com" in url else None proxies = settings.PROXY if proxy else None - response = RequestUtils(ua=settings.USER_AGENT, proxies=proxies, referer=referer, + response = RequestUtils(ua=settings.NORMAL_USER_AGENT, proxies=proxies, referer=referer, accept_type="image/avif,image/webp,image/apng,*/*").get_res(url=url) if not response: raise HTTPException(status_code=502, detail="Failed to fetch the image from the remote server") @@ -490,7 +490,7 @@ def nettest( proxies=settings.PROXY if proxy else None, headers=headers, timeout=10, - ua=settings.USER_AGENT, + ua=settings.NORMAL_USER_AGENT, ).get_res(url) # 计时结束的毫秒数 end_time = datetime.now() diff --git a/app/chain/media.py b/app/chain/media.py index ce08ebd6..4bdf60c3 100644 --- a/app/chain/media.py +++ b/app/chain/media.py @@ -454,7 +454,7 @@ class MediaChain(ChainBase): """ try: logger.info(f"正在下载图片:{_url} ...") - r = RequestUtils(proxies=settings.PROXY, ua=settings.USER_AGENT).get_res(url=_url) + r = RequestUtils(proxies=settings.PROXY, ua=settings.NORMAL_USER_AGENT).get_res(url=_url) if r: return r.content else: diff --git a/app/chain/recommend.py b/app/chain/recommend.py index f5d59fc0..7e58176c 100644 --- a/app/chain/recommend.py +++ b/app/chain/recommend.py @@ -130,7 +130,7 @@ class RecommendChain(ChainBase, metaclass=Singleton): # 请求远程图片 referer = "https://movie.douban.com/" if "doubanio.com" in url else None proxies = settings.PROXY if not referer else None - response = RequestUtils(ua=settings.USER_AGENT, proxies=proxies, referer=referer).get_res(url=url) + response = RequestUtils(ua=settings.NORMAL_USER_AGENT, proxies=proxies, referer=referer).get_res(url=url) if not response: logger.debug(f"Empty response for URL: {url}") return diff --git a/app/core/config.py b/app/core/config.py index 6da02a2b..86a9ff4d 100644 --- a/app/core/config.py +++ b/app/core/config.py @@ -517,6 +517,13 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel): """ return f"{self.PROJECT_NAME}/{APP_VERSION[1:]} ({platform.system()} {platform.release()}; {SystemUtils.cpu_arch()})" + @property + def NORMAL_USER_AGENT(self) -> str: + """ + 默认浏览器用户代理字符串 + """ + return "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/138.0.0.0 Safari/537.36" + @property def INNER_CONFIG_PATH(self): return self.ROOT_PATH / "config" @@ -613,7 +620,7 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel): if self.GITHUB_TOKEN: return { "Authorization": f"Bearer {self.GITHUB_TOKEN}", - "User-Agent": self.USER_AGENT, + "User-Agent": self.NORMAL_USER_AGENT, } return {} @@ -642,7 +649,7 @@ class Settings(BaseSettings, ConfigModel, LogConfigModel): continue headers[repo_info] = { "Authorization": f"Bearer {token}", - "User-Agent": self.USER_AGENT, + "User-Agent": self.NORMAL_USER_AGENT, } except Exception as e: print(f"处理令牌对 '{token_pair}' 时出错: {e}") diff --git a/app/modules/douban/apiv2.py b/app/modules/douban/apiv2.py index 4c32e266..07b29d1c 100644 --- a/app/modules/douban/apiv2.py +++ b/app/modules/douban/apiv2.py @@ -234,7 +234,7 @@ class DoubanApi(metaclass=WeakSingleton): if '_ts' in params: params.pop('_ts') resp = RequestUtils( - ua=settings.USER_AGENT, + ua=settings.NORMAL_USER_AGENT, session=self._session, ).post_res(url=req_url, data=params) if resp is not None and resp.status_code == 400 and "rate_limit" in resp.text: diff --git a/app/modules/telegram/telegram.py b/app/modules/telegram/telegram.py index ef997804..37b45f49 100644 --- a/app/modules/telegram/telegram.py +++ b/app/modules/telegram/telegram.py @@ -524,7 +524,7 @@ class Telegram: :param reply_markup: 内联键盘 """ if image: - res = RequestUtils(proxies=settings.PROXY, ua=settings.USER_AGENT).get_res(image) + res = RequestUtils(proxies=settings.PROXY, ua=settings.NORMAL_USER_AGENT).get_res(image) if res is None: raise Exception("获取图片失败") if res.content: diff --git a/app/modules/themoviedb/tmdbapi.py b/app/modules/themoviedb/tmdbapi.py index 77b6ab35..56ef2dc1 100644 --- a/app/modules/themoviedb/tmdbapi.py +++ b/app/modules/themoviedb/tmdbapi.py @@ -514,7 +514,7 @@ class TmdbApi: return {} logger.info("正在从TheDbMovie网站查询:%s ..." % name) tmdb_url = "https://www.themoviedb.org/search?query=%s" % quote(name) - res = RequestUtils(timeout=5, ua=settings.USER_AGENT, proxies=settings.PROXY).get_res(url=tmdb_url) + res = RequestUtils(timeout=5, ua=settings.NORMAL_USER_AGENT, proxies=settings.PROXY).get_res(url=tmdb_url) if res is None: return None if res.status_code == 429: