Я пытаюсь автоматизировать сбор ссылок с сайта, который сначала запрашивает капчу.Для этого я фиксирую изображение капчи, чтобы его можно было решить извне, а затем отправляю решение как часть полей формы.Как-то это не работает.Я подозреваю, что проблема с cookie, но я не уверен, и был бы признателен, если бы кто-нибудь мог понять это.
Вот код.Сначала я создаю объект меха вместе с его jar-файлом 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-> обратно после сохраненияизображение с картинки?
Спасибо за любые подсказки!