cURL原本是linux/unix上的命令行工具,但是也有Win的版本。已经被Win10和Mac操作系统内置了。
其网址是:curl
可用于http, ftp, smtp, pop, .......多种协议。
我用到是Win下的版本,7.43.0,下载后把那个curl.exe放到了 c:/windows/system32下。
1) 访问和保存网页
直接
> curl http://www.baidu.com/
就把网页内容显示在终端上了。
> curl http://www.baidu.com/ >page.html
则可以另存为一个文件(用的是重定向功能)
但也可以用
> curl -o page.html 百度一下,你就知道
-o这个选项后面跟文件名,就是另存为文件了。
2)处理cookie
> curl -c mycookies.txt http://www.baidu.com/
-c选项,可以把访问网站过程中的cookie信息存入一个文件
> curl -b mycookies.txt http://www.baidu.com/
-b选项,则可以利用已有的cookie信息文件来访问网站
3)处理request/response头部信息
> curl http://www.baidu.com/ -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36"
-H选项,可以在请求时发送一行头部header信息
> curl http://www.baidu.com/ -A "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/43.0.2357.124 Safari/537.36"
-A选项,可以发送User Agent信息。(作用跟上面那句一致,因user agent信息也是请求头的一种)
> curl -e "http://referer/url" http://www.baidu.com/
-e选项用于提供referer请求头信息。
> curl -I http://www.baidu.com/
-I选项,只显示响应response头信息,而不显示整个网页代码
> curl -D myheader.txt http://www.baidu.com/
-D选项,可以把response响应头信息保存成文件
4)下载和保存文件、断点续传
> curl -O http://localhost:8080/mypic.jpg
-O大写的O选项,是用于保存网页上的文件,并保持服务器上的文件名
>curl -O http://cgi2.tky.3web.ne.jp/~zzh/screen[1-10].JPG
[1-10]是可变参数部分,这种方式是下载screen1.JPG、screen2.JPG、screen3.JPG、....、screen10.JPG
除了[ ],还有{ }, : 这些符号可以用于指定,详细看Manual的URL部分。
>curl -r 0-10240 -o "zhao.part1" http:/http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 10241-20480 -o "zhao.part1" http:/http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 20481-40960 -o "zhao.part1" http:/http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3 &\
curl -r 40961- -o "zhao.part1" http:/http://cgi2.tky.3web.ne.jp/~zzh/zhao1.mp3
-r 选项用于指定下载的字节范围,进行分段下载(linux下可实现多进程同时下载)。
win下可以下载后用copy /b命令进行合并。
> curl -C - -o file ftp://ftp.server.com/path/file
-C选项用于指定下载或上传时进行断点续传处理
5)发送请求
>curl http://www.yahoo.com/login.cgi?user=nickwolfe&password=12345
发送GET命令的请求时直接把参数写在url
>curl -d "user=nickwolfe&password=12345" http://www.yahoo.com/login.cgi
-d选项用于指定发送请求时POST命令的数据
此外--data-urlencode选项可对数据进行urlencode转义处理
例如,
> curl -d "value%201" http://hostname.com
就相当于
> curl --data-urlencode "value 1" http://hostname.com
会先将空格转换成%20
5)设置代理,认证,证书等
> curl -x 123.45.67.89:1080 Yahoo
-x选项用于指定代理(服务器和端口号)
>curl -E localcert.pem https://remote_server
-E选项用于访问https协议时指定证书(这里用的本地证书)
> curl -u username:password ftp://172.19.11.4
-u选项用于设定访问的用户名和密码
> curl ftp://name:passwd@ip:port/path/file
ftp这种方式指定用户名密码也可以用。
6)文件上传
> curl -T localfile -u name:passwd ftp://upload_site:port/path/
-T选项用于上传文件,对于http协议来说是用的PUT命令进行上传
>curl -F upload=@localfile -F nick=go http://cgi2.tky.3web.ne.jp/~zzh/up_file.cgi
-F选项是用http协议的POST命令进行上传表单方式的文件上传
7)获取帮助
> curl -h
显示一般的帮助
>curl -M
显示更详细的帮助(manual)
也可以直接访问:
http://curl.haxx.se/docs/manpage.html
也是这个内容。
此外,在Chrome新版下,F12的开发者面板中,network选项卡抓取的网页请求信息,
可以用鼠标右键菜单中的“save as cURL"来保存为cURL命令,十分方便。