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. 移除内置延时机制