boxmoe_header_banner_img

Hello! 欢迎来到盒子萌!

加载中

文章导读

01curl


avatar
Jack 2023年 7月 1日 319

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

打开文件后可看到网页正常显示。

index.html

自动跳转

有些网址访问后会自动进行跳转重定向,此时可以使用 -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.70


301 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 文件查看。

发送表单信息

发送表单信息有 GETPOST 两种方法。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)

查看评论列表

暂无评论


发表评论

表情 颜文字
插入代码