diff --git a/README.md b/README.md index d2e7d51..f1ec716 100644 --- a/README.md +++ b/README.md @@ -285,7 +285,7 @@ async def example(): proxy -str | dict +str 设置程序代理 null diff --git a/README_EN.md b/README_EN.md index b610e57..5b3ca86 100644 --- a/README_EN.md +++ b/README_EN.md @@ -289,7 +289,7 @@ async def example(): proxy -str | dict +str Set program proxy null diff --git a/requirements.txt b/requirements.txt index 86fe367..b4a1837 100644 --- a/requirements.txt +++ b/requirements.txt @@ -5,7 +5,7 @@ PyYAML>=6.0.2 aiosqlite>=0.20.0 click>=8.1.7 rookiepy>=0.5.6 -httpx>=0.27.0 +httpx>=0.28.0 fastapi>=0.112.1 uvicorn>=0.30.6 aiofiles>=24.1.0 diff --git a/source/module/manager.py b/source/module/manager.py index e985185..f89b089 100644 --- a/source/module/manager.py +++ b/source/module/manager.py @@ -6,6 +6,7 @@ from shutil import rmtree from typing import Callable from httpx import AsyncClient +from httpx import AsyncHTTPTransport from httpx import HTTPStatusError from httpx import RequestError from httpx import TimeoutException @@ -102,14 +103,20 @@ class Manager: timeout=timeout, verify=False, follow_redirects=True, - **self.proxy, + mounts={ + "http://": AsyncHTTPTransport(proxy=self.proxy), + "https://": AsyncHTTPTransport(proxy=self.proxy), + }, ) self.download_client = AsyncClient( headers=self.blank_headers, timeout=timeout, verify=False, follow_redirects=True, - **self.proxy, + mounts={ + "http://": AsyncHTTPTransport(proxy=self.proxy), + "https://": AsyncHTTPTransport(proxy=self.proxy), + }, ) self.image_download = self.check_bool(image_download, True) self.video_download = self.check_bool(video_download, True) @@ -190,37 +197,38 @@ class Manager: def __check_proxy( self, - proxy: str | dict, + proxy: str, url="https://www.xiaohongshu.com/explore", - ) -> dict: - if not proxy: - return {"proxies": self.NO_PROXY} - if isinstance(proxy, str): - kwarg = {"proxy": proxy} - elif isinstance(proxy, dict): - kwarg = {"proxies": proxy} - else: - self.proxy_tip = ( - self.message("proxy 参数 {0} 设置错误,程序将不会使用代理").format(proxy), WARNING,) - return {"proxies": self.NO_PROXY} - try: - response = get( - url, - **kwarg, ) - response.raise_for_status() - self.proxy_tip = (self.message("代理 {0} 测试成功").format(proxy),) - return kwarg - except TimeoutException: - self.proxy_tip = ( - self.message("代理 {0} 测试超时").format(proxy), WARNING,) - except ( - RequestError, - HTTPStatusError, - ) as e: - self.proxy_tip = ( - self.message("代理 {0} 测试失败:{1}").format( - proxy, e), WARNING,) - return {"proxies": self.NO_PROXY} + ) -> str | None: + if proxy: + try: + response = get( + url, + proxy=proxy, + timeout=10, + headers={ + "User-Agent": USERAGENT, + } + ) + response.raise_for_status() + self.proxy_tip = (self.message("代理 {0} 测试成功").format(proxy),) + return proxy + except TimeoutException: + self.proxy_tip = ( + self.message("代理 {0} 测试超时").format(proxy), + WARNING, + ) + except ( + RequestError, + HTTPStatusError, + ) as e: + self.proxy_tip = ( + self.message("代理 {0} 测试失败:{1}").format( + proxy, + e, + ), + WARNING, + ) def print_proxy_tip(self, _print: bool = True, log=None, ) -> None: if _print and self.proxy_tip: diff --git a/static/Release_Notes.md b/static/Release_Notes.md index e796724..55c67a1 100644 --- a/static/Release_Notes.md +++ b/static/Release_Notes.md @@ -1,4 +1,5 @@ **项目更新内容:** 1. 优化文件名称非法字符处理 -2. 移除内置延时机制 +2. 适配新版本 HTTPX 库 +3. 移除内置延时机制