我試圖自動從首先要求驗證碼的網站收集鏈接。 爲此,我捕獲驗證碼圖像以便可以在外部解決,然後將解決方案作爲表單字段的一部分提交。 不知何故,它不起作用。我懷疑是一個餅乾問題,但我不確定,如果有人可以弄清楚這一點,將不勝感激。Perl WWW ::機械化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;
但是這不起作用。結果是頁面再次詢問驗證碼,而不是預期的頁面和我之後的信息。
我想知道當我在保存驗證碼圖片後執行$ agent-> back時cookie是否丟失/重置?
感謝您的任何提示!
感謝您的意見。我不是他們會使用一個唯一的ID,但會驗證。然而,圖片的網址是動態的(captcha.php),所以讓它在外面不起作用。 – emx