curl是一个开源的用于数据传输的命令行工具与库,它使用URL语法格式,支持众多传输协议,包括:HTTP、HTTPS、FTP、FTPS、GOPHER、TFTP、SCP、SFTP、SMB、TELNET、DICT、LDAP、LDAPS、FILE、IMAP、SMTP、POP3、RTSP和RTMP。curl库提供了很多强大的功能,你可以利用它来进行HTTP/HTTPS请求、上传/下载文件等,且支持Cookie、认证、代理、限速等。
一、CURL使用
常用的一些参数
-e,--referer <URL>
: 指定来源的网页-v
: 显示http握手过程-i
: 显示header信息-I
: 只显示header信息--trace,--trace-ascii <FILE>
: 查看更详细的通信过程-X POST --data "data=xxx",--data-urlencode "date=April 1"
:POST参数,使用–data-urlencode配置时会对参数进行urlencode--form upload=<localfilename> --form press=OK
:文件上传--user-agent "[User Agent]"
:UA参数-c <cookie file>
: 保存服务器返回的COOKIE文件-b <cookie file>
: 使用COOKIE文件-H,--header '<param>'
:自定义头信息,上面其他的参数都可以在这里写完整的header头信息;
1.1 URL访问
下面是curl常用的一些方法:
1.2 表单提交和文件上传
|
|
1.3 HTTPS支持
|
|
1.4 添加请求头
|
|
1.5 Cookie支持
Cookie是一种常用的保持服务端会话信息的方法,crul也支持使用Cookie。
可以通过–cookie参数指定发送请求时的Cookie值,也可以通过-b [文件名]来指定一个存储了Cookie值的本地文件:curl -b stored_cookies_in_file itbilu.com
Cookie值可能会被服务器所返回的值所修改,并应用于下次HTTP请求。这时,可以能过-c参数指定存储服务器返回Cookie值的存储文件:curl -b cookies.txt -c newcookies.txt itbilu.com
除以上用法外,curl还可以设置用户代理(客户端)信息、使用代理服务器、指定认证用户名/密码等。详见:curl语法及选项
二、curl语法及选项
语法
curl语法结构如下:
curl [options…]
参数选项
curl(7.29.0)所支持的选项(options)参数如下:
|
|
三、我的实战操作
post数据
curl -d "username=xxx&password=abc&secret=true" "URL"
上传文件
通过脚本发送post请求,顺便附带文本数据,比如通过”浏览”选择本地的card.txt并上传发送post请求:curl -F "blob=@card.txt;type=text/plain" "http://172.16.102.208:8089/wiapi/score?leaderboard_id=7778a8143f111272&score=40&app_key=8d49f16fe034b98b&_test_user=test01"
其中-F 为带文件的形式发送post请求, blob为文本框中的name元素对应的属性值。
指定hosts访问
curl -H “Host:jp.laikansha.com” “http://216.239.32.21/time.php“