分类: 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
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参数,