Chinaunix首页 | 论坛 | 博客
  • 博客访问: 201479
  • 博文数量: 63
  • 博客积分: 1970
  • 博客等级: 上尉
  • 技术积分: 600
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-22 14:26
文章分类

全部博文(63)

文章存档

2013年(2)

2012年(11)

2011年(19)

2010年(6)

2007年(11)

2006年(14)

分类: Web开发

2013-02-23 16:52:42

curl: (到处收集整理的)  

   这个url上讲了不少:http://my.oschina.net/kuafu/blog/29833 

::::模拟POST模式和GET模式

http提交一个表单,比较常用的是POST模式和GET模式,GET模式什么option都不用,只需要把变量写在url里面就可以了比如:

$curl  

而POST模式的option则是 -d

$ curl -d  "user=nickwolfe&password=12345"  http:///login.cgi  #就相当于向这个站点以POST发出一次登陆申请...

POST模式下的文件上的文件上传,比如1995年年末,RFC 1867定义了一种新的POST方法,用来上传文件。主要用于把本地文件上传到服务器。此时页面是这样写的:

upload>

press value="OK">

 对于这种页面,curl的用法不同:

$curl -F upload=@localfilename  -F  press=OK  URL  #这个命令的实质是将本地的文件用POST上传到服务器。

6、-d/--data 该选项用来以POST方式向http服务器发送特定数据,最常用的就是提交表单。如

 curl -d "user=username&password=111" , 表示用账号username和密码111向站点发送登录申请。其中多个数据段可以用"&"进行连接一起发送;

如果数据前面加上符号"@",则数据 来源为后面指定的文件,如

$ curl -d  password=@D:\pw.txt   http:///

$curl -d      @/home/zhaangf/pw.txt   hello   #/home/zhaangf/pw.txt里面的内容 以post方式发送到hello

$curl -d      @d:\pw.txt  hello



::::查看响应头信息

[root@localhost ~]# curl -I

HTTP/1.0 404 Not Found
Content-Length: 10300
Content-Type: text/html
Vary: Accept-Encoding
Server: Microsoft-IIS/7.5
X-Powered-By: ASP.NET
X-Powered-Load: 0.5
Date: Sat, 23 Feb 2013 08:49:39 GMT
Powered-By-ChinaCache: MISS from CNC-BJ-D-3C2
Connection: close

::::访问网页

$curl http:///   

$curl http:/// > index.html      #存下http的结果

$curl -o  index.html http:///     #代替上面的,用curl的内置option就好,存下http的结果,用这个option: -o

$curl -x 123.45.67.89:1080 -o page.html  http:// /                         #通过代理服务器访问。 -x 代理服务器IP:端口

:::处理cookie的option:  -D、-b

$ curl  -o page.html -D cookie0001.txt http:///                         # option: -D — 这个是把http的response里面的cookie信息存到一个指定的文件里,当页面被存到page.html的同时,cookie信息也被存到了cookie0001.txt里面了

  so,下一次访问的时候,如何继续使用上次留下的cookie信息呢?要知道,很多网站都是靠监视你的cookie信息,来判断你是不是不按规矩访问他们的网站的。这次使用一个新的option: -b

$curl  -o page1.html -D cookie0002.txt -b cookie0001.txt  http:/// 

:::模拟浏览器信息

 option:  -A

$ curl  -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"  -o page.html  -D cookie0001.txt   http:///    #模拟IE浏览器, 这样,服务器端接到访问的要求,会认为你是一个运行在Windows 2000上的 IE6.0,嘿嘿嘿,其实也许你用的是苹果机呢!

------------------------------------

:::模拟浏览器

referer,骗盗链 

option: -e


另外一个服务器端常用的限制方法,就是检查http访问的referer。比如你先访问首页,再访问里面所指定的下载页,这第二次访问的 referer地址就是第一次访问成功后的页面地址。这样,服务器端只要发现对下载页面某次访问的referer地址不是首页的地址,就可以断定那是个盗连了   ~

讨厌讨厌 ~我就是要盗连    ~!!

幸好curl给我们提供了设定referer的option: -e


$ curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" -x 123.45.67.89:1080    -e "mail.

google.com

" -o page.html -D cookie0001.txt http:///  

#这样就可以骗对方的服务器,你是从

mail.

google.com

点击某个链接过来的了 

:::利用curl 下载文件

option: -O 大写的O,小写o上面写过

$ curl -O ~zzh/screen1.JPG                #按照服务器上的文件名,自动存在本地了

$ curl -O ~zzh/screen[1-7].JPG     #下载类似screen1.JPG、screen2.JPG、screen3.JPG...screen7.JPG的图片


$curl -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"   -e ""  -d "2880[]=105&pid=2880&p=最佳count=1&receipt=1&poll=投票"  

#这里 -A "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)" 的意思就是申明自己用的是windows2000下的ie6的浏览器;
-e ""的意思就是refer是这个页面;
-d后面的参数都是将用post方式提交到服务器去的,最后面的就是将要post到的url地址,这里提到了-A、-e和-d参数,




阅读(803) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~