请教:curl/wget 一个网站首页的时候源码获取不完整

2014-02-13 13:08:03 +08:00
 ekousp
使用 curl acbnewsonline.com.au 时,发现获取的源代码不完整,使用浏览器打开是没有问题的。
我看了下这个网站响应头,编码是chunked,跟这个有关系吗?
8953 次点击
所在节点    Linux
17 条回复
jakwings
2014-02-13 13:12:39 +08:00
检查一下 UserAgent ?
horsley
2014-02-13 13:19:22 +08:00
有的内容是js动态加载的?
ekousp
2014-02-13 13:55:30 +08:00
@horsley 不是,是原始的html没有吐完整。
@jakwings 和UA有关系吗?这个网站前端没有做这方面的检测。
notsobad
2014-02-13 13:55:33 +08:00
curl --compressed acbnewsonline.com.au
ekousp
2014-02-13 13:56:25 +08:00
@notsobad 果然可以了!谢谢!是由于启用了gzip压缩的缘故吗?
ekousp
2014-02-13 13:56:40 +08:00
@notsobad 这个原因怎么理解。
notsobad
2014-02-13 14:02:25 +08:00
@ekousp 浏览器默认请求的是压缩的内容,curl默认请求非压缩内容
jakwings
2014-02-13 14:12:23 +08:00
@notsobad Thanks. 第一次知道还有这么麻烦的事情。Google 了一下,发现了这篇东东:

http://stackoverflow.com/questions/8364640/how-to-properly-handle-a-gzipped-page-when-using-curl

有人根据 HTTP 1.1 的规范指出这是 curl 的 bug ……
pubby
2014-02-13 14:16:24 +08:00
@ekousp 网速太慢了? 不开压缩时传输过程中超时了
learnshare
2014-02-13 16:00:04 +08:00
jakwings
2014-02-13 16:14:33 +08:00
@learnshare 无语,你试过 wget 上面的网址了吗?至少我没在 manpage 发现任何有关请求压缩格式的请求头的特别说明,在你给的文章中也没找到压缩两个字。
learnshare
2014-02-13 17:15:55 +08:00
@jakwings 刚刚测试过了,测试命令:

wget -i http://acbnewsonline.com.au/ -F -x --ignore-tags=a -k

断网后本地打开,页面不完整。原因应该有两个:
1. 页面内容通过 JS/Ajax 生成,wget 无力;
2. 某段 JS 报错了。

Wget 只适合爬静态页面和文件,不过的确是支持 gzip 压缩的,参考 http://www.cyberciti.biz/faq/unix-linux-wget-download-compressed-gzip-headers/
jakwings
2014-02-13 17:27:21 +08:00
@learnshare 好吧,你看 3 楼……
pubby
2014-02-13 19:06:52 +08:00
测试了一下,果然奇葩。 绝对是服务器端有问题
pityonline
2014-02-13 20:06:02 +08:00
chunked 是动态生成的吧?
VYSE
2014-02-14 00:00:57 +08:00
这个nginx估计用了什么加速插件,GET里有
Accept-Encoding: deflate, gzip
时候才不是chunked response
浏览器里的 Accept-Encoding: gzip, deflate都不行
wget,curl命令行应该是不支持download chunked
试试aria2
VYSE
2014-02-14 00:22:17 +08:00
@VYSE 错了,curl是支持chunked,问题是server竟然在Accept-Encoding: identity chunked传输中close connection
必须加header "Accept-Encoding: deflate,gzip"

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/100031

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX