发起HTTP请求--Curl

curl 是常用的命令行工具,用来请求 Web 服务器。它的名字就是客户端(client)的 URL 工具的意思。

它的功能非常强大,命令行参数多达几十种。如果熟练的话,完全可以取代 Postman 这一类的图形界面工具

我们可以使用cURL执行一些有用的技巧,如代理支持、用户身份验证、FTP上传、HTTP post、SSL连接、cookie、文件传输恢复、Metalink等等。

常用命令分类:

# 调试类
-v, --verbose                          输出信息
-q, --disable                          在第一个参数位置设置后 .curlrc 的设置直接失效,这个参数会影响到 -K, --config -A, --user-agent -e, --referer
-K, --config FILE                      指定配置文件
-L, --location                         跟踪重定向 (H)

# CLI显示设置
-s, --silent                           Silent模式。不输出任务内容
-S, --show-error                       显示错误. 在选项 -s 中,当 curl 出现错误时将显示
-f, --fail                             不显示 连接失败时HTTP错误信息
-i, --include                          显示 response的header (H/F)
-I, --head                             仅显示 响应文档头
-l, --list-only                        只列出FTP目录的名称 (F)
-#, --progress-bar                     以进度条 显示传输进度

# 数据传输类
-X, --request [GET|POST|PUT|DELETE|…]  使用指定的 http method 例如 -X POST
-H, --header <header>                  设定 request里的header 例如 -H "Content-Type: application/json"
-e, --referer                          设定 referer (H)
-d, --data <data>                      设定 http body 默认使用 content-type application/x-www-form-urlencoded (H)
    --data-raw <data>                  ASCII 编码 HTTP POST 数据 (H)
    --data-binary <data>               binary 编码 HTTP POST 数据 (H)
    --data-urlencode <data>            url 编码 HTTP POST 数据 (H)
-G, --get                              使用 HTTP GET 方法发送 -d 数据 (H)
-F, --form <name=string>               模拟 HTTP 表单数据提交 multipart POST (H)
    --form-string <name=string>        模拟 HTTP 表单数据提交 (H)
-u, --user <user:password>             使用帐户,密码 例如 admin:password
-b, --cookie <data>                    cookie 文件 (H)
-j, --junk-session-cookies             读取文件中但忽略会话cookie (H)
-A, --user-agent                       user-agent设置 (H)

# 传输设置
-C, --continue-at OFFSET               断点续转
-x, --proxy [PROTOCOL://]HOST[:PORT]   在指定的端口上使用代理
-U, --proxy-user USER[:PASSWORD]       代理用户名及密码

# 文件操作
-T, --upload-file <file>               上传文件
-a, --append                           添加要上传的文件 (F/SFTP)

# 输出设置
-o, --output <file>                    将输出写入文件,而非 stdout
-O, --remote-name                      将输出写入远程文件
-D, --dump-header <file>               将头信息写入指定的文件
-c, --cookie-jar <file>                操作结束后,要写入 Cookies 的文件位置

 

cURL 查看网页源码

直接在 cURL 命令后加上网址,就可以看到网页源码。

 默认 cURL 会把结果输出到 STDOUT,可以使用 -o,-o 或 重定向 将返回结果保存到文件中:

curl -o [文件名] www.baidu.com
curl -O [文件保存路径] www.baidu.com
curl www.baidu.com > baidu.html

扫描二维码关注公众号,回复: 14692588 查看本文章

使用 cURL 观察 HTTP 协议

使用 cURL 的参数 -v,–verbose,会显示出 cURL 向服务器发送的命令和其它的一些信息。–verbose 是一个非常有用的命令,尤其是当你想调试或者了解 cURL 和服务器交互过程的时候。

curl –v www.baidu.com

随后我们就可以观察服务器返回的结果:

从输出结果我们可以看到,cURL 命令发起请求所使用的请求方法、请求资源、请求协议版本以及一些请求头。服务器接收到请求后则返回状态码、一些响应头以及网页正文。

如果我们只需要服务器的响应信息的话,可以使用 -i、--include 命令。

如果你觉得上面的信息还不够,那么下面的命令可以查看更详细的通信过程。curl --trace [结果输出保存文件名] http://www.baidu.com

 

从上面的例子中,我们可以看到,当我们请求 http://www.baidu.com 成功之后,服务器会返回一个 302 跳转码,并在响应头中通过 Location 告诉访问者应该跳转到哪里去。

cURL 提供了重定向跟随的功能,通过 -L 参数就可以响应服务器返回的跳转指令了。

curl –L www.baidu.com

 

 可以看到 cURL 自动跳转访问 https://www.baidu.com/ 去了。

使用 cURL 向服务器发送数据

向服务器提交数据的方法有两种:GET 和 POST 两种方法。

GET 方式比较简单,需要传递的参数直接在 URL 地址中进行传递即可。

curl -vo /dev/null http://www.baidu.com/s?wd=curl

其中 wd 就是百度服务器接收搜索关键字的参数名。

POST 方法必须把数据和网址分开,我们就需要使用 -X 参数来指定请求方法,-F 参数来传递表单数据。

 使用 cURL 测试代理访问

使用 CDN 有时候会发现请求异常,为了确定是 CDN 平台的故障还是源站出现了问题,我们就需要依次来排查。cURL 工具可以使用 -x 参数来指定代理主机端口来访问。

curl -x [protocol://]host[:port] url

猜你喜欢

转载自blog.csdn.net/weixin_46601374/article/details/124398279