Chinaunix首页 | 论坛 | 博客
  • 博客访问: 68870
  • 博文数量: 39
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 226
  • 用 户 组: 普通用户
  • 注册时间: 2014-06-04 09:56
个人简介

小小博客,不足为外人道

文章分类

全部博文(39)

分类: LINUX

2015-06-25 17:17:23

curl命令可以用来构造http请求。参数有很多,常用的参数如下:


通用语法:
curl [option] [URL...]
在处理URL时其支持类型于SHELL的名称扩展功能,如http://www.jbxue.com/archive[1996-1999]/vol[1-4]/part{a,b,c}.html可以生成多个期望的URL


curl的选项功能:


不带任何参数时 curl 将返回指定url中的数据并打印在屏幕上
-u 使用用户名和密码登陆。如curl -uname:passwd URL
-b/--cookie  <name=data>   向服务器提交cookie,若无=则name视为文件名,例如:curl -b cookie.txt www.jbxue.com
-o out  将指定curl返回保存为out文件,内容从html/jpg到各种MIME类型文件。如curl -o page.html URL
-d <key=value>  向服务器POST表单数据 例如:curl -d "order=111&count=2" http://www.jbxue.com/buy
-A/--user-agent  <ua>  指定发送请求的用户代理,例如:curl -A My-Agent/1.0.0 www.jbxue.com 
-x  ip:port 指定使用的http代理,例如:curl -x 192.168.1.1:8080 www.jbxue.com
-D head.txt  将服务器的返回的header保存为文件,头部的cookie也可被保存,例如:curl -D header.txt www.jbxue.com  
如果希望从本地文件中获取表单数据,则在文件名前加@ ,例如:curl -d @data.xml http://www.jbxue.com
若希望从标准输入获取则用 curl -d "name=username&passwd=pwd" http://www.jbxue.com
-L 当页面有跳转的时候,输出跳转到的页面
-I  header信息  当有跳转时,可以通过 curl -L -I URL|grep Location 来确定跳转到的新url地址
-c <file> 保存服务器的cookie文件
-e url  设置引用头的值
-T localfile  向服务器PUT文件 例如:curl -T 1.mp3  www.jbxue.com/upload.php
-F <key=value> 向服务器POST表单,例如:curl -F "web=@index.html;type=text/html" url.com
-E cert.pem  指定本地证书
-H <header:value>  为HTTP请求设置任意header及值。如curl -H "Connection:keep-alive" http://www.jbxue.com
-X/--request method 用户定义的HTTP请求方法名如 curl -X GET www.baidu.com
--compressed 采用压缩方式接收返回数据
--connect-timeout <s> 设置超时时间
-v 详细输出,包含请求和响应的首部
--retry num
--retry timeo 指定重试的次数和间隔
--tcp-nodelay 打开TCP_NODELAY选项  不进行捎带确认
-O  按服务器上的名称保存下载的文件
-r/--range  from-to 下载指定range内的数据
-C 在保存文件时进行续传




  二,常用curl实例


  1,抓取页面内容到一个文件中


  [root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com


  [root@krlcgcms01 mytest]# curl -o home.html  http://blog.51yip.com


  2,用-O(大写的),后面的url要具体到某个文件,不然抓不下来。我们还可以用正则来抓取东西


  [root@krlcgcms01 mytest]# curl -O


  [root@krlcgcms01 mytest]# curl -O


  3,模拟表单信息,模拟登录,保存cookie信息


  [root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php


  [root@krlcgcms01 mytest]# curl -c ./cookie_c.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php


  4,模拟表单信息,模拟登录,保存头信息


  [root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php


  [root@krlcgcms01 mytest]# curl -D ./cookie_D.txt -F log=aaaa -F pwd=****** http://blog.51yip.com/wp-login.php


  -c(小写)产生的cookie和-D里面的cookie是不一样的。


  5,使用cookie文件


  [root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin


  [root@krlcgcms01 mytest]# curl -b ./cookie_c.txt  http://blog.51yip.com/wp-admin


  6,断点续传,-C(大写的)


  [root@krlcgcms01 mytest]# curl -C -O


  7,传送数据,最好用登录页面测试,因为你传值过去后,curl回抓数据,你可以看到你传值有没有成功


  [root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php


  [root@krlcgcms01 mytest]# curl -d log=aaaa  http://blog.51yip.com/wp-login.php


  8,显示抓取错误,下面这个例子,很清楚的表明了。


  [root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf


  curl: (22) The requested URL returned error: 404


  [root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf


  <HTML><HEAD><TITLE>404,not found</TITLE>


  。。。。。。。。。。。。


  [root@krlcgcms01 mytest]# curl -f http://blog.51yip.com/asdf


  curl: (22) The requested URL returned error: 404


  [root@krlcgcms01 mytest]# curl http://blog.51yip.com/asdf


  <HTML><HEAD><TITLE>404,not found</TITLE>


  。。。。。。。。。。。。


  9,伪造来源地址,有的网站会判断,请求来源地址。


  [root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php


  [root@krlcgcms01 mytest]# curl -e http://localhost http://blog.51yip.com/wp-login.php


  10,当我们经常用curl去搞人家东西的时候,人家会把你的IP给屏蔽掉的,这个时候,我们可以用代理


  [root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com


  [root@krlcgcms01 mytest]# curl -x 24.10.28.84:32779 -o home.html http://blog.51yip.com
11,比较大的东西,我们可以分段下载


  [root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-


  content/uploads/2010/09/compare_varnish.jpg


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current


  Dload  Upload   Total   Spent    Left  Speed


  100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0


  [root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-


  content/uploads/2010/09/compare_varnish.jpg


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current


  Dload  Upload   Total   Spent    Left  Speed


  100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0


  [root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-


  content/uploads/2010/09/compare_varnish.jpg


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current


  Dload  Upload   Total   Spent    Left  Speed


  100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961


  [root@krlcgcms01 mytest]# ls |grep part | xargs du -sh


  4.0K    one.part1


  112K    three.part3


  4.0K    two.part2


  [root@krlcgcms01 mytest]# curl -r 0-100 -o img.part1 http://blog.51yip.com/wp-


  content/uploads/2010/09/compare_varnish.jpg


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current


  Dload  Upload   Total   Spent    Left  Speed


  100   101  100   101    0     0    105      0 --:--:-- --:--:-- --:--:--     0


  [root@krlcgcms01 mytest]# curl -r 100-200 -o img.part2 http://blog.51yip.com/wp-


  content/uploads/2010/09/compare_varnish.jpg


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current


  Dload  Upload   Total   Spent    Left  Speed


  100   101  100   101    0     0     57      0  0:00:01  0:00:01 --:--:--     0


  [root@krlcgcms01 mytest]# curl -r 200- -o img.part3 http://blog.51yip.com/wp-


  content/uploads/2010/09/compare_varnish.jpg


  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current


  Dload  Upload   Total   Spent    Left  Speed


  100  104k  100  104k    0     0  52793      0  0:00:02  0:00:02 --:--:-- 88961


  [root@krlcgcms01 mytest]# ls |grep part | xargs du -sh


  4.0K    one.part1


  112K    three.part3


  4.0K    two.part2


  用的时候,把他们cat一下就OK了,cat img.part* >img.jpg


  12,不会显示下载进度信息


  [root@krlcgcms01 mytest]# curl -s -o aaa.jpg 


  13,显示下载进度条


  [root@krlcgcms01 mytest]# curl -# -O 


  ######################################################################## 100.0%


  14,通过ftp下载文件


  [zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://blog.51yip.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


  [zhangy@BlackGhost ~]$ curl -u 用户名:密码 -O http://blog.51yip.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


  或者用下面的方式


  [zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css


  [zhangy@BlackGhost ~]$ curl -O ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/style.css


  15,通过ftp上传


  [zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/


  [zhangy@BlackGhost ~]$ curl -T test.sql ftp://用户名:密码@ip:port/demo/curtain/bbstudy_files/
原文出处:http://linux.chinaitlab.com/command/830656.html

阅读(389) | 评论(0) | 转发(0) |
0

上一篇:PPPOE协议简介

下一篇:curl http post

给主人留下些什么吧!~~