From c64c9479a9dfbe22f5f294f8b47f3a2948be9190 Mon Sep 17 00:00:00 2001 From: zhengshunjin <2667579369@qq.com> Date: Wed, 13 May 2026 10:44:30 +0800 Subject: [PATCH] =?UTF-8?q?fix(book):=20=E4=BF=AE=E5=A4=8D=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8B=E8=BD=BD=E4=B8=AD=E7=9A=84=E9=87=8D=E5=AE=9A?= =?UTF-8?q?=E5=90=91=E5=A4=84=E7=90=86=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 添加 allow_redirects=False 参数避免自动重定向 - 实现手动处理 301、302、307、308 状态码的重定向逻辑 - 在重定向时设置 referer 头信息 - 添加重定向日志输出便于调试 - 在 Windows 环境配置文件中添加 aa 变量设置 --- .env | 0 .env.windows | 1 + app/services/book_service.py | 7 +++++-- 3 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 .env create mode 100644 .env.windows diff --git a/.env b/.env new file mode 100644 index 0000000..e69de29 diff --git a/.env.windows b/.env.windows new file mode 100644 index 0000000..262b58f --- /dev/null +++ b/.env.windows @@ -0,0 +1 @@ +aa=9999999 diff --git a/app/services/book_service.py b/app/services/book_service.py index 5e153ef..6b478da 100644 --- a/app/services/book_service.py +++ b/app/services/book_service.py @@ -91,8 +91,11 @@ class BookService: @retry(stop=stop_after_attempt(3)) def download_file(self, file_url: str, dir_name: str, file_name: str): # 下载文件 try: - response = self.session.get(file_url, stream=True) - response.raise_for_status() + response = self.session.get(file_url, stream=True, allow_redirects=False) + if response.status_code in (301, 302, 307, 308): # 非200状态码,重新请求 + file_url = response.headers["location"] + print(f'跳转页面了:{file_url}') + response = self.session.get(file_url, headers={"referer": file_url}, stream=True) print(f"下载状态码:{response.status_code} {file_url}") print(dir_name + "/" + file_name) content_type = response.headers.get('Content-Type', '')