[..] Souci pour télécharger un seul fichier... Protection ?

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

[..] Souci pour télécharger un seul fichier... Protection ?

#1

Message par franco »

Bonjour à toutes et à tous.

Pour faire simple : je me créai des scripts qui me permette de télécharger les applications installées sur mon PC...

Du style : 7zip, Agent Ransack, etc...


Et je me sers de deux méthodes pour récupérer le lien direct du fichier en question :
- En récupérant le code source.
- En utilisant les fonctions _IE (_IECreate & _IELinkGetCollection)


J'y arrive....


Mais il y a qu'un seul fichier dont je n'arrive pas à télécharger via un script...
Et... c'est : le fichier pack débutant FR de notre chef (^^)
=> https://www.autoitscript.fr/forum/viewtopic.php?t=2571
=> et donc : https://www.autoitscript.fr/download/in ... AutoIt-Fr/

Parlons de 7Zip :
1. Je le télécharge avec ce script (en récupérant le lien via le code source) :
#include <File.au3>
#include <Inet.au3>

$Destination = @DesktopDir & "\Mes programmes"

$lien = "http://www.7-zip.org/download.html"
$cs = "codesource.txt"
$cst = FileOpen($cs,2)
FileWrite($cst,_INetGetSource($lien))
FileClose($cst)

For $a = _FileCountLines($cs) to 1 step -1
   If StringInStr(FileReadLine($cs,$a),'-x64.exe') then $7zip_x64 = FileReadLine($cs,$a)
   If StringInStr(FileReadLine($cs,$a),'.exe') and not StringInStr(FileReadLine($cs,$a),'-x64.exe') then $7zip_x86 = FileReadLine($cs,$a)
Next
if @OSArch = "X86" then $7zip_exe = 'http://www.7-zip.org/'& _FindBetweenString($7zip_x86, '<A href="', '">Download')
If @OSArch <> "X86" then $7zip_exe = 'http://www.7-zip.org/'& _FindBetweenString($7zip_x64, '<A href="', '">Download')
$Fichier_7zip_T = @TempDir & "\7zip_inst.exe"
$Fichier_7zip = $Destination & "\7zip_inst.exe"

$myDL = InetGet($7zip_exe, $Fichier_7zip_T, 1, 1)
Do
   Sleep(250)
Until InetGetInfo($myDL, 2) ; Check if the download is complete.
Local $nBytes = InetGetInfo($myDL, 0)
InetClose($myDL) ; Close the handle to release resources.

If FileExists($Fichier_7zip_T) Then
   DirCreate($Destination)
   FileMove($Fichier_7zip_T, $Fichier_7zip, 1)
EndIf

FileDelete($cs)
ShellExecute($Destination)

Func _FindBetweenString($Line, $char1, $char2)
        $part1 = StringRegExpReplace($Line, "^.*" & $char1, "")
        $Term = StringRegExpReplace($part1, "\" & $char2 & ".*", "")
        Return SetExtended(1, $Term)
EndFunc   ;==>Fonction crée _FindBetweenString
2. Et sinon, je le télécharge comme ceci (en récupérant le lien avec les fonctions _IE citées précédemment ) :
#include <IE.au3>
#include <Inet.au3>

$Destination = @DesktopDir & "\Mes programmes"

$lien = "http://www.7-zip.org/download.html"
$oIE = _IECreate($lien, 1, 0)
$oLinks = _IELinkGetCollection($oIE)
Local $iNumLinks = @extended

While 1
   For $oLink In $oLinks
      If @OSArch <> "X86" Then
         If StringInStr($oLink.href, "-x64.exe") Then
            $7zip_exe = $oLink.href
            ExitLoop
         EndIf
      Else
         If Not StringInStr($oLink.href, "-x64.exe") And StringInStr($oLink.href, ".exe") Then
            $7zip_exe = $oLink.href
            ExitLoop
         EndIf
      EndIf
   Next
   ExitLoop
WEnd

$Fichier_7zip_T = @TempDir & "\7zip_inst.exe"
$Fichier_7zip = $Destination & "\7zip_inst.exe"

$myDL = InetGet($7zip_exe, $Fichier_7zip_T, 1, 1)
Do
   Sleep(250)
Until InetGetInfo($myDL, 2) ; Check if the download is complete.
Local $nBytes = InetGetInfo($myDL, 0)
InetClose($myDL) ; Close the handle to release resources.

If FileExists($Fichier_7zip_T) Then
   DirCreate($Destination)
   FileMove($Fichier_7zip_T, $Fichier_7zip, 1)
EndIf

ShellExecute($Destination)
Ces deux scripts fonctionnent:


Par contre, j'utilise la méthode avec les fonctions _IE.
Malgré que je récupère bien le bon lien : impossible de le télécharger, comme je le fais avec 7zip


#include <IE.au3>
#include <File.au3>
#include <Inet.au3>

$Destination = @DesktopDir & "\Mes programmes"

$lien = "https://www.autoitscript.fr/download/download/AutoIt_Addon/Pack_AutoIt-Fr/"
$oIE = _IECreate($lien, 1, 0)
$oLinks = _IELinkGetCollection($oIE)
Local $iNumLinks = @extended

For $oLink In $oLinks
   If StringInStr($oLink.href, ".exe") Then $AutoIt_tlem_exe = $oLink.href
Next
$Fichier_AutoitTlem_T = @TempDir & "\AutoitTlem_inst.exe"
$Fichier_AutoitTlem = $Destination & "\AutoitTlem_inst.exe"

   $myDL = InetGet($AutoIt_tlem_exe, $Fichier_AutoitTlem_T, 1, 1)
   Do
      Sleep(250)
   Until InetGetInfo($myDL, 2) ; Check if the download is complete.
   Local $nBytes = InetGetInfo($myDL, 0)
   InetClose($myDL) ; Close the handle to release resources.


If FileExists($Fichier_AutoitTlem_T) Then
   DirCreate($Destination)
   FileMove($Fichier_AutoitTlem_T, $Fichier_AutoitTlem, 1)
EndIf

If FileExists($Destination) then ShellExecute($Destination)

Pouvez-vous m'aider à éclaircir ce souci ?


Ou alors, existe-t-il une protection contre ce type de téléchargement ?
Car si c'est le cas, autant me le dire, et le signaler pour les futures personnes :P


++
L'entraide, c'est mon dada ;)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Souci pour télécharger un seul fichier... Protection ?

#2

Message par Tlem »

Le lien de téléchargement du pack est fixe. Pas de numéro de version, pas de protection, le lien c'est le lien et il peut être écrit en dur car je n'ai pas l'intention de changer quoi que ce soit. ^^

Envoyé de mon SM-N9005 en utilisant Tapatalk

Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Souci pour télécharger un seul fichier... Protection ?

#3

Message par orax »

Le lien n'est pas fixe, il y a le numéro de version : autoitscript.fr/download/index.php?dir=AutoIt_Addon/Pack_AutoIt-Fr/&file=Pack_AutoIt-Fr_2.3.9.exe
Et en plus il y a une protection. :lol:
This PHP Script has an Anti-Leech feature turned on.

Make sure you are accessing this file directly from http://www.autoitscript.fr/download/ind ... AutoIt-Fr/
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 : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Souci pour télécharger un seul fichier... Protection ?

#4

Message par franco »

Salut.

Et merci pour vos réponses.

Le lien de téléchargement du pack est fixe.
-> il est dynamique le lien.

Pas de numéro de version
-> justement, il y en a un.

pas de protection
-> Tout comme Orax, j'ai eu le même message de protection anti leech.

le lien c'est le lien et il peut être écrit en dur car je n'ai pas l'intention de changer quoi que ce soit. ^^
---> Encore heureux que je n'ai rien demandé de tel... :D

J'ai eu l'information que je voulais.
Je passerais donc par le navigateur.

Merci à vous
@++
L'entraide, c'est mon dada ;)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Souci pour télécharger un seul fichier... Protection ?

#5

Message par orax »

Pour contourner la protection il faut que le referer soit :
http://www.autoitscript.fr/download/index.php?dir=AutoIt_Addon/Pack_AutoIt-Fr/

Voir aussi cette solution avec wget : Problème de téléchargement avec InetGet.
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 : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Souci pour télécharger un seul fichier... Protection ?

#6

Message par franco »

Lu'

J'ai le droit de faire ça sur un fichier hébergé par le chef ? :mrgreen:


Si oui, je l'ai déjà fait une fois avec un autre fichier, je n'ai plus qu'à tenter la chose.
Ah bah oui, c'est mon message lol.

merci.
++
L'entraide, c'est mon dada ;)
Avatar du membre
franco
Niveau 7
Niveau 7
Messages : 342
Enregistré le : lun. 03 oct. 2011 22:37
Localisation : Liévin
Status : Hors ligne

Re: [..] Souci pour télécharger un seul fichier... Protection ?

#7

Message par franco »

Salut.

J'ai donc utilise wget et l'option referer, comme ceci :
#include <IE.au3>
#include <File.au3>
#include <Inet.au3>
#RequireAdmin

$AutoIt_tlem_dir = @TempDir & "\AutoIt_Tlem"
DirRemove($AutoIt_tlem_dir,1)
DirCreate($AutoIt_tlem_dir)

$wget_exe = $AutoIt_tlem_dir & "\wget.exe"
$libeay32_dll = $AutoIt_tlem_dir & "\libeay32.dll"
$libiconv2_dll =$AutoIt_tlem_dir & "\libiconv2.dll"
$libintl3_dll =$AutoIt_tlem_dir & "\libintl3.dll"
$libssl32_dll =$AutoIt_tlem_dir & "\libssl32.dll"
FileInstall("wget.exe",$wget_exe)
FileInstall("libeay32.dll",$libeay32_dll)
FileInstall("libiconv2.dll",$libiconv2_dll)
FileInstall("libintl3.dll",$libintl3_dll)
FileInstall("libssl32.dll",$libssl32_dll)



$Destination = @DesktopDir & "\Mes programmes"

$lien = "https://www.autoitscript.fr/download/download/AutoIt_Addon/Pack_AutoIt-Fr/"
$oIE = _IECreate($lien, 1, 0)
$oLinks = _IELinkGetCollection($oIE)
Local $iNumLinks = @extended

For $oLink In $oLinks
   If StringInStr($oLink.href, ".exe") Then $AutoIt_tlem_exe = $oLink.href
Next
$Fichier_AutoitTlem_T = @TempDir & "\AutoitTlem_inst.exe"
$Fichier_AutoitTlem = $Destination & "\AutoitTlem_inst.exe"

$command = $wget_exe & ' --no-check-certificate -O "' & $Fichier_AutoitTlem_T & '" --referer=http://www.autoitscript.fr/download/index.php?dir=AutoIt_Addon/Pack_AutoIt-Fr ' & $AutoIt_tlem_exe

RunWait(@ComSpec & ' /c ' & $command & ' & pause', '', @SW_SHOW)
J'ai un message d'erreur : 403 forbidden...
SYSTEM_WGETRC = c:/progra~1/wget/etc/wgetrc
syswgetrc = c:/progra~1/wget/etc/wgetrc
--2017-07-10 14:28:41-- https://www.autoitscript.fr/download/do ... _2.3.9.exe
Resolving www.autoitscript.fr... 213.186.33.17
Connecting to www.autoitscript.fr|213.186.33.17|:443... connected.
WARNING: cannot verify www.autoitscript.fr's certificate, issued by `/C=GB/ST=Greater Manchester/L=Salford/O=COMODO CA Limited/CN=COMODO RSA Domain Validation Secure Server CA': Unable to locally verify the issuer's authority.
WARNING: certificate common name `ssl6.ovh.net' doesn't match requested host name `www.autoitscript.fr'.
HTTP request sent, awaiting response... 403 Forbidden
2017-07-10 14:28:42 ERROR 403: Forbidden.

Appuyez sur une touche pour continuer...

Et en cherchant, j'ai trouvé ceci : https://www.autoitscript.fr/forum/viewt ... 081#p89081

Et j'ai donc fait comme ceci :
$hr = ObjCreate("WinHttp.WinHttpRequest.5.1")
$hr.Open("GET", "https://www.autoitscript.fr/download/index.php?dir=AutoIt_Addon/Pack_AutoIt-Fr/&file=Pack_AutoIt-Fr_2.3.9.exe")
$hr.SetRequestHeader("Referer", "https://www.autoitscript.fr/download/index.php?dir=AutoIt_Addon/Pack_AutoIt-Fr/")
$hr.Send()
If $hr.Status = 200 Then
    $r = $hr.ResponseBody()
    FileWrite("autoittlem.exe", $r)
Else
    ConsoleWrite($hr.Status & ' : ' & $hr.StatusText & @CRLF)
EndIf
Et j'ai comme statut : 403 : Forbidden


Quelque chose me dit qu'il y a bien une protection, et que je pense arrêter avant de me faire bannir. XD


En tout cas, merci ;)


++
L'entraide, c'est mon dada ;)
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Souci pour télécharger un seul fichier... Protection ?

#8

Message par orax »

Code : Tout sélectionner

$command = $wget_exe & ' --no-check-certificate -O "' & $Fichier_AutoitTlem_T & '" --user-agent="Mozilla/5.0" --referer=http://www.autoitscript.fr/download/index.php?dir=AutoIt_Addon/Pack_AutoIt-Fr ' & $AutoIt_tlem_exe
franco a écrit : lun. 10 juil. 2017 12:02 J'ai le droit de faire ça sur un fichier hébergé par le chef ? :mrgreen:
Faut pas lui dire, ça reste entre nous... :mrgreen:
C'est une protection pour éviter que quelqu'un puisse mettre des liens directs sur un autre site, mais dans ton cas c'est différent, je ne vois pas où est le problème.
Supposons que j'ai un autre site sur lequel je souhaite faire un lien vers les packs AutoIt. Je ne pourrai pas faire un lien direct vers, par exemple https://www.autoitscript.fr/download/do ... _2.3.9.exe ; je devrai faire un lien vers la page https://www.autoitscript.fr/download/in ... AutoIt-Fr/
Empêcher le téléchargement direct de fichiers a écrit :le lien direct vers le fichier est révélé à l'utilisateur, qui peut donc le télécharger sans passer par la page de votre site prévue à cet effet. Ce qui fausse toutes vos statistiques et conduit même au « vol de fichiers », c'est-à-dire que d'autres administrateurs peuvent rendre publics les liens directs de vos fichiers sans que leurs utilisateurs ne sachent qu'ils sont hébergés sur votre site ! Malgré le trafic ainsi généré, ces personnes ne visitent pas votre site.
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [..] Souci pour télécharger un seul fichier... Protection ?

#9

Message par Tlem »

Heuuuu bon ...

[mode mauvaise fois : On]
Quand je dit qu'il n'y à pas de numéro de version, je voulais dire que la version du pack ne change pas tous les quatre matins. :roll:
[mode mauvaise fois : Off]
Bon, mea culpa, j'étais persuadé de ne plus utiliser un numéro de version. Mais comme le pack est fait à base de 7Zip auto-Extractible, j'ai pas modifié cette gestion ...
Il faut que je regarde ca de près car ce serais plus simple pour tout le monde.

Quand à l'anti Leech, je ne me souvenais pas avoir mis ça en place. C'est sans doute lors de la mise à jour du forum que j'ai réactualisé la config.
Je peux virer ca car je doute avoir des liens sauvages pour les bricoles que j'héberge ...

Bref désolé d'avoir répondu sans contrôler. Pour la peine je ferais 50 "je vous salue Marie" et je me flagellerais sur la route du retour. ^^



Edit : Après avoir fait les 50 "Je vous salut Marie" et le reste,
Plus d'anti-Leech et un lien direct : https://www.autoitscript.fr/download/in ... oIt-Fr.exe
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre