Je rencontre des problèmes pour télécharger un fichier mp4 à l'aide de WWW :: Mechanize. Un navigateur normal, comme Firefox, peut faire la récupération de fichiers sans problème avec ou sans Javascript activé. Donc il me semble que Javascript, le suspect habituel, n'a pas vraiment joué de rôle dans mon problème. J'ai également ajouté dans mon script les mêmes en-têtes que ceux envoyés par Firefox au serveur de fichiers lors de l'extraction afin que le serveur puisse voir Mechanize comme un navigateur normal, mais le problème persiste. Et Win32 :: IE :: Mechanize peut aussi bien faire le travail mais pourquoi Mechanize ne peut pas?Pourquoi une erreur Internal Server se produit-elle lors de l'utilisation de Mechanize pour récupérer les fichiers?
Des idées? Merci d'avance :)
Voici un mon script:
use strict;
use warnings;
use WWW::Mechanize;
my $browser = WWW::Mechanize->new();
$browser->cookie_jar(HTTP::Cookies->new());
$browser->add_header('User-Agent' => 'Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.9.1.11) Gecko/20100701 Firefox/3.5.11');
$browser->add_header('Accept' => 'text/xml,application/xml,application/xhtml+xml;q=0.9,*/*;q=0.8');
$browser->add_header('Accept-Language' => 'zh-cn,zh;q=0.5');
$browser->add_header('Accept-Encoding' => 'gzip,deflate');
$browser->add_header('Accept-Charset' => 'GB2312,utf-8;q=0.7,*;q=0.7');
$browser->add_header('Keep-Alive' => 300);
$browser->add_header('Connection' => 'keep-alive');
my $url = 'http://119.167.217.206:19765/ppvaplaybyopen?url=http://119.167.217.206/%d3%e9%c0%d6%b0%d9%b7%d6%b0%d9-100803-%d0%a1%d6%ed%bd%dc%c2%d7%b7%d6%d7%e9%d0%e3%c7%f2%bc%bc.mp4/segno=0%26&rid=A8F1F5DFEB1B11F1D90B40AD1BB75D69&filelength=21293994&blocksize=2097152&blocknum=11&blockmd5=E210862B3F92935D0883E00AA2A38F0[email protected]@[email protected][email protected]@[email protected][email protected]@[email protected][email protected]';
$browser->get($url);
Je reçois le message d'erreur suivant:
Error GETing http://119.167.217.206:19765/ppvaplaybyopen?url=http://119.167.217.206/%d3%e9%c0%d6%b0%d9%b7%d6%b0%d9-100803-%d0%a1%d6%ed%bd%dc%c2%d7%b7%d6%d7%e9%d
0%e3%c7%f2%bc%bc.mp4/segno=0%26&rid=A8F1F5DFEB1B11F1D90B40AD1BB75D69&filelength=21293994&blocksize=2097152&blocknum=11&blockmd5=E210862B3F92935D0883E00AA2A38F08
@[email protected][email protected]@[email protected]
[email protected]@[email protected][email protected]@9D93A9BE1D2EDE216AA9EB
F26BF414BE: Internal Server Error at E:\pp2.pl line 17
merci pour les pointeurs. J'ai utilisé Live HTTP Headers pour enregistrer les en-têtes envoyés au serveur, puis ajouté ces têtes dans mon script. J'ai également essayé de supprimer tous les cookies et ensuite en ouvrant l'URL dans IE, la boîte de dialogue de sauvegarde de fichier apparaîtrait comme prévu. Maintenant, comme vous l'avez suggéré, j'ai aussi essayé d'ajouter un referer dans mon script, mais pas de chance. Eh bien, je me demandais si ce n'était pas Javascript, en-têtes, et les cookies, quoi d'autre pourrait être la cause du problème. – Mike