Если ваш файл cookie сеанса изменяется при каждой загрузке страницы, то, скорее всего, вы входите в систему неправильно. Но вы можете попытаться заставить JSESSIONID быть одинаковым для каждого запроса. Создайте свою собственную банку с печеньем и скажите WWW :: Mechanize, чтобы она использовалась:
my $cookie_jar = HTTP::Cookies->new(file => 'cookies', autosave => 1, ignore_discard => 1);
my $agent = WWW::Mechanize->new(cookie_jar => $cookie_jar, autocheck => 0);
ignore_discard => 1
означает, что даже файлы cookie сеанса сохраняются на диск (обычно они удаляются из соображений безопасности).
Затем, после входа в систему, позвоните:
$cookie_jar->save;
Затем, после каждого запроса:
$cookie_jar->revert; # re-loads the save
Кроме того, вы можете использовать подкласс HTTP :: Cookies и переопределить метод set_cookie
, чтобы отклонить переустановку cookie сеанса, если он уже существует.
Также я думаю, что сайт требует CERT (ну, в браузере это делает), это будет правильный способ добавить его?
Некоторые браузеры (например, Internet Explorer) запрашивают сертификат безопасности, даже если он не нужен. Если вы не получаете никаких ошибок, а содержимое ответа выглядит хорошо, вам, вероятно, не нужно его устанавливать.
Если у вас есть файл сертификата, проверьте POD для Crypt :: SSLeay . Ваш сертификат имеет кодировку PEM0, так что да, вы хотите установить $ENV{HTTPS_CERT_FILE}
на путь вашего сертификата. Возможно, вы захотите установить $ENV{HTTPS_DEBUG} = 1
, чтобы увидеть, что происходит.