[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[其他] curl 请求压缩后的网页并自动解压

本帖最后由 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 参数添加请求头。例如:
  1. 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 请求,只获取响应头,而不获取内容。
1

评分人数

感叹一下,当年只知道用nc 重放http请求。还经常莫名发送不出去。
如今现在的抓包工具都集成重放HTTP请求的功能了。

TOP

回复 2# 依山居


    多谢指点。看到了:

TOP

chrome 开发者工具也支持curl cmd 直接复制出来。

TOP

返回列表