curl
curl
是一个命令行工具,可以在命令行实现网络交互。
查看网页源码和保存源码
该工具用于在命令行进行数据上传和下载。
# 查看 www.sina.com 源码 curl www.xiaomi.com
上面命令输入后可得到如下输出:
301 Moved Permanently 301 Moved Permanently
Powered by MiWeb
可以将输出的文本通过参数 -o [文件名]
保存内容到指定文件:
curl -o ./index.html www.baidu.com
打开文件后可看到网页正常显示。
自动跳转
有些网址访问后会自动进行跳转重定向,此时可以使用 -L
参数,即可跳转到新网址:
curl -L www.xiaomi.com
键入上面的命令,结果就自动跳转为 www.mi.com。
显示头信息
-i
参数可以显示 http response
的头信息,连同网页代码一起。
-I
参数则只显示 http response
头信息。
curl -i www.sina.com
示例输出:
HTTP/1.1 301 Moved Permanently Server: nginx Date: Thu, 03 Sep 2020 05:55:44 GMT Content-Type: text/html Content-Length: 178 Connection: keep-alive Location: http://www.sina.com.cn/ Expires: Thu, 03 Sep 2020 05:57:42 GMT Cache-Control: max-age=120 X-Via-SSL: ssl.23.sinag1.qxg.lb.sinanode.com Edge-Copy-Time: 1599112543065 Age: 1 Via: https/1.1 ctc.guangzhou.union.182 (ApacheTrafficServer/6.2.1 [cSsSfU]), https/1.1 ctc.ningbo.union.47 (ApacheTrafficServer/6.2.1 [cRs f ]) X-Via-Edge: 15991125445293356aadcf0beee73359e0725 X-Cache: HIT.47 X-Via-CDN: f=edge,s=ctc.ningbo.union.70.nb.sinaedge.com,c=220.170.86.51;f=Edge,s=ctc.ningbo.union.47,c=115.238.190.70301 Moved Permanently 301 Moved Permanently
nginx
显示通讯过程
-v
参数可以显示一次 http
通讯的整个过程,包括端口连接和 http request
头信息。
curl -v www.sina.com
示例输出:
* Rebuilt URL to: www.sina.com/ * Trying 115.238.190.240... * TCP_NODELAY set * Connected to www.sina.com (115.238.190.240) port 80 (#0) > GET / HTTP/1.1 > Host: www.sina.com > User-Agent: curl/7.55.1 > Accept: */* > < HTTP/1.1 301 Moved Permanently < Server: nginx < Date: Thu, 03 Sep 2020 05:59:22 GMT < Content-Type: text/html < Content-Length: 178 < Connection: keep-alive < Location: http://www.sina.com.cn/ < Expires: Thu, 03 Sep 2020 06:00:30 GMT < Cache-Control: max-age=120 < X-Via-SSL: ssl.22.sinag1.qxg.lb.sinanode.com < Edge-Copy-Time: 1599112762192 < Age: 52 < Via: https/1.1 ctc.guangzhou.union.182 (ApacheTrafficServer/6.2.1 [cRs f ]), https/1.1 ctc.ningbo.union.47 (ApacheTrafficServer/6.2.1 [cRs f ]) < X-Via-Edge: 15991127621463356aadcf0beee73072e1cd5 < X-Cache: MISS.MERGE.47 < X-Via-CDN: f=edge,s=ctc.ningbo.union.74.nb.sinaedge.com,c=220.170.86.51;f=Edge,s=ctc.ningbo.union.47,c=115.238.190.74 <301 Moved Permanently 301 Moved Permanently
nginx * Connection #0 to host www.sina.com left intact
如果上面信息不够,更详细的信息可以使用如下命令:
curl --trace output.txt www.sina.com
或者
curl --trace-ascii output.txt www.sina.com
运行后,打开 output.txt
文件查看。
发送表单信息
发送表单信息有 GET
和 POST
两种方法。GET
方法相对简单,只要把数据附在网址后面就行。
curl example.com/form.cgi?data=xxx
POST
方法必须把数据和网址分开,curl 就要用到 --data
参数。
curl -X POST --data "data=xxx" example.com/form.cgi
如果你的数据没有经过表单编码,还可以让 curl 为你编码,参数是 --data-urlencode
curl -X POST --data-urlencode "date=April 1" example.com/form.cgi
HTTP 动词
curl 默认的 HTTP 动词是 GET,使用 -X
参数可以支持其他动词。
curl -X POST www.example.com curl -X DELETE www.example.com
文件上传
假定文件上传的表单是下面这样:
你可以用 curl 这样上传文件:
curl --form upload=@localfilename --form press=OK [URL]
Referer 字段
有时你需要在 http request
头信息中,提供一个 referer
字段,表示你是从哪里跳转过来的。
评论(0)
暂无评论