基础
参考:
参数一览
# 调试类-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 的文件位置
基础应用
Get请求
不带有任何参数时,curl 就是发出 GET 请求。
curl https://www.example.com
设置cookie
附带cookie请求
curl -b 'foo=bar' https://google.com# 带多个cookiecurl -b 'foo1=bar' -b 'foo2=baz' https://google.com# 读取文件里的cookiecurl -b cookies.txt https://www.google.com
将返回的cookie写入文件
curl -c cookies.txt https://www.google.com
Post-form请求
使用-d参数以后,HTTP 请求会自动加上标头Content-Type : application/x-www-form-urlencoded。并且会自动将请求转为 POST 方法,因此可以省略-X POST。
curl -d 'login=emma&password=123'-X POST https://google.com/login# 读取文件curl -d '@data.txt' https://google.com/login
post-json请求
curl -H "Content-type:application/json" -X POST -d '{"threads_start":1,"threads_to":30}' http://127.0.0.1:9898
下载文件
# 下载并使用原始名称curl -O http://www.mydomain.com/linux/index.html# 下载并使用自定义名称curl -o index.html http://www.mydomain.com/linux/index.html# 断点续传 ,加Ccurl -C -O http://www.sina.com.cn
登录并访问
# 登录curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.mydomain.com/login.php# 根据cookie,再请求页面curl -b ./cookie_c.txt http://blog.mydomain.com/wp-admin
其他问题
如何支持https
默认的curl不支持https,重新安装即可。
首先我们先看一下curl支持什么协议
➜ curl -Vcurl 7.65.3 (x86_64-pc-linux-gnu) libcurl/7.65.3 zlib/1.2.7Release-Date: 2019-07-19Protocols: dict file ftp gopher http imap pop3 rtsp smtp telnet tftpFeatures: AsynchDNS IPv6 Largefile libz UnixSockets
可以看到,协议里面没有https,我们下载安装
1、安装openssl
wget https://www.openssl.org/source/old/1.1.0/openssl-1.1.0f.tar.gztar -zxvf openssl-1.1.0f.tar.gzcd openssl-1.1.0f/./config shared no-zlib --prefix=/opt/ssl --openssldir=/opt/sslmakesudo make install
2、安装curl
wget https://curl.haxx.se/download/curl-7.54.1.tar.gztar -zxvf curl-7.54.1.tar.gzcd curl-7.54.1LDFLAGS="-Wl,-rpath,/opt/ssl/lib -Wl,-rpath,/opt/lib \-Wl,-rpath,/usr/local/lib" \./configure --with-ssl=/opt/ssl --prefix=/optmakesudo make install# 备份和软连接sudo mv /usr/local/bin/curl /usr/local/bin/curl.backsudo ln -s /opt/bin/curl /usr/local/bin/curl# 测试curl -V
这短短的一生我们最终都会失去,不放大胆一点,爱一个人、攀一座山、追一个梦!
