Comment interagir avec un site web sans navigateur?
Dire que je suis la construction d'une application en c#.
Le but de l'application :
- obtenir nom d'utilisateur & mot de passe de l'utilisateur.
- et de montrer quelques informations présentes sur le site.
dans le fond, après la prise du nom d'utilisateur et mot de passe, il doit :
- connecter à un site web avec des informations d'identification.
- et cliquez sur l'ancre de lien qui s'affiche après la connexion.
- trouver la plage qui détiennent les informations.
- obtenir l'info.
qui a été un exemple. Je suis actuellement à la construction d'une application pour en afficher l'utilisation de la bande passante de l'information.
Le serveur n'a pas d'exposer une API pour que.
Est-il un tutoriel/info/article disponible pour les mêmes fins ? Je n'ai juste pas quoi chercher ?
- Ce n'est pas ce que votre question réelle demande, mais à "interagir avec un site web sans navigateur", vous pouvez utiliser lynx - techniquement, un navigateur, mais il est une application de terminal. Vous ne savez pas si il est disponible sur Windows, par contre ...
- il doit être en c#
- Il y a des classes comme
HTTPwebRequest
etHTTPwebResponse
qui peut être utilisé, mais dans l'application de la console je ne sais pas. Et dans le web, il est difficile de simuler l'événement click. voici un lien forums.asp.net/t/1439779.aspx/1 - vous avez la réponse dans vos balises, httpwebrequest/réponses, ou le client web wrapper
- il n'a pas à être une application console. juste à c#
Vous devez vous connecter pour publier un commentaire.
De Base Introduction À La HttpWebRequests
Tout d'abord, vous allez avoir besoin des bons outils pour le travail. Allez télécharger la Live HTTP Headers plugin pour Firefox. Cela vous permettra d'afficher les en-têtes HTTP en temps réel de sorte que vous pouvez voir le POST de données qui est envoyé lorsque vous interagissez avec le site web. Une fois que vous savez que les données envoyées sur le site, vous pouvez émuler le processus en créant votre propre web HTTP demandes par programmation. Outil > Live HTTP Headers
Charge Live HTTP Headers en accédant à Outils > Live HTTP Headers. Une fois que vous avez chargé le GUI accédez au site web que vous souhaitez vous connecter à l', je vais utiliser Facebook pour les besoins de la démonstration. Tapez vos informations d'identification prêt à la connexion, mais avant de vous le Désactivez l'interface graphique de la fenêtre de texte et de s'assurer que la case à cocher Capture est cochée. Une fois que vous frappez la connexion, vous verrez la fenêtre de texte inondations avec diverses informations sur les demandes, y compris le POST de données dont vous avez besoin.
Je trouve qu'il est préférable de cliquer sur Enregistrer Tous les... et ensuite, la recherche de votre nom d'utilisateur dans le texte du document, de sorte que vous pouvez identifier le POSTE de données facilement. Pour ma demande les données POST ressemblait à ceci:
Qui peut alors être définie en C# comme suit:
Je vise à vous montrer la relation entre le POST de données, nous pouvons envoyer des "manuellement" via le navigateur web et comment nous pouvons utiliser ces données afin d'émuler la demande en C#. Comprendre que le fait d'envoyer des données POST est loin d'être déterministe. Les différents sites de travail de différentes façons et peut lancer toutes sortes de choses à votre façon. Ci-dessous est une fonction que j'ai mis ensemble pour valider que Facebook mot de passe corrects. Je ne peux pas et ne devrait pas aller en profondeur inhabituelle ici que les classes et leurs membres sont bien documentés. Vous pouvez trouver une meilleure information que je peux vous offrir, sur les méthodes utilisées à MSDN par exemple, WebRequest.Propriété De La Méthode De
CookieContainer
?Tout client HTTP de la mise en œuvre, il y a des tonnes de bibliothèques open-source pour que. regardez curl par exemple. Un mec fait une .NET wrapper pour elle.
Vous pouvez continuer à utiliser WebClient à la POSTE (au lieu de l'OBTENIR, ce qui est le verbe HTTP vous utilisez actuellement avec DownloadString), mais je pense que vous trouverez qu'il est plus facile de travailler avec le (légèrement) inférieur-classes de niveau WebRequest et WebResponse.
Il y a deux parties - la première est d'afficher le formulaire de connexion, la seconde est la récupération de la "Set-cookie" en-tête et l'envoyer vers le serveur en tant que "Témoin" avec votre requête GET. Le serveur utilise ce cookie pour vous identifier à partir de maintenant (en supposant que c'est à l'aide des cookies d'authentification qui je suis assez confiant, c'est que cette page renvoie une-tête Set-cookie, qui comprend les "PHPSESSID").
Cliquez Ici pour voir le Détail
Exemple de Code sur l'Accaparement des Matières (capture d'Écran)
Exemple de Code sur la façon de publier des Données sur la Page Web distante à l'aide de HttpWebRequest
Source