本帖最后由 tmplinshi 于 2015-10-27 01:05 编辑
今天在使用抓包工具 Charles 的时候,在长长的右键菜单中无意间瞥见了个菜单“Copy cURL Request”,然后我又想起本论坛的网友依山居在多个帖子中这么干过,于是乎我也想干一回...
从复制到的结果中看到个参数 --compressed,查了下官方文档,其说明为:
--compressed
(HTTP) Request a compressed response using one of the algorithms curl supports, and save the uncompressed document. If this option is used and the server sends an unsupported encoding, curl will report an error.
意思是,curl 会向网站请求压缩后的文档(gzip格式),然后会自动解压返回解压后的数据。
这个功能是非常有用的。网页经过 gzip 压缩后普遍能减少 60% 以上的体积,这样能大大提高 http 请求的速度。
请求压缩后的数据也可以用 -H 参数添加请求头。例如:- curl http://www.baidu.com -H "Accept-Encoding: gzip, deflate" -o baidu.gz
复制代码 不过这样下载的就是 gzip 文件,curl 不会把内容解压出来。
另外的话,并不是所有网站都支持返回压缩后的数据。
那如何判断某个网页是否支持压缩呢?也很简单,只要向网页请求压缩后的数据,然后判断 http 的响应头,如果里面包含 Content-Encoding: gzip,那么就是支持的。
C:\>curl -I --compressed ip.cn
HTTP/1.1 200 OK
Server: nginx/1.8.0
Date: Mon, 26 Oct 2015 16:32:19 GMT
Content-Type: text/html; charset=UTF-8
Connection: keep-alive
Vary: Accept-Encoding
X-Powered-By: PHP/5.4.43-1~dotdeb+7.1
Content-Encoding: gzip
-I 参数作用是进行 HEAD 请求,只获取响应头,而不获取内容。 |