完全构造headers下载图片,下载的图片大小为0?

1.用python3的requests模块下载图片,图片下载下来大小为0?
2.我的原始代码如下:

url = 'https://www.wifi588.net/2025d...'
headers =
{'authority':'www.wifi588.net',
'method':'GET',
'path':'/2025d6f1c179018205f04027361f1a49.jpg',
'scheme':'https',
'accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8',
'accept-encoding':'',
'accept-language':'zh-CN,zh;q=0.9',
'cache-control':'max-age=0',
'cookie':'__cfduid=db035e73b552e0770b0d8f80ec68f1ab91521898939',
'if-none-match':'f4ee63a404f4332cce122986030578f2',
'upgrade-insecure-requests':'1',
'user-agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/64.0.3282.140 Safari/537.36'
}
response = requests.get(url,headers=headers)
name = url.split("/")[-1]
file_name = "f:/pic/{}".format(name)
with open(file_name,"wb") as f:

f.write(response.content)

f.close()

这是我在浏览器里面用F12打开的请求头如下:
图片描述

我已经完全按照浏览器的请求头构造了headers,但是下载的数据还是有问题,实在是找不到解决方法,谢谢各位。

回答:

不要加 if-none-match 头部,这个字段是来判断 cache 是否过期的,你加了这个,服务器认为你本地缓存了该资源,且没有过期的话,就不给你回复该资源,而是在响应头部加上 Etag 字段告诉你从本地缓存中取。

另外不建议你使用 accept 字段,或者说不建议在 accept 中指定不想要的 MIME 类型。以你的请求为例,你是想获取一个 jpg 图片,而你的 accept 中有image/webp,假如服务器恰好支持 webp 压缩,那就会给你返回一个 webp 图片,而不是原来的 jpg 图片。

以上是 完全构造headers下载图片,下载的图片大小为0? 的全部内容, 来源链接: utcz.com/a/160819.html

回到顶部