首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >按cookie名称从cookie_jar中提取cookie

按cookie名称从cookie_jar中提取cookie
EN

Stack Overflow用户
提问于 2012-07-21 01:13:33
回答 1查看 1.5K关注 0票数 2

我所困扰的是为什么LWP::UserAgent不提供访问器,这样我就可以在cookie_jar中通过提供cookie的名称来获得我想知道的关于cookie的所有信息。我知道cookie_jar上有scan()方法,但是为这么简单的东西提供回调似乎有很大的开销。这就是我现在所拥有的:

代码语言:javascript
复制
#!/usr/bin/env perl

use strict;
use warnings;

use Data::Dump qw (dump);
use WWW::Mechanize;

my $mech = WWW::Mechanize->new;
$mech->get( 'http://www.nytimes.com' );

my %cookies = (); 
$mech->cookie_jar->scan( \&check_cookies );

dump \%cookies;

sub check_cookies {
    my @args = @_; 
    $cookies{ $args[1] } = { 
        version   => $args[0],
        val       => $args[2],
        path      => $args[3],
        domain    => $args[4],
        port      => $args[5],
        path_spec => $args[6],
        secure    => $args[7],
        expires   => $args[8],
        discard   => $args[9],
        hash      => $args[10],
    };  
} 

该脚本的输出如下所示:

代码语言:javascript
复制
{   adxcs => {
        discard   => 1,
        domain    => ".nytimes.com",
        expires   => undef,
        hash      => {},
        path      => "/", 
        path_spec => 1,
        port      => undef,
        secure    => undef,
        val       => "-", 
        version   => 0,
    },       
    RMID => {
        discard   => undef,
        domain    => ".nytimes.com",
        expires   => 1374340257,
        hash      => {},
        path      => "/", 
        path_spec => 1,
        port      => undef,
        secure    => undef,
        val       => "02b4bc821c00500991212ba2",
        version   => 0,
    },       
}

所以,这让我可以很容易地通过名字访问cookie,但我想知道是否有更简单的方法来做到这一点,或者是否有一个有用的模块我只是不知道。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-07-21 01:46:08

代码语言:javascript
复制
$cookies->scan(sub  
{ 
  if ($_[1] eq $name) 
  { 
    print "$_[1] @ $_[4] = $_[2]\n"; 
  }; 
}); 

输出将是例如:

代码语言:javascript
复制
sessionID @ www.nytimes.com = 1234567890

编辑:>>

代码语言:javascript
复制
sub getCookieValue
{
  my $cookies = $_[0];
  my $name = $_[1];
  my $result = null;
  $cookies->scan(sub  
  {  
    if ($_[1] eq $name) 
    { 
      $result = $_[2];
    }; 
  });
  return $result;
}

像这样使用它:

代码语言:javascript
复制
print getCookieValue($cokies, 'sessionID');
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11584039

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档