[R] Problème de téléchargement avec InetGet

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

[R] Problème de téléchargement avec InetGet  

#1

Message par franco »

Bonjour à tous.

J'ai un souci avec un code qui me permet de télécharger un fichier...
Je pense certainement que le souci ne vient pas du code en lui-même, car il fonctionne, sauf pour un seul fichier.

Je pense donc qu'il y a un système de protection contre les téléchargements externes.
Mais je peux me tromper, d'où ma demande d'aide. :wink:

Donc j'ai fait deux codes :
- Le premier télécharge avec succès un fichier d'installation (le "setup" de Skype).
- Le second traite NirLauncher Package, mais n'arrive pas à le télécharger.

Il n'y pas d'erreur de code.
En effet, InetGetSize($url) me renvoit '0' alors qu'il s'agit du lien direct.


Voici le code qui fonctionne :
_Download_OK()

Func _Download_OK()
   $url = "http://www.skype.com/go/getskype-full"
   $fichier = @DesktopDir & "\skypefull.exe"

   Global $Form1 = GUICreate("Form1", 250, 20, 192, 124, $WS_POPUP)
   $avancement = GUICtrlCreateLabel("0 %", 210, 1, 100, 15)
   GUICtrlSetFont(-1, 10, 5500, 0, "comic sans ms")
   $Progression = GUICtrlCreateProgress(0, 0, 200, 20)

   GUISetState(@SW_SHOW)

   $myDL = InetGet($url, $fichier, 1, 1)
   GUICtrlSetColor(-1, 0xFF0000)
   GUICtrlSetFont(-1, 8, 400, 0, "comic sans ms")
   $Taille_MAX = InetGetSize($url)
   $Taille_MIN = 0
   $pourcent = 0
   If $Taille_MAX <= 0 Then
      MsgBox(0, "", "erreur")
      Exit
   EndIf
   Do
      Sleep(50)
      $Taille_MIN = InetGetInfo($myDL, 0)
      $pourcent = Int(($Taille_MIN / $Taille_MAX) * 100)
      GUICtrlSetData($Progression, $pourcent)
      GUICtrlSetData($avancement, $pourcent & " %")
   Until InetGetInfo($myDL, 2) ; Check if the download is complete.
   InetClose($myDL) ; Close the handle to release resources.
   GUICtrlSetData($Progression, 0)
   ShellExecute(@DesktopDir)
   Exit
EndFunc   ;==>_Download_OK
Voici le code qui ne fonctionne pas (donc le même avec $url et $fichier modifiés) :
► Afficher le textecode
Comme dit plus haut, je pense qu'InetGet a du mal avec ce "site".

Existe-t-il un autre moyen qu'InetGet ?
Ou existe-t-il une solution pour qu'InetGet fonctionne ?


Merci à tous :)
Et bonne journée / soirée :mrgreen:

PS :
Tiens, ça me fait penser que j'ai oublié de demander un renseignement au chef... Vais le MP bientôt, j'ai encore du ménage à faire. ^^

++
Modifié en dernier par franco le lun. 04 avr. 2016 19:52, modifié 1 fois.
L'entraide, c'est mon dada ;)
Oversid3
Niveau 3
Niveau 3
Messages : 45
Enregistré le : jeu. 29 janv. 2015 11:20
Status : Hors ligne

Re: [..] Problème de téléchargement avec InetGet

#2

Message par Oversid3 »

Je ne sais pas chez toi mais pour moi la deuxieme adresse renvoi :

Code : Tout sélectionner

Forbidden

You don't have permission to access /nirsoft_package_1.19.79.zip on this server.

Additionally, a 404 Not Found error was encountered while trying to use an ErrorDocument to handle the request.
Avatar du membre
TomAijerrie
Niveau 5
Niveau 5
Messages : 192
Enregistré le : lun. 02 juin 2014 09:55
Localisation : Lyon
Status : Hors ligne

Re: [..] Problème de téléchargement avec InetGet

#3

Message par TomAijerrie »

Bonjour, j'ai testé tes scripts, puis j'ai essayé avec un navigateur.

Pour le fichier qui te pose problème, j'ai une erreur 403 (accès interdit)

Il faut peut-être faire quelques requêtes pour s'identifier avant de tenter le téléchargement ?
En tout cas, InGet fonctionne normalement, le problème est que ton script n'a pas les autorisations requises pour accéder à ce fichier
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Problème de téléchargement avec InetGet

#4

Message par franco »

Salut.

« Il faut peut-être faire quelques requêtes pour s'identifier avant de tenter le téléchargement ?
En tout cas, InGet fonctionne normalement, le problème est que ton script n'a pas les autorisations requises pour accéder à ce fichier »

Etant donné que le site n'est pas le mien, je vois mal comment faire pour m'identifier.


Je n'ai pas d'erreur 403 ni 404.
Mais je n'ai testé qu'avec Firefox.


Et ensuite, je me suis dis avec une commande de type _IE(...), je pourrais peut-être faire quelque chose.


Quoiqu'il en soit, merci pour vos réponses.


++
L'entraide, c'est mon dada ;)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Problème de téléchargement avec InetGet

#5

Message par walkson »

Bonjour,
Je confirme TomAijerrie, et si on insiste, IP bloqué. D'ailleurs, il prévienne
Notice: Don't use any aggressive download manager that opens multiple connections. If you do so, your IP address might be blocked from downloading this package.
Utiliser _IE(...) risque de ne pas marcher. La solution serait de mettre le programme sur son site en téléchargement ou d'utiliser une autre adresse comme https://www.accessibiliteprogrammes.fr/ ... hargement/
RMQ: je n'ai pas testé si l'adresse proposée est clean et les MD5 Hash
RMQ 2 : nirsoft_package_1.19.79.zip est bloqué par Avast (mais quel programme n'est pas bloqué par Avast ?)
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Problème de téléchargement avec InetGet

#6

Message par franco »

Salut.

Merci Walkson

Surtout pour ce lien : https://www.accessibiliteprogrammes.fr/ ... hargement/
Tu l'as trouvé où, sans indiscrétion ?


@+ et merci à tous.
L'entraide, c'est mon dada ;)
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1037
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Problème de téléchargement avec InetGet

#7

Message par walkson »

Tu l'as trouvé où, sans indiscrétion ?
Le plus simplement du monde, en cherchant nirsoft_package_1.19.79 sur Google :mrgreen:

[EDIT] Mauvaise idée que je viens de proposer !
le poids des Zip n'est pas identique sur les deux sites
Sur https://www.accessibiliteprogrammes.fr/ ... hargement/, il a été modifié donc suspect !!!
Désolé :cry:
Modifié en dernier par walkson le ven. 01 avr. 2016 22:11, modifié 1 fois.
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Problème de téléchargement avec InetGet

#8

Message par orax »

J'ajoute que pour éviter cette erreur 403, il faudrait spécifier l'en-tête HTTP Referer.
Un simple test le prouve avec ce script PowerShell trouvé sur https://chocolatey.org/packages/nirlauncher
$url = 'http://download.nirsoft.net/nirsoft_package_1.19.79.zip'
 
$tempDir = "e:\temp"
$zipFile = Join-Path $tempDir "temp.zip"
 
$referer = "http://launcher.nirsoft.net/download.html"
$wc = New-Object System.Net.WebClient
# Si la ligne ci-dessous est commentée on retrouve l'erreur 403.
$wc.Headers.Add("Referer", $referer)
$wc.DownloadFile($url, $zipFile)
Avec InetGet, ça ne sera pas possible. Il faudra utiliser WinHttpRequest (avec ObjCreate) ou autre chose.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 343
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Problème de téléchargement avec InetGet

#9

Message par franco »

Salut.

Problème résolu.
Grâce à ce bon vieux wget.

En effet, on peut télécharger le fichier en incluant l'entête 'Referer:URL'
Usage: wget [OPTION]... [URL]...
Téléchargement:
-t, --tries=NOMBRE fixer le NOMBRE de tentatives de reprises (0 sans limite).
--retry-connrefused ré-essayer même si la connexion est refusée.
-O, --output-document=FICHIER écrire les documents dans le FICHIER.
-E, --html-extension sauvegarder les documents HTML avec la terminaison `.html'.
--ignore-length ignorer le champ de l'en-tête `Content-Length'.
--header=CHAÎNE insérer la CHAÎNE à travers les en-têtes.
--max-redirect maximum redirections allowed per page.
--proxy-user=USAGER fixer le nom d'USAGER proxy.
--proxy-password=MDP fixer le MDP (mot de passe) du proxy.
--referer=URL inclure l'en-tête `Referer: URL' dans la requête HTTP.
Et donc cette ligne de commande (CMD) m'a permis donc de télécharger le fichier convoité.

Code : Tout sélectionner

wget -O test.zip -E --referer=URL  http://download.nirsoft.net/nirsoft_package_1.19.80.zip
Bien entendu, il est facile par la suite de l'adapter en AutoIt.

Il faut juste les binaires de wget (wget.exe suffit) et les dépendances de wget (les fichiers dll suffisent) : http://gnuwin32.sourceforge.net/packages/wget.htm
Et ensuite, fileinstall.


Tant que je ne trouve pas faire autrement, j'opterai pour cette option.


++
L'entraide, c'est mon dada ;)
Répondre