Page 1 sur 1
[R] Problème de téléchargement avec InetGet
Posté : ven. 01 avr. 2016 09:33
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.
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) ExitEndFunc ;==>_Download_OK
Voici le code
qui ne fonctionne pas (
donc le même avec
$url et
$fichier modifiés) :
► Afficher le textecode
_Download_KO
()Func _Download_KO
() $url = "http://download.nirsoft.net/nirsoft_package_1.19.79.zip" $fichier = @DesktopDir & "\nirsoft_package.zip" 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) ExitEndFunc ;==>_Download_KO
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
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. ^^
++
Re: [..] Problème de téléchargement avec InetGet
Posté : ven. 01 avr. 2016 11:17
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.
Re: [..] Problème de téléchargement avec InetGet
Posté : ven. 01 avr. 2016 11:26
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
Re: [..] Problème de téléchargement avec InetGet
Posté : ven. 01 avr. 2016 11:38
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.
++
Re: [..] Problème de téléchargement avec InetGet
Posté : ven. 01 avr. 2016 14:29
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 ?)
Re: [..] Problème de téléchargement avec InetGet
Posté : ven. 01 avr. 2016 19:40
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.
Re: [..] Problème de téléchargement avec InetGet
Posté : ven. 01 avr. 2016 20:30
par walkson
Tu l'as trouvé où, sans indiscrétion ?
Le plus simplement du monde, en cherchant nirsoft_package_1.19.79 sur Google
[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é

Re: [..] Problème de téléchargement avec InetGet
Posté : ven. 01 avr. 2016 20:35
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.
Re: [..] Problème de téléchargement avec InetGet
Posté : lun. 04 avr. 2016 19:51
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.
++