fix(book): 修复文件下载中的重定向处理问题
- 添加 allow_redirects=False 参数避免自动重定向 - 实现手动处理 301、302、307、308 状态码的重定向逻辑 - 在重定向时设置 referer 头信息 - 添加重定向日志输出便于调试 - 在 Windows 环境配置文件中添加 aa 变量设置
This commit is contained in:
@@ -0,0 +1 @@
|
|||||||
|
aa=9999999
|
||||||
@@ -91,8 +91,11 @@ class BookService:
|
|||||||
@retry(stop=stop_after_attempt(3))
|
@retry(stop=stop_after_attempt(3))
|
||||||
def download_file(self, file_url: str, dir_name: str, file_name: str): # 下载文件
|
def download_file(self, file_url: str, dir_name: str, file_name: str): # 下载文件
|
||||||
try:
|
try:
|
||||||
response = self.session.get(file_url, stream=True)
|
response = self.session.get(file_url, stream=True, allow_redirects=False)
|
||||||
response.raise_for_status()
|
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(f"下载状态码:{response.status_code} {file_url}")
|
||||||
print(dir_name + "/" + file_name)
|
print(dir_name + "/" + file_name)
|
||||||
content_type = response.headers.get('Content-Type', '')
|
content_type = response.headers.get('Content-Type', '')
|
||||||
|
|||||||
Reference in New Issue
Block a user