curl 参数详解
常用参数
参数 | 描述 |
---|---|
-I/–head | 只显示传输文档,经常用于测试连接本身 |
-o/–output | 把输出写到该文件中,必须输入保存文件名 |
-O/–remote-name | 把输出写到该文件中,保留远程文件的文件名 |
-F/–form | 模拟表单提交 |
-s/–silent | 静默模式,不输出任何东西 |
-S/–show-error | 显示错误,在选项 -s 中,当 curl 出现错误时将显示 |
-L/–location | 跟踪重定向 |
-f/–fail | 不输出错误 |
-n/–netrc | 从netrc文件中读取用户名和密码 |
–netrc-optional | 使用 .netrc 或者 URL来覆盖-n |
–ntlm | 使用 HTTP NTLM 身份验证 |
-N/–no-buffer | 禁用缓冲输出 |
-p/–proxytunnel | 使用HTTP代理 |
–proxy-anyauth | 选择任一代理身份验证方法 |
–proxy-basic | 在代理上使用基本身份验证 |
–proxy-digest | 在代理上使用数字身份验证 |
–proxy-ntlm | 在代理上使用ntlm身份验证 |
-P/–ftp-port | 使用端口地址,而不是使用PASV |
-M/–manual | 显示全手动 |
-Q/–quote | 文件传输前,发送命令到服务器 |
-r/–range | 检索来自HTTP/1.1或FTP服务器字节范围 |
–range-file | 读取(SSL)的随机文件 |
-R/–remote-time | 在本地生成文件时,保留远程文件时间 |
–retry | 传输出现问题时,重试的次数 |
–retry-delay | 传输出现问题时,设置重试间隔时间 |
–retry-max-time | 传输出现问题时,设置最大重试时间 |
–socks4 | 用socks4代理给定主机和端口 |
–socks5 | 用socks5代理给定主机和端口 |
-t/–telnet-option | Telnet选项设置 |
–trace | 对指定文件进行debug |
–trace-ascii Like | 跟踪但没有hex输出 |
–trace-time 跟踪/ | 详细输出时,添加时间戳 |
-T/–upload-file | 上传文件 |
-u/–user | 设置服务器的用户和密码 |
-U/–proxy-user | 设置代理用户名和密码 |
-V/–version | 显示版本信息 |
-w/–write-out [format] | 什么输出完成后 |
-x/–proxy | 在给定的端口上使用HTTP代理 |
-X/–request | 指定什么命令 |
-y/–speed-time | 放弃限速所要的时间。默认为30 |
-Y/–speed-limit | 停止传输速度的限制,速度时间’秒 |
-z/–time-cond | 传送时间设置 |
-0/–http1.0 | 使用HTTP 1.0 |
-1/–tlsv1 | 使用TLSv1(SSL) |
-2/–sslv2 | 使用SSLv2的(SSL) |
-3/–sslv3 | 使用的SSLv3(SSL) |
–3p-quote | like -Q for the source URL for 3rd party transfer |
–3p-url | 使用url,进行第三方传送 |
–3p-user | 使用用户名和密码,进行第三方传送 |
-4/–ipv4 | 使用IP4 |
-6/–ipv6 | 使用IP6 |
-#/–progress-bar | 用进度条显示当前的传送状态 |
使用cookie文件
curl -b ./cookie_c.txt http://blog.mydomain.com/wp-admin
断点续传,-C(大写的)
curl -C -O http://www.sina.com.cn
传送数据
最好用登录页面测试,因为你传值过去后,回抓数据,你可以看到你传值有没有成功
curl -d log=aaaa http://blog.mydomain.com/login.php
显示抓取错误 -f
curl -f http://www.sina.com.cn/asdf
curl: (22) The requested URL returned error: 404
curl http://www.sina.com.cn/asdf
伪造来源地址,有的网站会判断,请求来源地址-e
curl -e http://localhost http://www.sina.com.cn
当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理
curl -x 10.10.90.83:80 -o home.html http://www.sina.com.cn
比较大的东西,我们可以分段下载
curl -r 0-100 -o img.part1 http://mydomian.cn/thumb/xxx.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 101 100 101 0 0 1926 0 --:--:-- --:--:-- --:--:-- 0
curl -r 100-200 -o img.part2 http://mydomian.cn/thumb/xxx.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 101 100 101 0 0 3498 0 --:--:-- --:--:-- --:--:-- 98k
curl -r 200- -o img.part3 http://mydomian.cn/thumb/xxx.jpg
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 13515 100 13515 0 0 154k 0 --:--:-- --:--:-- --:--:-- 280k
ll |grep img.part
用的时候,把他们cat一下就OK了,cat img.part* >img.jpg
不显示下载进度信息 -s
curl -s -o aaa.jpg
显示下载进度条 -#
curl -# -O http://www.mydomain.com/linux/25002_3.html
######################################################################## 100.0%
通过ftp下载文件
curl -u 用户名:密码 -O http://blog.mydomain.com/demo/curtain/bbstudy_files/style.css
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
101 1934 101 1934 0 0 3184 0 --:--:-- --:--:-- --:--:-- 7136
或者用下面的方式
curl -O ftp://xukai:test@192.168.242.144:21/www/focus/enhouse/index.php
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 87518 100 87518 0 0 2312k 0 --:--:-- --:--:-- --:--:-- 11.5M
通过ftp上传
curl -T xukai.php ftp://xukai:test@192.168.242.144:21/www/focus/enhouse/
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 87518 0 0 100 87518 0 2040k --:--:-- --:--:-- --:--:-- 8901k
用法收集
下载保存
$curl http://mydomain.net > index.html
$curl -o index.html http://mydomain.net
$curl -O http://mydomain.net/target.tar.gz
GET
$curl http://www.yahoo.com/login.cgi?user=nickname&password=12345
POST
$curl -d "user=nickname&password=12345" http://www.yahoo.com/login.cgi
POST 文件
$curl -F upload=$localfile -F $btn_name=$btn_value http://mydomain.net/~zzh/up_file.cgi
通过代理
$curl -x 123.45.67.89:1080 -o page.html http://mydomain.net
保存cookie
$curl -x 123.45.67.89:1080 -o page1.html -D cookie0001.txt http://mydomain.net
使用cookie
$curl -x 123.45.67.89:1080 -o page1.html -D cookie0002.txt -b cookie0001.txt http://mydomain.net
模仿浏览器
$curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x123.45.67.89:1080 -o page.html -D cookie0001.txt http://mydomain.net
伪造referer
$curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x123.45.67.89:1080 -e"mail.yahoo.com" -o page.html -D cookie0001.txt http://mydomain.net
高级下载功能
循环下载
$curl -O http://mydomain.net/~zzh/screen[1-10].JPG
循环(匹配)下载
$curl -O http://mydomain.net/~{zzh,nick}/[001-201].JPG # >like zzh/001.JPG
循环(引用)下载
$curl -o #2_#1.jpg http://mydomain.net/~{zzh,nick}/[001-201].JPG # like >001_zzh.jpg
断点续传
$curl -c -O http://mydomain.net/~zzh/screen1.JPG
分块下载
$curl -r 0 -10240 -o "zhao.part1" http://mydomain.net/~zzh/zhao1.mp3 &\
$curl -r 10241 -20480 -o "zhao.part1" http://mydomain.net/~zzh/zhao1.mp3 &\
$curl -r 20481 -40960 -o "zhao.part1" http://mydomain.net/~zzh/zhao1.mp3 &\
$curl -r 40961 - -o "zhao.part1" http://mydomain.net/~zzh/zhao1.mp3
...
$cat zhao.part* > zhao.mp3