[Résolu apparemment]mon script coince sur un détecteur de robots...

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

[Résolu apparemment]mon script coince sur un détecteur de robots...

#1

Message par fredmame »

Bonjour à tous,

J'ai besoin d'un coup de main car je coince...

J'ai un programme Autoit qui récupere dans la page html, un bout d'information (la version affichée dans un lien à télécharger)
jusqu'à présent ca marchait très bien

Code : Tout sélectionner

HttpSetUserAgent("Mozilla/5.0 (Macintosh; Intel Mac OS X 13_2_1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36")
	$sUrl = "http://arcade.mameworld.info/"
	$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
	$oHTTP.Open("GET", $sUrl, False)
	$oHTTP.Send()
	if $oHTTP.Status = 200 Then
   $sReceived = $oHTTP.ResponseText
	$aFile = StringRegExp($sReceived, 'href=(.+?\.7z)">', 1)
	$versionini=stringtrimleft(stringtrimright($aFile[0],3),1)
	EndIf
mais depuis peu mon script n'arrive plus à recuperer les infos car je me suis rendu compte qu'avant d'arriver sur la page html demandée (http://arcade.mameworld.info/) , un script (peu etre lancé depuis le serveur..) semble bloquer ma requete.
Alors que depuis un navigateur classique (firefox, chrome etc.) on voit une fraction de seconde la fameuse page qui bloque les robots maisn enchaine tout seul sans aucune intervention.

voici le code de la page html qui s'ouvre :

Code : Tout sélectionner

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="robots" content="noindex, nofollow">
<title>One moment, please...</title>
<style>
body {
    background: #F6F7F8;
    color: #303131;
    font-family: sans-serif;
    margin-top: 45vh;
    text-align: center;
}
</style>
</head>
<body>
<h1>Please wait while your request is being verified...</h1>
<form id="wsidchk-form" style="display:none;" action="/z0f76a1d14fd21a8fb5fd0d03e0fdc3d3cedae52f" method="get">
<input type="hidden" id="wsidchk" name="wsidchk"/>
</form>
<script>
(function(){
    var west=+((+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+!+[])+(+!+[]+!![]+!![]+!![]+[])+(+!+[])+(+!+[]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![])),
        east=+((+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!+[]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![])+(+!+[]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+!![]+[])+(+![])),
        x=function(){try{return !!window.addEventListener;}catch(e){return !!0;} },
        y=function(y,z){x() ? document.addEventListener("DOMContentLoaded",y,z) : document.attachEvent("onreadystatechange",y);};
    y(function(){
        document.getElementById('wsidchk').value = west + east;
        document.getElementById('wsidchk-form').submit();
    }, false);
})();
</script>
</body>
</html>
Voila donc pourquoi mon code ne marche pas, le get ne trouve évidemment pas d'extension .7z puisque le get tombe sur la page de controle de robot...

Alors avez vous une idée à me suggérer ?
j'ai bien sûr pensé à modifier le useragent mais ca ne change rien.

Merci beaucoup les amis.
Modifié en dernier par fredmame le ven. 24 févr. 2023 11:01, modifié 1 fois.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: mon script coince sur un détecteur de robots...

#2

Message par mikell »

Pour ce genre de souci, personnellement pour éviter les prises de tête j'utilise Curl

#include <AutoItConstants.au3>

$out = _Read("https://arcade.mameworld.info/")
ConsoleWrite($out)
$file = StringRegExp($out, '[^"]+\.7z', 1)[0]
Msgbox(0,"", $file)

Func _Read($url)
   Local $ua = "Mozilla/5.0 (Windows NT 6.1; rv:57.0) Gecko/20100101 Firefox/57.0"
   Local $cmd = 'curl -L -s -k -A "' & $ua & '" ' & $url
   Local $iPID = Run($cmd, "", @SW_HIDE, $STDOUT_CHILD)
   ProcessWaitClose($iPID)
   Local $output = StdoutRead($iPID)
   Return $output
EndFunc
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: mon script coince sur un détecteur de robots...

#3

Message par fredmame »

Bonsoir mikell,

merci beaucoup de ton intervention et ta proposition.
Je ne connais pas curl je vais creuser.

Peux tu juste me dire si ton script peut etre testé "tel quel" dans un fichier autoit ?
Car je l'ai executé et cela ne donne rien....

Encore merci.
Fred.
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: mon script coince sur un détecteur de robots...

#4

Message par mikell »

Oui il faut avoir curl installé sur le PC
Le script est utilisable en l'état si curl est installé dans le dossier système (system32) , sinon la seule rectif à faire est de mettre le chemin complet vers curl.exe dans la commande Run
C'et un très bon outil, qui remplace avantageusement les InetRead, InetGet et autres winhttp - surtout quand il y a des checks ou des redirections comme dans ton cas
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: mon script coince sur un détecteur de robots...

#5

Message par fredmame »

je comprends mais alors comment distribuer un programme s'il faut en plus installer curl ?
ca ne facilite pas l'usage d'un petit utilitaire.
tu me diras, certains programmes nécessitent des sdk, .net framework
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: mon script coince sur un détecteur de robots...

#6

Message par fredmame »

j'ai vérifié, sur win11 c'est installé par défaut apparemment déja dans system32.
lorsque je lance une fenetre cmd et tape

Code : Tout sélectionner

curl --help
j'ai bien une réponse, donc ca confirme que curl est bien installé.

en compilant ton script, lorsque je lance c'est une erreur :
line 242 :
error: subscript used on non-accessible variable.

pourtant y'a pas 242 lignes.
excuse moi mais je coince pour utiliser ton script test. :(

edit: a moins que curl soit aussi détecté sur ce site en tant que robot ?

dans la fenetre de debug de scitTe je vois encore passer le :

Code : Tout sélectionner

Please wait while your request is being verified...
Avatar du membre
mikell
Spammer !
Spammer !
Messages : 6292
Enregistré le : dim. 29 mai 2011 17:32
Localisation : Deep Cévennes
Status : Hors ligne

Re: mon script coince sur un détecteur de robots...

#7

Message par mikell »

Le script fonctionne, l'erreur vient de StringRegExp parce que tu ne récupères pas la bonne page
C'est bizarre chez moi ça marche bien, apparemment je n'ai pas cette page "please wait" intermédiaire et son form
Dommage, je ne peux pas faire de tests donc je ne peux pas en dire plus, désolé
" L'échec est le fondement de la réussite. " (Lao-Tseu )
" Plus ça rate, plus on a de chances que ça marche " (les Shadoks )
fredmame
Niveau 3
Niveau 3
Messages : 39
Enregistré le : mar. 05 févr. 2019 22:43
Status : Hors ligne

Re: mon script coince sur un détecteur de robots...

#8

Message par fredmame »

C'est bizarre, ce matin ca fonctionne... :shock:
en utilisant toujours le meme code compilé hier..
je pense que soit ca vient de chez moi soit c'est le site qui met ce système de contrôle de robot par moment...
je vais faire des tests aléatoire aujourd'hui et ferai un bilan ici.
Encore merci de ton aide.
Fred.
Répondre