Interagir avec des sites web en C++
Comment puis-je interagir avec les sites web en C++?
Par exemple, un site web a un dropbox, zone de texte et un bouton, et je veux que mon programme de remplissage du texte à l'intérieur de la zone de texte, choisissez une option dans le dropbox, et de rendre le bouton de feu de son événement("clic").
Comment puis-je obtenir quelque chose comme ça?
merci!
Est-ce un problème de réseau (communication avec les sites web en code) ou d'une INTERFACE utilisateur-test/problème d'interaction (rendre le code utiliser un navigateur comme un humain le ferait)? libcurl est bon pour le premier problème. Il n'y a presque pas de bonnes solutions pour la 2ème.
Si je fais le code à utiliser un navigateur comme un humain le ferait, je ne suis pas à communiquer dans le code? Même chose pour moi...
Si je fais le code à utiliser un navigateur comme un humain le ferait, je ne suis pas à communiquer dans le code? Même chose pour moi...
OriginalL'auteur Lockhead | 2011-04-02
Vous devez vous connecter pour publier un commentaire.
D'abord, vous devez comprendre que sur le serveur il n'y a pas de zone de texte ou un bouton.
Ce sont les constructions qui sont construits par le navigateur à afficher pour vous.
Le navigateur va alors prendre saisie de l'utilisateur dans la zone de texte et interprète les clics sur le bouton. Ce qui se passe (généralement) lorsque le bouton est cliqué, c'est que le navigateur envoie une HTML "POST" demande au serveur. Le navigateur est construit sur le post de la demande basée sur ce que l'utilisateur l'a fait dans l'INTERFACE utilisateur.
Exemple:
Serveur Envoie au navigateur de:
Votre navigateur l'interprète et affiche une zone de texte et le bouton de validation. Lorsque vous appuyez sur le bouton soumettre le navigateur crée un HTTP post de commande qui est envoyé au navigateur. Il se connecte au site web à l'
http://website.com/form.html
(voir balise de formulaire dans l'extrait de code ci-dessus) et envoie le contenu de la zone de texte (tagged avec la valeuruserinfo
).Vous pouvez le faire manuellement en faire de même.
Mais vous avez besoin de comprendre quelles sont les valeurs que le site est en attend et construire la commande appropriée basée sur ce que le site web s'attend. Pour ce faire, le plus simple est d'utiliser libCurl. La documentation de ce package explique en détail comment construire une requête post.
Voici un post exemple:
OriginalL'auteur Martin York
Prendre un coup d'oeil al libcurl. C'est une bibliothèque C, mais vous pouvez certainement l'utiliser à partir de C++ pour réaliser ce que vous voulez.
Si vous avez juste besoin de faire quelques décontracté Site web de l'interaction, je vous suggère de prendre un regard sur les langues qui sont plus adaptés (et plus facile à utiliser) qu'en C++ pour cette tâche. Python (avec Mécaniser la bibliothèque), Ruby, PHP, Perl...
Même Java et C# ont bibliothèques natives de traiter avec des trucs comme ça.
OriginalL'auteur Pablo Santa Cruz
Bien, cela dépend vraiment quelques choses. Vous avez peut-être surcharger votre problème en pensant que vous avez besoin pour obtenir le programme, remplissez le formulaire comme si c'était un humain. Au lieu de cela, pourquoi ne pas sauter cette étape?
Lorsque vous soumettez un formulaire, votre navigateur envoie un HTTP POST (normalement) à la demande sur Internet avec votre formulaire de détails dans l'en-tête. Si vous savez ce que le formulaire va être à l'avance, vous pouvez simplement obtenir le programme pour envoyer des requêtes POST le serveur comme si quelqu'un l'avait soumis un formulaire.
Si vous ne savez pas ce que le formulaire, puis vous devez envoyer une demande au serveur pour récupérer la page, puis en quelque sorte analyser la page afin d'extraire les informations nécessaires pour remplir le formulaire de détails (c'est votre problème) et ensuite envoyer la requête POST avec les détails en tant que ci-dessus.
Cela peut être fait avec le libcurl de la bibliothèque. Il vous permet d'envoyer des requêtes HTTP via une interface simple.
Maintenant, si votre problème nécessite réellement de vous faire un programme qui agit comme un humain et vraiment manipule le navigateur pour remplir le formulaire, puis vous avez besoin d'apprendre à propos de la simulation de touches et de clics de souris, ce qui est susceptible d'être dépendants de la plateforme.
Voici un bon exemple de requête POST en curl, mais dans C. Et, fait intéressant, il semble avoir une interface qui vous permet de vous traiter comme si vous étiez en remplissant le formulaire, à l'aide de la curl_formadd() fonction.
Me semble bon. Je vais prendre un regard plus profond de demain.
OriginalL'auteur Joseph Mansfield
Si libcurl n'est pas suffisant pour vos besoins, vous voudrez peut-être jeter un oeil à Qt, plus précisément le module QtWebKit. Essentiellement, il intègre un navigateur complet moteur de Google Chrome. À l'aide de ce moteur, vous pouvez même exécuter votre propre code JavaScript dans le contexte du Site web et de simuler par exemple un identifiant de connexion .
OriginalL'auteur trenki