Page 1 sur 1

[R] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Whois

Posté : ven. 10 mai 2019 23:20
par Boulanza
Bonjour,
Je cherche à compléter le code suivant afin d’ajouter « id="registrarData">Domain Name: autoitscript.com » parmi les éléments de recherche:
Global $file = @ScriptDir & "\code.ini", $search = "Registry Registrant ID: " pour que « Domain Name: autoitscript.com » soit
dans la liste.

Une autre question: Pourquoi "whois_email à la forme suivante : « Registrant Email: 941:Registrant Email: <img src="/eimg/a/39/a3913c68f50559edd6e81cdf143cbbffca4b51d8.png" class="whois_email" alt="email">@1und1.de » au lieux de :
« Registrant Email: email@1und1.de ».
Merci d'avance pour votre aide
Cordialement.
FileDelete(@ScriptDir & "\code.ini")
 Sleep(100)

$oHTTP = ObjCreate("winhttp.winhttprequest.5.1")
$oHTTP.Open("GET", "https://www.whois.com/whois/autoitscript.com", 0)
$oHTTP.Send()
$txt = $oHTTP.Responsetext
$oHTTP = 0
$txt2 = StringRegExpReplace($txt, '', "")
;Msgbox(0,"", $txt2)
 FileWrite("code.ini", $txt2)
;~ Exit
;=============
Global $file = @ScriptDir & "\code.ini", $search = "Registry Registrant ID:"
Global $iLine = 0, $sLine = '', $iValid = 0
Global $hFile = FileOpen($file)
If $hFile = -1 Then
    MsgBox(0,'ERROR','Unable to open file for reading.')
    Exit 1
EndIf

; find the line that has the search string
While 1
    $iLine += 1
    $sLine = FileReadLine($hFile)
    If @error = -1 Then ExitLoop

    ; test the line for the $search string until the flag $iValid is set
    If StringInStr($sLine, $search) And Not $iValid Then
        $iValid = 1
        ContinueLoop
    EndIf

    If $iValid Then
        $iValid += 1
        ;ConsoleWrite($iLine & ':' & $sLine & @CRLF)
      ; Msgbox(0,"", $sLine)
FileWrite("Résultat.ini", $iLine & ':' & $sLine & @CRLF)
If $iValid > 10 Then ExitLoop
EndIf

WEnd
FileClose($hFile)
Sleep(100)
FileDelete(@ScriptDir & "\code.ini")
 Sleep(100)
;Exit

Local $file1 = @ScriptDir & "\Résultat.ini"
Local $inp = FileRead($file1)
Local $out = StringRegExpReplace($inp, '', '')
;~ ;MsgBox(0, "", $out)

            $STR = $out
            $STR = StringReplace($STR, "925:Registrant", " ")
                        $STR = StringReplace($STR, "926:Registrant", " ")
                        $STR = StringReplace($STR, "927:Registrant", " ")
                        $STR = StringReplace($STR, "928:Registrant", " ")
                        $STR = StringReplace($STR, "929:Registrant", " ")
                        $STR = StringReplace($STR, "930:Registrant", " ")
                        $STR = StringReplace($STR, "931:Registrant", " ")
                        $STR = StringReplace($STR, "932:Registrant", " ")
                        $STR = StringReplace($STR, "933:Registrant", " ")
                        $STR = StringReplace($STR, "934:Registrant", " ")
                        $STR = StringReplace($STR, "935:Registrant", " ")
                        $STR = StringReplace($STR, "936:Registrant", " ")
                        $STR = StringReplace($STR, "937:Registrant", " ")
                        $STR = StringReplace($STR, "938:Registrant", " ")
                        $STR = StringReplace($STR, "939:Registrant", " ")
                        $STR = StringReplace($STR, "940:Registrant", " ")
;MsgBox(0, "", $STR)
;Exit
;===============
;~ Local $file1 = @ScriptDir & "\Résultat.ini"
;~ Local $inp = FileRead($file1)
;~ Local $out = StringRegExpReplace($inp, '', '')

;~ $regex1 =   "(?i)([1-9]+)\s*(:)\h*(Registrant)"     ;"(?i)([1-9]+)\s*(:)\h*"    ;"(?i)([a-z]+)\s*(:)\h*(.*)"    ;"(?i).+Registrant:.*\v?" Registrant
;~                      $txt1 = $out
;~                      $txt1 = StringRegExpReplace($txt1, $regex1, "")
;~                      msgbox(0,"2",$txt1)
;~                      GUICtrlSetData($out, $txt1)
;~ Exit
;===============
;MsgBox(0, "", $STR)
;MsgBox(0, "Resultat", "Avant : "&$out&@CRLF&"Après : "&$STR)
 FileWrite("Code.ini", $STR );$STR   ;$txt1
FileDelete(@ScriptDir & "\Résultat.ini")
 Sleep(100)
Exit

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : sam. 11 mai 2019 10:51
par jchd
Les données personnelles (nom, tél, mail, adresse, ...) sont toujours masquées. Observez la page dans un navigateur et voyez que cet URL affiche dataprivacyprotected

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : sam. 11 mai 2019 12:32
par Boulanza
Bonjour,
Merci jchd pour votre réponse.
Les données personnelles (nom, tél, mail, adresse, ...) sont toujours masquées. Observez la page dans un navigateur et voyez que cet URL affiche dataprivacyprotected
Pour https://www.whois.com/whois/nom de domaine, (nom, tél, mail(cryptée/camouflée), adresse,...) sont lisible (non masquées) ceci si ces données ont été fournies lors de l'inscription au moment de la demande d'achat du nom de domaine: Ces informations ont des usages très variés,
Le rôle de whois est de permettre d'obtenir des informations sur une adresse IP ou un nom de domaine.
J'ai vérifié plusieurs scripts des noms de domaines de sites (nom, tél, adresse, ...) ils ne sont pas masqués sauf l’adresse mail elle est camouflée, elle est lisible sur la page du lien https://www.whois.com/whois/nom de domaine.
Ma demande été comment compléter le code ci-dessust afin d’ajouter « id="registrarData">Domain Name: autoitscript.com » parmi les éléments de recherche dans la ligne : Global $file = @ScriptDir & "\code.ini", $search = "Registry Registrant ID: ".
Votre aide est toujours sollicitée...
Cordialement.

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : sam. 11 mai 2019 14:02
par jchd
Vous confondez Registrar (organisme qui gère la création du domaine) et le Registrant (la personne morale ou physique qui demande la création d'un domaine).
Par exemple, pour https://www.whois.com/whois/autoitscript.com le Registrar est IONOS et le Registrant est "AutoIt Consulting Ltd" mais aucune information personnelle du Registrant n'est disponible.

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : sam. 11 mai 2019 14:33
par Boulanza
Vous confondez Registrar (organisme qui gère la création du domaine) et le Registrant (la personne morale ou physique qui demande la création d'un domaine).
Dans la liste du code ci-dessus on trouve par exemple : Registrant Organization: AutoIt Consulting Ltd c.a.d on cherche les renseignements sur la personne morale ou physique et/ou l'identité du détenteur de droit d'auteur: le demandeur de la création d'un domaine et non de celui qui gère la création du domaine.

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : sam. 11 mai 2019 19:36
par jchd
Le nom d'une entreprise n'est pas une information personnelle. Selon sa forme juridique et le lieu du siège, vous pouvez éventuellement trouver le nom de dirigeants et/ou collaborateurs en interrogeant des bases de données légales, mais cela n'a rien à voir avec les données enregistrées par le registrar.

Essayez avec https://www.whois.com/whois/autoitscript.fr ou https://www.whois.com/whois/antichoc.net (ce domaine m'appartient) et vous verrez qu'il n'y a aucune donnée personnelle. C'est une disposition élémentaire de protection de la vie privée et il est très rare de nos jours qu'un individu mette à disposition ses données perso via whois.

Ceci dit et même avec ces précautions, certains spammeurs réussissent à obtenir mail et parfois plus.

Par ailleurs, il n'y a pas de notion de droit d'auteur ici, seulement le droit de propriété du domaine concerné.

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : sam. 11 mai 2019 21:38
par Boulanza
Bonsoir,
Vous avez raison cher jchd et vous êtes bien informé...
Par ailleurs, il n'y a pas de notion de droit d'auteur ici, seulement le droit de propriété du domaine concerné.
Si, il y a des cas ou le nom de domaine porte le nom d'un médicament, ou le non d'un procédé de laboratoire (fabrication) ou encore le nom d'un film, ... Le nom du créateur détenteur du droit d'auteur doit être visible et non masqué ainsi que ses coordonnés dans whois. (loi relative au droit d'auteur et aux droits voisins)
Pour ma demande j'ai trouvé un bout de script qui marche pour trouver un mot ou une phrase sur un lien web comme suit:
;=========================
;~ ;id="registrarData">Domain Name: autoitscript.com
Switch StringRegExp(BinaryToString(InetRead('https://www.whois.com/whois/autoitscript.com/'), 4), "id=")
    Case 1
        MsgBox(0,"","Le mot est présent dans la page")
    Case 0
        MsgBox(0,"","Le mot n'est pas présent dans la page")
EndSwitch
Je ne vois pas comment l'adapter à mon cas ?
Votre suggestion. Merci.
Cordialement.

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : dim. 12 mai 2019 11:03
par jchd
Si, il y a des cas ou le nom de domaine porte le nom d'un médicament, ou le non d'un procédé de laboratoire (fabrication) ou encore le nom d'un film, ... Le nom du créateur détenteur du droit d'auteur doit être visible et non masqué ainsi que ses coordonnés dans whois. (loi relative au droit d'auteur et aux droits voisins)
La directive GDPR et ses transpositions en droits locaux contredit ceci.
https://copyrightalliance.org/ca_post/w ... -name-dnd/

De toute façon, si le registrant est une personne morale, GDPR ne s'applique pas et si l'entité ne souhaite pas rendre public le fait qu'elle a créé tel domaine, elle passe par un tiers (filiale absconse, société de services). Si le déposant est un individu, le droit de propriété est la plupart du temps au nom d'une entreprise tierce.
https://www.whois.com/whois/mylan.fr
https://www.whois.com/whois/psg.fr
https://www.whois.com/whois/louane.fr
https://www.whois.com/whois/angelinajolie.com
https://www.whois.com/whois/kylianmbappe.com
https://www.whois.com/whois/twaron.com (brevet et marque détenus par Teijin [JP] ; c'est un polymère comparable au Kevlar)

Simple curiosité : à quoi pourraient vous servir ces informations ?

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : dim. 12 mai 2019 14:37
par Boulanza
Bonjour,
Simple curiosité : à quoi pourraient vous servir ces informations ?
Je suis membre actif dans une association de protection contre la contrefaçon et le piratage intellectuel.
J'étais consultant en lutte anti-contrefaçon. Actuellement je suis à la retraite, j'attends le grand départ.
WhoIs, c'est une idée pour comparer les donnés en arrière plan.
Pour votre information, bientôt les déclarations sur WhoIs doivent être visibles et non camouflés aussi pour les certificats d’authentification CA et SSL ...
N.B : Consultez le paragraphe "Résumé de la spécification temporaire" du lien que vous m'avez envoyé https://copyrightalliance.org/ca_post/w ... -name-dnd/

Revenons à ma problématique, avez-vous une idée à mon souci ?
Cordialement.

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : dim. 12 mai 2019 16:16
par walkson
Bonjour,
Quelque chose comme ça ?
#include <Array.au3>

$IP = InputBox("WHOIS","Veuillez entrer l'adresse :", "https://www.whois.com/whois/angelinajolie.com")
    If @error = 1 Then Exit
        $source = BinaryToString(InetRead($IP,1))
                Sleep(3000)

    If $source <> "" Then
        $String = StringRegExp($source,'(?m)^(?!\Q<pre\E)\w(?<!\Q</pre>\E)\N+',3)
        _ArrayDisplay($String)


                Local $cherche[5] =     ["Registrant Organization:","Registrant Street:","Registrant City:", "Registrant State/Province:", "Registrant Postal Code:"]
                Local $lecture
                For $i = 0 To UBound($String) - 1
                        For $y = 0 To 4
                                $result = StringInStr($String[$i],$cherche[$y])
                                If $result > 0 Then $lecture &= $String[$i] & @CRLF
                        Next
                Next
                MsgBox(0,$IP,$lecture)
        EndIf
On fait une recherche multi-lignes entre les balises <pre et </pre>, là où se situe le Raw Whois Data
Je ne suis pas un spécialiste des regexs mais ça marche (y a surement à améliorer !)
En tout cas, Jchd a bon gout ! angelinajolie

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : dim. 12 mai 2019 16:49
par jchd
Consultez le paragraphe "Résumé de la spécification temporaire" du lien que vous m'avez envoyé
Bah, c'est bien ce que je dis. Les informations privées concernant les personnes physiques sont avant toute autre considération, régies par les directives GDPR, qui s'appliquent partout. Sauf autorisation expresse du déposant, elles ne doivent être accessibles que par des entités reconnues et légitimes, pour des raisons justifiées et via une procédure indirecte et anonyme gére par le registrar.
bientôt les déclarations sur WhoIs doivent être visibles et non camouflés aussi pour les certificats d’authentification CA et SSL
Sauf pour les personnes physiques, car cela serait en contradiction avec GDPR. En pratique il n'y a que très peu de gens qui s'offrent un certificat valide, vu le coût.
j'attends le grand départ
On l'attend forcément tous un jour, mais en général sans grande impatience !

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : dim. 12 mai 2019 17:20
par Boulanza
Bonjour,
c'est exacte aujourd’hui cher jchd mais pas pour les année avenirs, les déclarations sur WhoIs doivent être visibles et non camouflés, pour la Raison d'État : Paix et Sécurité Internationale (intérêts légitimes).

Partir c'est le repos éternel, moi je suis prêt, je veux bien partir.

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : dim. 12 mai 2019 17:30
par Boulanza
Bonjour walkson,
C'est un travail de pro: Code optimisé propre...
Merci walkson.
Cordialement. :bisou:

Re: [R] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs WhoI

Posté : mer. 22 mai 2019 19:18
par Boulanza
Bonjour tous le monde,
N.B: walkson, à ce jours mon problème principale n'est pas encore résolus :
Je cherche à compléter le code suivant afin d’ajouter « id="registrarData">Domain Name: autoitscript.com » parmi les éléments de recherche:
Global $file = @ScriptDir & "\code.ini", $search = "Registry Registrant ID: " pour que « Domain Name: autoitscript.com » soit
dans la liste.
Votre code fait abstraction pour extraire le nom du domaine: autoitscript.com
Votre code:
#include <Array.au3>

$IP = InputBox("WHOIS","Veuillez entrer l'adresse :", "https://www.whois.com/whois/angelinajolie.com")
    If @error = 1 Then Exit
        $source = BinaryToString(InetRead($IP,1))
                Sleep(3000)

    If $source <> "" Then
        $String = StringRegExp($source,'(?m)^(?!\Q<pre\E)\w(?<!\Q</pre>\E)\N+',3)
        _ArrayDisplay($String)


                Local $cherche[5] =     ["Registrant Organization:","Registrant Street:","Registrant City:", "Registrant State/Province:", "Registrant Postal Code:"]
                Local $lecture
                For $i = 0 To UBound($String) - 1
                        For $y = 0 To 4
                                $result = StringInStr($String[$i],$cherche[$y])
                                If $result > 0 Then $lecture &= $String[$i] & @CRLF
                        Next
                Next
                MsgBox(0,$IP,$lecture)
        EndIf
Cordialement.

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : mer. 22 mai 2019 20:06
par Boulanza
Ce code il marche bien. il serait parfait si il est optimiser avec votre code.
#include <Array.au3>
Func _StringBetween2($s, $from, $to)
$x = StringInStr($s, $from) + StringLen($from)
$y = StringInStr(StringTrimLeft($s, $x), $to)
Return StringMid($s, $x, $y)
EndFunc
$THOTTBOT = _INetGetSource("https://www.whois.com/whois/autoitscript.com/")
$String = _StringBetween2($THOTTBOT, "<Title>", "</Title>")
;MsgBox(1, "ThottBot.com", $String)
                        $regex1 = "^([^ ]*)"
                        $txt1 = $String
                        $txt1 = StringRegExpReplace($txt1, $regex1, "")
                        msgbox(0,"2",$txt1)
Local $dir = @ScriptDir & "\Résultat.ini"
$1 = $txt1
IniWrite($dir, "parametres", "$NomDuDomaineWhois", $1)

Re: [..] Je cherche à compléter le code qui permet d'obtenir des informations sur les domaines à partir des serveurs Who

Posté : jeu. 23 mai 2019 01:59
par Boulanza
Bonsoir,
Enfin voici le code final à optimiser:
Cordialement.
#include <Array.au3>
Global $1, $txt1
test()
Func _StringBetween2($s, $from, $to)
$x = StringInStr($s, $from) + StringLen($from)
$y = StringInStr(StringTrimLeft($s, $x), $to)
Return StringMid($s, $x, $y)
EndFunc
Func test()
$THOTTBOT = _INetGetSource("https://www.whois.com/whois/autoitscript.com/")
$String = _StringBetween2($THOTTBOT, "<Title>", "</Title>")
;MsgBox(1, "ThottBot.com", $String)

                        $regex1 = "^([^ ]*)"
                        $txt1 = $String
                        $txt1 = StringRegExpReplace($txt1, $regex1, "")
                        Msgbox(0,"Name", "=" & $txt1 & "=")

Local $dir = @ScriptDir & "\Résultat.ini"
$1 = $txt1
IniWrite($dir, "parametres", "$NomDuDomaineWhois", $1)

                Global $txt1 = FileRead($dir)
                $tilt1 = StringRegExp($txt1, '\$NomDuDomaineWhois= (\V+)', 3) ; cherche une chaine $MP="chaine"
                If IsArray($tilt1) Then
                        $NomDuDomaineWhois = $tilt1[0] ; si chaine trouvée, $res = la chaine
                        Msgbox(0,"Name", "=" & $NomDuDomaineWhois & "=")
IniWrite($dir, "parametres", "$NomDuDomaineWhois", $NomDuDomaineWhois)
EndIf
EndFunc