Un coup d'œil sur le javascript sur la page Firefox révèle:
// 2. Build download.mozilla.org URL out of those vars.
download_url = "http://download.mozilla.org/?product=";
download_url += product + '&os=' + os + '&lang=' + lang;
Il suffit donc de modifier votre URL:
http://www.mozilla.com/products/download.html?product=firefox-3.6.3&os=win&lang=en-US
à
http://download.mozilla.org/?product=firefox-3.6.3&os=win&lang=en-US
Alors maintenant, je vais vérifier les en-têtes pour voir ce que nous obtenons vraiment ...
$ curl -I "http://download.mozilla.org/?product=firefox-3.6.3&os=win&lang=en-US"
HTTP/1.1 302 Found
Server: Apache
X-Backend-Server: pp-app-dist09
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, private
Content-Type: text/html; charset=UTF-8
Date: Sat, 08 May 2010 21:02:50 GMT
Location: http://mozilla.mirror.ac.za/firefox/releases/3.6.3/win32/en-US/Firefox Setup 3.6.3.exe
Pragma: no-cache
Transfer-Encoding: chunked
Connection: Keep-Alive
Set-Cookie: dmo=10.8.84.200.1273352570769772; path=/; expires=Sun, 08-May-11 21:02:50 GMT
X-Powered-By: PHP/5.1.6
Donc, ceci est en fait une redirection 302, alors utilisez maintenant ce qui est dans l'en-tête Location comme votre nouvelle URL pour obtenir le fichier réel. Vous aurez besoin de comprendre comment faire une demande et lire les en-têtes vous-même (désolé, je n'ai pas beaucoup de temps). Une fois que vous analysez l'en-tête de l'emplacement, vous pouvez enlever le reste de l'emplacement en utilisant regex pour obtenir le nom du fichier pour enregistrer le fichier ainsi:
>>> location = 'http://mozilla.mirror.ac.za/firefox/releases/3.6.3/win32/en-US/Firefox Setup 3.6.3.exe'
>>> re.match('^.*/(.*?)$', location).groups()[0]
'Firefox Setup 3.6.3.exe'
Donc, pour obtenir le nom de fichier réel que vous devrez suivre la 302 vous-même. Le code nécessaire pour cela je vous laisse, mais j'espère que cela vous indiquera la bonne direction.
Comment pouvez-vous télécharger quelque chose si vous ne savez pas quoi télécharger? Vous avez besoin d'un identifiant. S'il vous plaît clarifier votre question. –
Désolé je veux dire un nom de fichier pour le téléchargement pour enregistrer sous. Je connais l'URL. J'espère que cela à du sens. –
Je ne sais pas si je comprends votre question: vous voulez extraire un nom de fichier d'une URL donnée, puis l'utiliser comme nom de fichier sous un répertoire défini par l'utilisateur? – Birt