Page 1 sur 1

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

Posté : jeu. 23 févr. 2023 16:52
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.

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

Posté : jeu. 23 févr. 2023 17:56
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

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

Posté : jeu. 23 févr. 2023 20:30
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.

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

Posté : jeu. 23 févr. 2023 21:05
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

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

Posté : jeu. 23 févr. 2023 21:12
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

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

Posté : jeu. 23 févr. 2023 22:41
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...

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

Posté : ven. 24 févr. 2023 08:16
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é

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

Posté : ven. 24 févr. 2023 10:38
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.