您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

python – 浏览器和wget加载JPEG不同?

5b51 2022/1/14 8:22:26 python 字数 3574 阅读 576 来源 www.jb51.cc/python

我被困在这个.尝试在浏览器中加载此图像,然后将其保存到您的硬盘. http://profile.ak.fbcdn.net/hprofile-ak-snc4/41674_660962816_995_n.jpg 它是一个11377字节的有效JPEG文件. 现在尝试用wget或curl下载它.只有11252个字节出现,图像的右下方部分丢失. 是什么赋予了? 开始… 采取包转储,我看到Facebook返回

概述

http://profile.ak.fbcdn.net/hprofile-ak-snc4/41674_660962816_995_n.jpg

它是一个11377字节的有效JPEG文件.

现在尝试用wget或curl下载它.只有11252个字节出现,图像的右下方部分丢失.

是什么赋予了?

采取包转储,我看到Facebook返回相同的内容长度到Safari,因为它卷曲,内容长度是不正确的11252:

GET /hprofile-ak-snc4/41674_660962816_995_n.jpg HTTP/1.1
User-Agent: curl/7.19.7 (universal-apple-darwin10.0) libcurl/7.19.7 OpenSSL/0.9.8l zlib/1.2.3
Host: profile.ak.fbcdn.net
Accept: */*

HTTP/1.1 200 OK
Content-Type: image/jpeg
... snip ....
Content-Length: 11252

和Safari:

GET /hprofile-ak-snc4/41674_660962816_995_n.jpg HTTP/1.1
Host: profile.ak.fbcdn.net
User-Agent: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.20.25 (KHTML,like Gecko) Version/5.0.4 Safari/533.20.27
... snip ...

HTTP/1.1 200 OK
Content-Type: image/jpeg
... snip ...
Content-Length: 11252

所以我要猜测Facebook发送的内容长度不正确.为了测试这个,我将使用netcat:

$cat  headers
GET /hprofile-ak-snc4/41674_660962816_995_n.jpg HTTP/1.0
Host: profile.ak.fbcdn.net
Accept: */*

EOF
$nc -vvv profile.ak.fbcdn.net 80  output
Warning: Inverse name lookup Failed for `142.231.1.174'
Notice: Real hostname for profile.ak.fbcdn.net [142.231.1.165] is a142-231-1-165.deploy.akamaitechnologies.com
profile.ak.fbcdn.net [142.231.1.174] 80 (http) open
Total received bytes: 12k (11639)
Total sent bytes: 97
$head output
HTTP/1.0 200 OK
Content-Type: image/jpeg
... snip ...
Content-Length: 11252

(请注意,我使用HTTP / 1.0,所以Facebook服务器不会尝试保持连接打开)

使用文本编辑器删除前10行输出,然后将其保存为output.jpg,我有完整的图像.

所以这样确认Facebook正在发送一个不正确的Content-Length头文件(并且图像被切断,因为curl在netcat没有注意内容长度时).

进一步挖掘,似乎Aleski是正确的 – 当图像被发送gzip压缩时,Content-Length是正确的.为了确认这一点,我添加了Accept-Encoding:gzip到我的头文件. Facebook正确地发回一个gzip的响应,这是预期的长度,并且解压缩它会导致正确的图像.

tl; dr:如果Content-Encoding不是gzip,Facebook的Content-Length是不正确的.

总结

以上是编程之家为你收集整理的python – 浏览器和wget加载JPEG不同?全部内容,希望文章能够帮你解决python – 浏览器和wget加载JPEG不同?所遇到的程序开发问题。


如果您也喜欢它,动动您的小指点个赞吧

除非注明,文章均由 laddyq.com 整理发布,欢迎转载。

转载请注明:
链接:http://laddyq.com
来源:laddyq.com
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。


联系我
置顶