首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Perl WWW::机械化cookie问题

Perl WWW::机械化cookie问题
EN

Stack Overflow用户
提问于 2011-08-12 23:20:01
回答 2查看 2.6K关注 0票数 3

我正试图自动化从一个网站的链接收集,要求验证码首先。为此,我捕获了验证码图像,以便可以在外部解决它,然后将解决方案作为表单域的一部分提交。不知何故,它不起作用。我怀疑是cookie问题,但我不确定,如果有人能解决这个问题,我将不胜感激。

下面是代码。首先,我创建了mech对象及其cookie jar:

代码语言:javascript
复制
$cookie_jar = HTTP::Cookies->new;
$agent = WWW::Mechanize->new(cookie_jar => $cookie_jar);
$agent->get("http://www.site.com/page.html");

我找到了感兴趣的链接:

代码语言:javascript
复制
$link = $agent->find_link(tag => "a", text_regex => qr{regex});
$url = $link->url;
$agent->get($url);

在这个阶段,站点提供了验证码。我提取图像并保存它,这样人类就可以解决它,然后进入解决方案继续:

代码语言:javascript
复制
$captcha = $agent->find_image(url_regex => qr{captcha\.php});
$agent->get($captcha->url, ':content_file' => 'captcha.jpg');
print "Please solve captcha at http://my.own.site/captcha.jpg\n";
$agent->back;
print "Enter answer: ";
$solved = <>;

现在脚本已经手动输入了验证码解决方案,它可以通过提交表单继续:

代码语言:javascript
复制
$agent->form_with_fields('code');
$agent->set_fields(code => $solved, action => 'download');
$agent->submit;

然而,这并不起作用。结果是页面再次询问验证码,而不是我想要的带有信息的预期页面。

我想知道当我在保存验证码图像后执行$agent->back时,cookie是否丢失/重置?

谢谢你的任何提示!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-08-14 10:01:34

我找到了一种更简单的方法来处理这个问题。这就是它:

  1. 使用web浏览器访问站点
  2. 解决验证码
  3. 打开生成的cookie并记下会话in
  4. 然后在脚本中,使用该会话in

设置cookie <>G29

就像一种护身符。

代码语言:javascript
复制
$phpsessid = '4d93c8f247b49780';
$cookie_jar = HTTP::Cookies->new;
$agent = WWW::Mechanize->new(cookie_jar => $cookie_jar);
$agent->get($url);
$cookie_jar->clear;
$cookie_jar->set_cookie(undef, "SESSIONID", $sessionid, "/", $domain, undef, 1, 0, undef, 1);
票数 2
EN

Stack Overflow用户

发布于 2011-08-12 23:53:08

你正在访问的网站很可能已经有了一些方法来检测和阻碍自由浏览;这意味着,例如,返回一个或多个页面,然后再前进。这通常是通过将一个唯一的id关联到每个页面来实现的,这样当您两次提交id时,就可以清楚地看到您浏览回来,然后再从那里继续浏览。正如您所说,这与使用back有关。

我想知道的是,你是否真的需要去back。关键是将镜像下载到代理之外,这样代理状态就不会被修改。您可以使用第二个代理或curl,因为您有指向图像的直接URL…

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/7042325

复制
相关文章

相似问题

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