【问题标题】:Perl Cookie not workingPerl Cookie 不工作
【发布时间】:2011-03-20 10:07:39
【问题描述】:

我已经花了一整天的时间寻找答案:

我将 Perl 与 LWP::UserAgent 和 HTTP::Cookies 一起使用。

我的问题是我无法通过基于 cookie 的年龄检查。

在 Perl 中我使用以下代码:

my $browser = LWP::UserAgent->new;
my $resp = $browser->get( $url, 'User-Agent' => 'MySpider/1.0' );

#Cookie Setup
my $cookies = HTTP::Cookies->new();
$cookies->set_cookie(1,'age_check', '1','/','.example.com/', 80, ,0,3354512128, 0);
$browser->cookie_jar($cookies);

网站正在使用 JavaScript 设置 Cookie

function saveSplash(domain) {
    var expDate = new Date();
    expDate.setTime(expDate.getTime()+(1*24*3600*1000));
    setCookie("age_check", 1, expDate, '/', domain);
    setCookie("screen_width", getScreenWidth(), expDate, '/', domain);
}

这是我的浏览器保存的 Cookie:

age_check
1
example.com/
1088
3354512128
30140182
2646218624
30139981

知道我做错了什么吗?

提前谢谢各位!

【问题讨论】:

    标签: javascript perl cookies


    【解决方案1】:

    我发现您的set_cookie 通话存在两个问题。首先,域应该是".example.com",不带斜线;斜线在路径参数中指定。其次,您缺少 path_spec 参数的值,因此您为 discard (0) 指定的值被用于 maxage,这会导致 cookie 过期。

    【讨论】:

      【解决方案2】:

      (更新:完全没有抓住重点。)

      我希望你并没有真的整天都在寻找。 :( 在 Google 上LWP::UserAgent JavaScript 的第一个结果是Handling Javascript with LWP::UserAgent,它给出了一个妙语:它不支持 JavaScript。不过有几个选项。

      在 CPAN 上检查 Mechanize JavaScript。它导致WWW::Mechanize::FirefoxWWW::Mechanize::Plugin::JavaScript。还有使用WWW::Selenium 编写的脚本,这有点棘手,但可以完美地模拟浏览器,因为它确实在运行浏览器。

      更新:忘记了 WWW::Scripter,它实际上与 Mech::Plugin::JavaScript 相关。

      【讨论】:

      • OP 显然知道 Mech 不支持 Javascript。这就是他尝试手动设置 cookie 的原因。
      猜你喜欢
      • 2018-10-16
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 2012-01-25
      • 2012-04-29
      • 2012-11-07
      • 1970-01-01
      • 2011-06-21
      相关资源
      最近更新 更多