Я пытаюсь автоматизировать сбор ссылок с сайта, который сначала запрашивает капчу. Для этого я фиксирую изображение капчи, чтобы ее можно было решить извне, а затем отправляю решение как часть полей формы. Почему-то не работает. Я подозреваю, что проблема с файлами cookie, но я не уверен, и был бы признателен, если бы кто-нибудь мог это понять.
Вот код. Сначала я создаю объект меха вместе с его банкой с печеньем:
$cookie_jar = HTTP::Cookies->new;
$agent = WWW::Mechanize->new(cookie_jar => $cookie_jar);
$agent->get("http://www.site.com/page.html");
Нахожу интересующую ссылку:
$link = $agent->find_link(tag => "a", text_regex => qr{regex});
$url = $link->url;
$agent->get($url);
На этом этапе сайт представляет капчу. Я извлекаю изображение и сохраняю его, чтобы его мог решить человек, который затем вводит решение, чтобы продолжить:
$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 = <>;
Теперь, когда в скрипт введено решение капчи вручную, можно продолжить, отправив форму:
$agent->form_with_fields('code');
$agent->set_fields(code => $solved, action => 'download');
$agent->submit;
Однако это не работает. В результате страница снова запрашивает капчу, а не ожидаемая страница с информацией, которую я ищу.
Мне интересно, теряется ли/сбрасывается ли cookie, когда я делаю $agent->back после сохранения изображения с картинки?
Спасибо за любые подсказки!