perl 获取cookie

原创 2015年07月08日 11:19:05
<pre name="code" class="sql">Cookie的含义是“服务器送给浏览器的甜点”,即服务器在响应请求时可以将一些数据以“键-值”对的形式通过响应信息保存在客户端。当浏览器再次访问相同的应用时,会将原先的Cookie通过请求信息带到服务器端。

下面的Servlet展示了Cookie的功能。

view plain

    public void doGet(HttpServletRequest request, HttpServletResponse response)  
                     throws ServletException, IOException {  
          response.setContentType("text/html");  
          PrintWriter out = response.getWriter();  
          String option = request.getParameter("option");  
          if ("show".equals(option)) {  
              //获得请求信息中的Cookie数据  
              Cookie[] cookies = request.getCookies();  
              if (cookies != null) {  
                  //找出名称(键)为“cool”的Cookie  
                  for (int i = 0; i < cookies.length; i++) {  
                      if ("cool".equals(cookies[i].getName())) {  
                          out.println("<h2>" + cookies[i].getName() + ":"  
                              + cookies[i].getValue() + "</h2>");  
                       }  
                  }  
             }  
          } else if ("add".equals(option)) {  
              //创建Cookie对象  
              Cookie cookie = new Cookie("cool", "yeah!");  
              //设置生命周期以秒为单位  
              cookie.setMaxAge(20);  
              //添加Cookie  
              response.addCookie(cookie);  
         }   


该Servlet对应的url-pattern为/testCookie
当浏览器请求地址“.../tst/testCookie?option=add”时,该Servlet创建一个Cookie对象,存储的键-值对为“cool”-“yeah”。通过response的addCookie方法将该Cookie信息添加到相应信息中。需要注意的是cookie的setMaxAge方法用于设置该cookie生命周期,单位是秒,如果过了这个期间,Cookie将失效。setMaxAge方法的参数如果为负值则表示该Cookie将在浏览器关闭时过期,如果参数为0则表示立刻删除该Cookie。访问该地址,对应的请求和响应的HTTP信息为:
请求:
GET /tst/testCookie?option=add HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/x-silverlight, **
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Host: 192.168.5.100:8080
Connection: Keep-Alive
Cookie: cool=yeah!
响应:
HTTP/1.1 200 OK
Server: Apache-Coyote/1.1
Content-Type: text/html;charset=ISO-8859-1
Content-Length: 21
Date: Sun, 29 Jun 2008 06:15:26 GMT
<h2>cool:yeah!</h2>
注意,请求协议头中用于携带cookie信息的格式。

Cookie可以用于保持用户的会话状态,但Cookie信息保存在客户端,存在较大的安全隐患,且一般浏览器对Cookie的数目及数据大小有严格的限制。在Web应用中,一般情况下通过HttpSession对象保持会话状态。


每个Cookie都可以设置一个最大生命周期,如果设置了该值,浏览器将会把该Cookie写到硬盘上。

但如果没有设置Cookie的最大生命周期,这样的Cookie称为会话Cookie,它存在内存中,当浏览器关闭时,该Cookie消失。(session实现机制)


[root@dr-mysql01 test]# cat a7.pl 
use LWP::UserAgent;
use HTTP::Cookies;
  
my $ua = LWP::UserAgent->new();
#my $req = HTTP::Request->new(GET => 'https://www.zjcap.cn');
#my $req = HTTP::Request->new(GET => 'http://blog.csdn.net/zhaoyangjian724/article/details/46792127');
my $req = HTTP::Request->new(GET => 'http://www.renren.com/');
my $cookie_jar=HTTP::Cookies->new(file =>"cookie",autosave => 1, ignore_discard => 1);
$ua->cookie_jar($cookie_jar);
my $res = $ua->request($req);
if ($res->is_success)
{
    print "Login success.\n";
    print $res->as_string;
}
else
{
    die "Login failed.\n";
}
  
[root@dr-mysql01 test]# cat cookie 
#LWP-Cookies-1.0
Set-Cookie3: _r01_=1; path="/"; domain=.renren.com; path_spec; expires="2016-07-02 03:13:35Z"; version=0
Set-Cookie3: anonymid=ibu6y5e5-j3hm8b; path="/"; domain=.renren.com; path_spec; expires="2020-07-06 03:13:35Z"; version=0
Set-Cookie3: depovince=GW; path="/"; domain=.renren.com; path_spec; expires="2015-07-11 03:13:35Z"; version=0
Set-Cookie3: jebecookies=54224c21-f138-4f37-b25c-6e125b3003e5|||||; path="/"; domain=.renren.com; path_spec; discard; version=0
Set-Cookie3: JSESSIONID=abc90y38vLTeZ7GX3PR5u; path="/"; domain=www.renren.com; path_spec; discard; version=0


JSESSIONID=abc90y38vLTeZ7GX3PR5u;  这就是SESSIONID 加密过的

 session里面有保存用户的信息的, 浏览器发送cookie到web服务器, 服务器上的程序收到cookie后, 根据session id 去找相应的session找到后就跳过登陆过程, 读取用户相关信息。 



                    

【perl】使用LWP获取带cookie验证的HTTPS网页

最近想到公司网站下一些文档,结果网站上做了下载总大小限制,没办法只好写个脚本来获取。               运行环境1:Windows XP     StrawberryPerl 5.10 ...
  • ace_fei
  • ace_fei
  • 2012年02月16日 15:16
  • 5148

QT访问网页获取Cookie

  • 2014年11月19日 16:36
  • 347KB
  • 下载

Android Cookie的获取与保存

  • 2015年04月09日 10:35
  • 1.22MB
  • 下载

perl在linux下通过date获取当前时间

zz  :  http://codingstandards.iteye.com/blog/1157513
  • sxlwzl
  • sxlwzl
  • 2014年04月13日 21:58
  • 1568

delphi获取Cookie源码.rar

  • 2015年02月13日 08:15
  • 896B
  • 下载

perl 实现微信登录 获取好友 群信息的简单实现

use LWP::UserAgent; use Net::Ping; use JSON qw(encode_json); use Socket; use Net::SMTP; use LWP; use...

IE cookie获取失败

  • 2013年03月06日 15:13
  • 425B
  • 下载

linux上获取本机ip的各种perl写法

第一种办法,最简单的, 调用 shell:     $ip = `ifconfig eth0|grep -oE '([0-9]{1,3}\.?){4}'|head -n 1`; ​ 注:这里输...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:perl 获取cookie
举报原因:
原因补充:

(最多只允许输入30个字)