Extraire une adresse ip d'une page web [Résolu]

aazg 15 Messages postés jeudi 15 mai 2008Date d'inscription 2 mai 2011 Dernière intervention - 28 mai 2010 à 13:30 - Dernière réponse : aazg 15 Messages postés jeudi 15 mai 2008Date d'inscription 2 mai 2011 Dernière intervention
- 31 mai 2010 à 16:25
Bonjour a tous,

J'aimerais savoir comment extraire une adresse IP présente dans une page web (je ne gère pas la page web en question).

Merci de vos réponses

P.S. Si le sujet existait déja, je ne l'ai pas trouvé apres un rapide recherche dans le forum, veuillez m'en excuser
Afficher la suite 

Votre réponse

13 réponses

Meilleure réponse
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 30 mai 2010 à 22:30
3
Merci
Donc ma solution fonctionne, je poste le code complet j'ai testé c'est fonctionnel :

Private Function GetIP() As String
        '
        Dim ms As IO.Stream = Nothing
        '
        Try
            Dim client As New Net.WebClient
            ms = client.OpenRead("http://www.elydian.fr")
            Dim sr As New IO.StreamReader(ms)
            Dim htmlPage As String = sr.ReadToEnd
            Dim re As New System.Text.RegularExpressions.Regex("([0-9]{1,3}\.){3}[0-9]{1,3}")
            Dim ip As String = re.Match(htmlPage).Value
            Return ip
        Catch ex As Exception
            MessageBox.Show("Erreur durant la récupération de l'adresse l'IP du serveur")
            Return Nothing
        Finally
            If ms IsNot Nothing Then
                ms.Close()
                ms.Dispose()
            End If
        End Try
        '
    End Function


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Merci Mayzz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 76 internautes ce mois-ci

Commenter la réponse de Mayzz
Meilleure réponse
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 31 mai 2010 à 14:03
3
Merci
bien sûr ^^

En fait ce code télécharge la page web comme le ferait ton navigateur, (Rappel: une page web n'est qu'un simple fichier texte avec des balises html/CSS et des liens pointant vers les ressources, c'est le navigateur qui retranscrit ce que l'on voit à l'écran). Une fois le code obtenu sous forme de chaine de texte, une RegEx (Regular Expression), recherche dans celle-ci un morceau de texte dont le format est xxx.xxx.xxx.xxx (chaque x étant un chiffre de 0 à 9) et nous la retourne.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.

Merci Mayzz 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 76 internautes ce mois-ci

Commenter la réponse de Mayzz
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 28 mai 2010 à 15:44
0
Merci
Salut,

Il te suffit de télécharger cette page qui sera stocké sous forme de chaine (Plusieurs méthode, WebBrowser, winsock, Inet) recheche sur le site "Télécaherger une page web", en suite il te suffit d'analiser la syntaxe de la page html, et d'utilier les fonctions de traitement de texte (mid$, left$, right$, split...) pour découper la page comme tu le souhaite et ne garder que la partie voulue :

Exemple :

Si l'ip en question se trouve dans :

80.80.80.80


Tu recherche dans la chaine la partie entre =
et


Attention ce pendant à bien vérifier qu'il n'y a pas d'autres possibilité.

Inconvéniant : Si le site change de design ton code ne fonctionne plus.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
aserf 117 Messages postés lundi 15 avril 2002Date d'inscription 1 juillet 2011 Dernière intervention - 29 mai 2010 à 01:09
0
Merci
Bonjour,

Si vous utilisez VB6, effectivement il vous faudra telecharger la page et essayer de faire un algo pour le rechercher.
Si vous utiliser .Net vous pouvez utiliser les expressions reguliere, elle vous retournerons directement les adresses IP trouver dans la page sans algo.

Cordialement
Sébastien


Développement Rapide PHP / VBNET, Mapping-> www.database2code.com
Commenter la réponse de aserf
aazg 15 Messages postés jeudi 15 mai 2008Date d'inscription 2 mai 2011 Dernière intervention - 29 mai 2010 à 11:59
0
Merci
Bonjour a tous et merci pour vos réponses,

Je suis assez intéressé par la solution de aserf solution en .NET.
Pourriez vous me donner un exemple si il vous plait.
Commenter la réponse de aazg
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 29 mai 2010 à 14:13
0
Merci
Voila :

Dim html As String = "
80.80.80.80
"
Dim re As New System.Text.RegularExpressions.Regex("([0-9]{1,3}\.){3}[0-9]{1,3}")
Dim ip As String = re.Match(html).Value
MessageBox.Show(ip)


Bien entendu la regex est simple mais dans ce cas on ne cherche pas à valider une ip, j'ai repris mon exemple de page web plus haut.

Par contre comme précisé par aserf, il faut être en vb.Net (tu as posté dans la catégorie vb6).


Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
cs_aus3004 319 Messages postés jeudi 1 avril 2010Date d'inscription 16 mars 2011 Dernière intervention - 29 mai 2010 à 21:54
0
Merci
Salut, suis ce petit tuto ;)

Désolé mais j'ai pas renommé par défaut certain composant.

1) Créer un formulaire nommé form8
2) Mettre un label1 ou tu marque dessus "Site web"
3) Mettre une textbox que tu renomme "txturl"
4) Mettre un button1 ou tu marque dessus "Rechercher l'IP"
5) Mettre label2 ou tu marque le dessus "IP du site"
6) Mettre une textbox que tu renomme "combobox2"
7) Coller ce code :
Imports System.Net
Public NotInheritable Class form8

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        If txturl.Text = "" Then
            MessageBox.Show("Veuillez entrer un site web", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        ElseIf txturl.Text = "www." Then
            MessageBox.Show("Veuillez entrer un site web valide", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
        ElseIf txturl.Text.StartsWith("www.") = True Then
            Dim hostname As IPHostEntry = Dns.GetHostEntry(txturl.Text)

            Dim ip As IPAddress() = hostname.AddressList
            ComboBox2.Text = ip(0).ToString()
        Else
            Dim hostname As IPHostEntry = Dns.GetHostEntry("www." & txturl.Text)

            Dim ip As IPAddress() = hostname.AddressList
            ComboBox2.Text = ip(0).ToString()
        End If

    End Sub

    Private Sub txturl_Keydown(ByVal sender As Object, ByVal e As System.Windows.Forms.KeyEventArgs)
        If e.KeyCode = Keys.Enter Then


            If txturl.Text = "" Then
                MessageBox.Show("Veuillez entrer un site web", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            ElseIf txturl.Text = "www." Then
                MessageBox.Show("Veuillez entrer un site web valide", "Erreur", MessageBoxButtons.OK, MessageBoxIcon.Exclamation)
            ElseIf txturl.Text.Contains("www.") = True Then
                Dim hostname As IPHostEntry = Dns.GetHostEntry(txturl.Text)


                Dim ip As IPAddress() = hostname.AddressList
                ComboBox2.Text = ip(0).ToString()
            Else

                Dim hostname As IPHostEntry = Dns.GetHostEntry("www." & txturl.Text)


                Dim ip As IPAddress() = hostname.AddressList
                ComboBox2.Text = ip(0).ToString()
            End If
        End If
    End Sub
End Class
Commenter la réponse de cs_aus3004
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 29 mai 2010 à 22:16
0
Merci
Il cherche a récupérer l'adresse du site ? ou l'adresse inscrite dans le code html de la page d'un site comme monip.org ?

@aus3004

Pourquoi mettre un combo pour afficher une seule adresse ?

Ou alors :

Dim ip As IPAddress() = hostname.AddressList
For Each Item As String In ip
   ComboBox2.Item.Add(Item)
Next
ComboBox2.Text = ip(0).ToString()




Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
cs_aus3004 319 Messages postés jeudi 1 avril 2010Date d'inscription 16 mars 2011 Dernière intervention - 29 mai 2010 à 22:24
0
Merci
Salut Mayzz, c'est pas un combo mais une textbox, c'est juste que j'avais la flemme de renommer correctement.

C'est vrai que aazg n'est pas très explicite en ce qui concerne "extraire une adresse IP ". On extrait pas une IP, mais on la trouve
Commenter la réponse de cs_aus3004
Mayzz 2859 Messages postés mardi 15 avril 2003Date d'inscription 26 novembre 2013 Dernière intervention - 29 mai 2010 à 22:30
0
Merci
Mettre une textbox que tu renomme "combobox2"


Effectivement, mais ca prete à confusion, on s'attend à ce que tu ai gardé les nom d'origine du concepteur WinForm.

Si le déboguage est l'art d'enlever les bogues, la programmation doit être l'art de les créer.
Commenter la réponse de Mayzz
aazg 15 Messages postés jeudi 15 mai 2008Date d'inscription 2 mai 2011 Dernière intervention - 30 mai 2010 à 21:46
0
Merci
bonjour a tous et merci pour vos réponses.
J'ai bien fait une erreur dans la categorie, il s'agirait plus de vb 2005 & .NET
Pour les questions les plus recentes, il s'agit de recuperer une adresse ip.presente en tant que texte dans une page web.
Voici l'url du site en question http://www.elydian.fr
Commenter la réponse de aazg
aazg 15 Messages postés jeudi 15 mai 2008Date d'inscription 2 mai 2011 Dernière intervention - 31 mai 2010 à 07:47
0
Merci
Merci beaucoupde ta reponse Mayzz, c'est exactement ce qu'il me fallait.
Puis-je te demander d'expliquer ton code s'il te plait. J'aimerais être sur de son fonctionnement.
Merci d'avance.
Commenter la réponse de aazg
aazg 15 Messages postés jeudi 15 mai 2008Date d'inscription 2 mai 2011 Dernière intervention - 31 mai 2010 à 16:25
0
Merci
Merci beaucoup
Commenter la réponse de aazg

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.