cURL是一个利用URL语法在命令行下工作的文件传输工具,1997年首次发行。它支持文件上传和下载,所以是综合传输工具,但按传统,习惯称cURL为下载工具。cURL还包含了用于程序开发的libcurl。 – Baidu
- 0x01 cURL支持的协议
- 0x02 常用选项
- 0x03 认证
- 0x04 任意HTTP方法
- 0x04 上传文件
- 0x05 网卡
- 0x06 指定源端口
- 0x07 代理
- 0x08 HTML表单上传文件
- 0x09 COOKIE
- REF
0x01 cURL支持的协议
DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP
Ref:https://ec.haxx.se/protocols-curl.html
0x02 常用选项
- 查看详细信息:
curl -v http://example.com
- 跟随重定向:
curl -L http://example.com
- 发送POST数据:
curl -d "username=Rvn0xsy" http://example.com
- 下载文件:
curl -o ~/Download/down.zip http://example.com/download.zip
- 查看进度表:
curl -s -o ~/Download/down.zip http://example.com/download.zip
- 下载并覆盖本地副本:
curl -O ~/Download/down.zip http://example.com/download.zip
- 限速:
curl http://example.com/ --limit-rate 200K
- 最大文件大小:
curl --max-filesize 100000 http://example.com/
- 偏移读取:
curl --range 100-1099 http://example.com/download.zip
- URL编码:
curl --data-urlencode "name=John Doe (Junior)" http://example.com
- URL编码-从文件读取:
curl --data-urlencode [email protected] http://example.com #user的内容再contents.txt中
- GET请求:
curl -G http://example.com
- 添加请求头:
curl -H "Transfer-Encoding: chunked" http://example.com
- 自定义user-agent:
curl --user-agent/-A/-H 'User-Agent: http://example.com'
0x03 认证
cURL支持四种认证:
- –digest
- –negotiate
- –ntlm
-u <username:password>
0x04 任意HTTP方法
cURL -X <POST/GET/OPTIONS/PUT> http://example.com
0x04 上传文件
支持:FILE, FTP, FTPS, HTTP, HTTPS, IMAP, IMAPS, SCP, SFTP, SMB, SMBS, SMTP, SMTPS and TFTP.
HTTP:curl -T upload.zip http://example.com/ # PUT
FTP:curl -T upload.zip ftp://example.com/
SMTP:curl -T mail smtp://mail.example.com/ --mail-from [email protected]
0x05 网卡
curl --interface eth1 https://www.example.com/
curl --interface 192.168.0.2 https://www.example.com/
curl --interface machine2 https://www.example.com/
0x06 指定源端口
curl --local-port 4000-4200 https://example.com/
0x07 代理
支持代理:
- http
- socks
curl -x 192.168.0.1:8080 http:/example.com/
curl -x socks4://proxy.example.com http://www.example.com/
curl --socks4 proxy.example.com http://www.example.com/
curl --socks4a proxy.example.com http://www.example.com/
curl -x socks4a://proxy.example.com http://www.example.com/
curl -x socks5://proxy.example.com http://www.example.com/
curl --socks5 proxy.example.com http://www.example.com/
curl -x socks5h://proxy.example.com http://www.example.com/
curl --socks5-hostname proxy.example.com http://www.example.com/
代理认证
curl -U daniel:secr3t -x myproxy:80 http://example.com
0x08 HTML表单上传文件
<form action="submit.cgi" method="post" enctype="multipart/form-data">
Name: <input type="text" name="person"><br>
File: <input type="file" name="secret"><br>
<input type="submit" value="Submit">
</form>
curl -F person=anonymous -F [email protected] http://example.com/submit.cgi
0x09 COOKIE
读取cookie
curl -L -b cookies.txt http://example.com
将cookie写入文件
curl -c cookie-jar.txt http://example.com
REF
- https://legacy.gitbook.com/book/bagder/everything-curl