2010-04-22 7 views
1

Le site sur lequel j'ai été scrappé récemment a changé de serveur et a bloqué le port 80. Je pensais pouvoir utiliser le port 443 pour https mais j'ai maintenant une erreur de timeout. Je crée juste un nouvel objet WWW :: Mechanize et utilise get() pour gratter le site.Pourquoi mon programme WWW :: Mechanize expire-t-il lorsqu'il essaie de se connecter?

Ma question est, ai-je besoin d'ajouter le cookie maintenant qu'ils utilisent https?

Est-ce la bonne façon d'ajouter le cookie jar?

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); 

C'est l'erreur:

Trying to log in... 2010-04-22
14:00:08 Error POSTing
https://theURL/j_security_check :
The time allowed for the login process has been exceeded. If you wish to continue you must either click back twice and re-click the link you requested or close and re-open your browser at lib/mypackage.pm line 40

Est-ce même un problème de cookie?

Y at-il un moyen d'augmenter le temps de connexion, même si je me connecte sur le site via un navigateur, il se sent comme il faut un bon 60 à 90 secondes avant de me connecter.

Répondre

3

WWW::Mechanize est construit au-dessus de LWP::UserAgent, de sorte que vous pouvez utiliser les méthodes LWP :: UserAgent. Le délai d'attente par défaut est de 180 secondes, ce qui est déjà très longue, mais vous pouvez le changer pour être une valeur que vous aimez en utilisant la méthode timeout:

$mech->timeout($really_long_value); 

Ce délai est pas le temps de la demande totale, mais au ralenti temps sur le socket que l'utilisateur-agent tolérera. S'il ne reçoit aucune interaction dans ce délai, la demande doit échouer. Cependant, il semble que le serveur a probablement un problème car il prend tellement de temps même lorsque vous le faites manuellement. Vous pourriez mentionner ceci à celui qui dirige ce site. Ce message d'erreur est très suspect. Sans plus de détails sur le serveur, etc., il est très difficile de vous dire ce qui se passe. En ce qui concerne le problème des cookies, il suffit de regarder la conversation HTTP lorsque vous l'essayez manuellement. Faites ce que votre navigateur interactif fait. S'il envoie des cookies, faites-le. S'il utilise une autre forme d'authentification, faites-le, et ainsi de suite. Ils ont peut-être changé plus que le schéma lorsqu'ils ont désactivé le port 80.

1

Ceci est un ancien article, mais je pensais que vous auriez besoin de vous assurer que le support SSL est chargé, car il n'est généralement pas activé par défaut. En outre, assurez-vous que toutes vos URL commencent par https. Je l'ai trouvé après 3 jours de débogage.