Extraire une adresse ip d'une page web

Résolu
aazg Messages postés 15 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 2 mai 2011 - 28 mai 2010 à 13:30
aazg Messages postés 15 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 2 mai 2011 - 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

13 réponses

Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
30 mai 2010 à 22:30
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.
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
31 mai 2010 à 14:03
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.
3
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
28 mai 2010 à 15:44
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.
0
aserf Messages postés 114 Date d'inscription lundi 15 avril 2002 Statut Membre Dernière intervention 1 juillet 2011
29 mai 2010 à 01:09
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
aazg Messages postés 15 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 2 mai 2011
29 mai 2010 à 11:59
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.
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
29 mai 2010 à 14:13
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.
0
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 1
29 mai 2010 à 21:54
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
29 mai 2010 à 22:16
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.
0
cs_aus3004 Messages postés 319 Date d'inscription jeudi 1 avril 2010 Statut Membre Dernière intervention 16 mars 2011 1
29 mai 2010 à 22:24
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
0
Mayzz Messages postés 2813 Date d'inscription mardi 15 avril 2003 Statut Membre Dernière intervention 2 juin 2020 28
29 mai 2010 à 22:30
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.
0
aazg Messages postés 15 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 2 mai 2011
30 mai 2010 à 21:46
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
0
aazg Messages postés 15 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 2 mai 2011
31 mai 2010 à 07:47
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.
0
aazg Messages postés 15 Date d'inscription jeudi 15 mai 2008 Statut Membre Dernière intervention 2 mai 2011
31 mai 2010 à 16:25
Merci beaucoup
0
Rejoignez-nous