请教:curl/wget 一个网站首页的时候源码获取不完整
- 0次
- 2021-07-19 04:17:05
- idczone
使用 curl acbnewsonline.com.au 时,发现获取的源代码不完整,使用浏览器打开是没有问题的。
我看了下这个网站响应头,编码是chunked,跟这个有关系吗?
检查一下 UserAgent ?
有的内容是js动态加载的?
不是,是原始的html没有吐完整。
和UA有关系吗?这个网站前端没有做这方面的检测。
curl --compressed acbnewsonline.com.au
果然可以了!谢谢!是由于启用了gzip压缩的缘故吗?
这个原因怎么理解。
浏览器默认请求的是压缩的内容,curl默认请求非压缩内容
Thanks. 第一次知道还有这么麻烦的事情。Google 了一下,发现了这篇东东:
http://stackoverflow.com/questions/8364640/how-to-properly-handle-a-gzipped-page-when-using-curl
有人根据 HTTP 1.1 的规范指出这是 curl 的 bug ……
网速太慢了? 不开压缩时传输过程中超时了
Wget 最详细的用法,不谢
http://blog.csdn.net/sdlyhjq/article/details/8596303
无语,你试过 wget 上面的网址了吗?至少我没在 manpage 发现任何有关请求压缩格式的请求头的特别说明,在你给的文章中也没找到压缩两个字。
刚刚测试过了,测试命令:
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/
好吧,你看 3 楼……
测试了一下,果然奇葩。 绝对是服务器端有问题
chunked 是动态生成的吧?
这个nginx估计用了什么加速插件,GET里有
Accept-Encoding: deflate, gzip
时候才不是chunked response
浏览器里的 Accept-Encoding: gzip, deflate都不行
wget,curl命令行应该是不支持download chunked
试试aria2
错了,curl是支持chunked,问题是server竟然在Accept-Encoding: identity chunked传输中close connection
必须加header "Accept-Encoding: deflate,gzip"