Почему время ожидания моей программы WWW :: Mechanize при попытке входа в систему? - PullRequest
1 голос
/ 22 апреля 2010

Сайт, на котором я просматривал скрининг (на который у меня есть кредиты), недавно изменил свой сервер и заблокировал порт 80. Я подумал, что могу просто использовать порт 443 для https, но сейчас получаю ошибку тайм-аута. Я просто создаю новый объект WWW :: Mechanize и использую get () для очистки сайта.

У меня вопрос: нужно ли добавлять cookie сейчас, когда они используют https?

Это правильный способ добавить банку печенья?

my $agent = WWW::Mechanize->new();

$agent->agent('Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.2.3) Gecko/20100407 Ubuntu/9.10 (karmic) Firefox/3.6.3');

# we need cookies
$agent->cookie_jar(HTTP::Cookies->new);

Это ошибка:

Попытка войти ... 2010-04-22
14:00:08 Ошибка POSTing
https://theURL/j_security_check:
Время, отведенное для процесса входа был превышен. Если вы хотите продолжить вы должны либо нажать назад дважды и повторно нажмите на ссылку, которую вы просили или закройте и снова откройте браузер в lib / mypackage.pm строка 40

Это даже проблема с cookie?

Есть ли способ увеличить время входа в систему, даже если я захожу на сайт через браузер, кажется, что для входа в систему требуется от 60 до 90 секунд.

Ответы [ 2 ]

3 голосов
/ 22 апреля 2010

WWW :: Mechanize построен поверх LWP :: UserAgent , поэтому вы можете использовать методы LWP :: UserAgent.Время ожидания по умолчанию составляет 180 секунд, что уже очень долго, но вы можете изменить его на любое значение, которое вам нравится, с помощью метода timeout:

 $mech->timeout( $really_long_value );

Это время ожидания не является общим временем запроса, но простой на сокете, который будет терпеть пользовательский агент.Если он не получает взаимодействия в течение этого времени, запрос должен завершиться неудачей.

Однако, похоже, что у сервера, вероятно, есть проблема, так как это занимает много времени, даже если вы делаете это вручную.Вы можете упомянуть это тому, кто управляет этим сайтом.Это сообщение об ошибке очень подозрительно.Без дополнительной информации о сервере и т. Д. Очень трудно сказать вам, что происходит.

Что касается проблемы с cookie, просто посмотрите HTTP-разговор, когда вы попробуете его вручную.Делайте то, что делает ваш интерактивный браузер.Если он отправляет куки, сделайте это.Если он использует другую форму аутентификации, сделайте это и так далее.Возможно, они изменили больше, чем схема, когда отключили порт 80.

1 голос
/ 01 марта 2011

Это старая статья, но я подумал, что вам может потребоваться убедиться, что поддержка SSL загружена, так как она обычно не включена по умолчанию.

use WWW::Mechanize;
require IO::Socket::SSL;

Далее, убедитесь, что все ваши URL начинаются с https. Я обнаружил это после 3 дней отладки.

...