Requètes http via proxy : recuperer la source html d'une page web

Soyez le premier à donner votre avis sur cette source.

Snippet vu 13 277 fois - Téléchargée 42 fois


Contenu du snippet

Un petit code permettant de recuperer ce que renvoie une requete web, et donc de filtrer par exemple le contenu des urls qui semblent dangereuse, ou encore d'y recuperer toutes les urls contenues (esquisse d'un aspirateur web)... ceci en passant si besoin il y a par un proxy.

Ce code n'est qu'un tout petit exemple basique, et les objets webrequests comportent enormement d'autres utilités (entre autres les modifications des headers sur lesquels je reviendrais surement dans une prochaine source)

Source / Exemple :


Function Get_request(ByVal url As String, Optional ByVal proxy As String = Nothing, Optional ByVal proxyport As Integer = Nothing) As String
        Dim readstr As IO.StreamReader 'on crée un objet streamreader
        Try

            If proxy <> Nothing And proxyport <> Nothing Then 'on execute ceci que si les deux arguments optionels ont été passés (proxy et port)
                Dim hproxy As WebProxy 'on crée l'objet proxy
                hproxy = New WebProxy(proxy, proxyport) 'on defini hproxy avec les valeurs données
                GlobalProxySelection.Select = hproxy 'on applique le proxy
            End If

            Dim hwebrequest As System.Net.WebRequest = System.Net.WebRequest.Create(url) 'on crée la requete web
            Dim hwebresponse As System.Net.WebResponse = hwebrequest.GetResponse 'on crée un objet de reponse a notre requete
            readstr = New IO.StreamReader(hwebresponse.GetResponseStream) 'on redefini notre streamreader avec la reponse à la requete en argument
            Return readstr.ReadToEnd() 'on renvoie l'ensemble du resultat
            readstr.Close() 'on ferme l'objet

        Catch ex As Exception

            Return ex.Message.ToString ' en cas d'erreur, on renvoie la description de l'erreur
            readstr.Close()

        End Try

    End Function

'en admettant que les textbox existent sur votre form (je vous laisse recupérer vous meme les noms), dans un bouton ou autre :
'htmltxt est un richtextbox, pour eviter une erreur si le fichier distant est trop gros

 If proxytxt.Text <> "" And porttxt.Text <> "" And urltxt.Text <> "" Then htmltxt.Text = Getrequest(urltxt.Text, proxytxt.Text, porttxt.Text)
        If urltxt.Text <> "" Then htmltxt.Text = Getrequest(urltxt.Text)

Conclusion :


C'est tres simple, c'est pratique dans certains cas et ca pourra servir de base à un essai sur les requetes web... j'y reviendrais surement :)

Les commentaires sont les bienvenus.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
295
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
24 janvier 2014
1
oki , jai trouvé : webproxy est implémenté par le biais de

Imports System.Net
Messages postés
295
Date d'inscription
vendredi 20 décembre 2002
Statut
Membre
Dernière intervention
24 janvier 2014
1
Dim hproxy As WebProxy

Où on défini WebProxy ???
Messages postés
14
Date d'inscription
jeudi 12 octobre 2000
Statut
Membre
Dernière intervention
29 janvier 2017

Bonjour ton code m'intéresse mais il utilise une url, or je souhaiterais stocker le contenu html de ma page une fois qu'elle a été générée. En fait j'utilise une sorte de signature électronique et je souhaiterais enregistrer dans ma base, le code HTML de ce qui a été signé en vue de pouvoir le relire avec un explorer web en cas de probleme.

Si tu as une idée je suis preneur.

Merci

Patrice
Messages postés
939
Date d'inscription
vendredi 25 octobre 2002
Statut
Membre
Dernière intervention
27 janvier 2009
1
Il y a une propriété Headers pour les System.Net.WebRequest

Tu peux les modifier en fesant hwebrequest.Headers.Item("Le-Nom-Du-Header") = La Valeur"
ou en ajouter en fesant :
hwebrequest.Headers.Add("Test", "hop")


Pour finir, tu peux utiliser aussi les System.Net.HttpWebRequest qui te permettront d'editer les headers en tant que proprietés de l'objet directement... ex :
hwebrequest.UserAgent = "Hb BrowZer"
Messages postés
16
Date d'inscription
vendredi 19 mars 2004
Statut
Membre
Dernière intervention
6 janvier 2005

Source simple à comprendre (même pour moi :p).
Par contre, une question : Comment gérer les headers, les variables et les cookies ?
Cela doit être quand même beaucoup plus compliqué qu'avec un socket, non ?
Afficher les 12 commentaires

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.