En supposant qu'il n'y a rien de spécial sur le site Web de l'opérateur, non, vous n'avez pas besoin de maintenir une connexion active pendant tout le processus. En règle générale, les formulaires sur les pages Web fonctionnent comme ceci: Vous visitez l'URL, votre navigateur Web télécharge la page avec le formulaire. Dans votre cas, il aura également une balise <img> ou similaire pour afficher le CAPTCHA. Une fois que votre navigateur a téléchargé la page, la connexion est coupée. Après avoir rempli le formulaire et cliqué sur Soumettre, votre navigateur Web ouvre une nouvelle connexion au serveur et envoie les données, et le serveur envoie sa réponse (quelle que soit la page affichée après avoir cliqué sur Soumettre).
Tout ce que votre programme a à faire est d'imiter cette expérience. Donc: 1) Téléchargez la page avec le formulaire. Grattez les champs du formulaire (assurez-vous de ne pas manquer de champs cachés - avec un CAPTCHA il y en aura probablement) et du CAPTCHA. 2) Construire une page pour montrer à votre utilisateur qui comprend le CAPTCHA et un formulaire avec tous les champs dont ils ont besoin de remplir. S'il y avait des champs cachés dans le formulaire d'origine, assurez-vous d'inclure également leurs valeurs (en tant que champs masqués dans votre formulaire), car lorsque l'utilisateur soumettra votre formulaire, vous en aurez besoin. 3) Ensuite, lorsque l'utilisateur soumet votre formulaire, envoyez les données, y compris les valeurs cachées et ce que l'utilisateur a saisi pour le CAPTCHA, à l'opérateur. 4) Enfin, vérifiez si l'opérateur a indiqué le succès et créez une page pour le dire à votre utilisateur.
Si vous faites cela dans Rails, vous aurez probablement deux méthodes dans votre contrôleur: Une appelée par ex. 'show' (étapes 1 et 2 ci-dessus) qui raclera le CAPTCHA et d'autres informations du site de l'opérateur et montrera à l'utilisateur votre vue de formulaire, et une appelée par ex. 'envoyer' (étape 3 et 4 ci-dessus) que le formulaire soumettra à, et qui prendra ses données et l'enverra sur le site Web de l'opérateur, collectera la réponse et indiquera à votre utilisateur s'il a réussi ou non.
Remarque: Vous devez lire les conditions d'utilisation des opérateurs avant de vous en soucier. Je suis à peu près certain que ce genre de chose ira à l'encontre de leurs TOS et s'ils remarquent que votre serveur envoie beaucoup de requêtes à leur façon, ils vont vous bloquer assez rapidement.
Exactement. Vous n'avez pas besoin de garder la connexion ouverte, et même si vous l'avez fait ne ferait aucune différence avec le CAPTCHA. Assurez-vous de soumettre tous les champs cachés avec le formulaire. – mtyaka
OMG! Jordan, mtyaka - merci beaucoup! Évidemment, j'aime trop compliquer les choses ... Jordan - merci pour une si bonne réponse! Je viens de découvrir que je n'ai pas assez de réputation (<15), donc je ne peux pas ajouter mon vote à votre réponse, désolé. (mais je le ferai, une fois que j'aurai 15 rep) Merci encore. – Konstantin