【Linux】命令 - curl

Posted by 西维蜀黍 on 2017-09-26, Last Modified on 2022-12-10

获取网页源码

$ curl http://www.google.com/

将显示该页面的网页源码(HTML):


-i参数可以增加显示 HTTP Response的头信息(同时仍显示网页源码)

$ curl -i https://www.google.com/

-o - 保存到指定文件中

通过-o可指定文件名,并将内容保存到指定的文件中。

$ curl -o a.html https://www.google.com/

即将对应的html内容保存到了a.html文件中。

打开a.html即可看到对应内容:

-o通常用于下载并保存文件。

 $ curl -o tokyo.bin http://speedtest.tokyo.linode.com/100MB-tokyo.bin

-A - 指定 User-Agent

$ curl -A 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/76.0.3809.100 Safari/537.36' https://google.com

-H - 指定HTTP Headers

$ curl -H 'User-Agent: php/1.0' https://google.com

-b - 指定Cookie

$ curl -b 'foo=bar' https://google.com	

上面命令会生成一个标头Cookie: foo=bar,向服务器发送一个名为foo、值为bar的 Cookie。

$ curl -b 'foo1=bar;foo2=bar2' https://google.com

上面命令发送两个 Cookie。

-d - 设置HTTP Body

-d参数用于发送 POST 请求的数据体。

$ curl -d'login=emma&password=123'-X POST https://google.com/login
# 或者
$ curl -d 'login=emma' -d 'password=123' -X POST  https://google.com/login

使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST

-d参数可以读取本地文本文件的数据,向服务器发送。

$ curl -d '@data.txt' https://google.com/login

上面命令读取data.txt文件的内容,作为数据体向服务器发送。

-O - 将服务器回应保存成文件,并将 URL 的最后部分当作文件名

-O参数将服务器回应保存成文件,并将 URL 的最后部分当作文件名。

$ curl -O https://www.example.com/foo/bar.html

上面命令将服务器回应保存成文件,文件名为bar.html

-L - 自动重定向

$ curl  https://github.com/CodisLabs/codis/releases/download/3.2.2/codis3.2.2-go1.8.5-linux.zip
<html><body>You are being <a href="https://github-production-release-asset-2e65be.s3.amazonaws.com/25804514/2ded5908-053f-11e8-9062-381ec9d1c084?X-Amz-Algorithm=AWS4-HMAC-SHA256&amp;X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20200725%2Fus-east-1%2Fs3%2Faws4_request&amp;X-Amz-Date=20200725T105550Z&amp;X-Amz-Expires=300&amp;X-Amz-Signature=958d86a21997cd8c43ddee56f54fa5be4ef08c5baf6f8b8d2eb7929a6f6d437f&amp;X-Amz-SignedHeaders=host&amp;actor_id=0&amp;repo_id=25804514&amp;response-content-disposition=attachment%3B%20filename%3Dcodis3.2.2-go1.8.5-linux.zip&amp;response-content-type=application%2Foctet-stream">redirected</a>.</body></html>%

$ curl -L https://github.com/CodisLabs/codis/releases/download/3.2.2/codis3.2.2-go1.8.5-linux.zip
Warning: Binary output can mess up your terminal. Use "--output -" to tell
Warning: curl to output it to your terminal anyway, or consider "--output
Warning: <FILE>" to save to a file.

Reference