Если на веб-сайте оператора нет ничего особенного, нет, вам не нужно поддерживать соединение в течение всего процесса. Вообще говоря, формы на веб-страницах работают следующим образом: вы посещаете URL, ваш веб-браузер загружает страницу с формой на ней. В вашем случае он также будет иметь тег или аналогичный для отображения CAPTCHA. Как только ваш браузер загрузил страницу, соединение разрывается. После того, как вы заполните форму и нажмете «Отправить», ваш веб-браузер откроет новое соединение с сервером и отправит данные, а сервер отправит свой ответ (какая страница отображается после нажатия кнопки «Отправить»).
Все, что ваша программа должна сделать, это подражать этому опыту. Итак: 1) Загрузите страницу с формой на ней. Очистите поля формы (убедитесь, что вы не пропустили ни одного скрытого поля - с CAPTCHA, вероятно, будут некоторые) и CAPTCHA. 2) Создайте страницу, чтобы показать вашему пользователю, что включает в себя CAPTCHA и форму со всеми полями, которые необходимо заполнить. Если в исходной форме были скрытые поля, убедитесь, что вы также включили их значения (как скрытые поля в своей форме), потому что, когда пользователь отправляет вашу форму, они вам понадобятся. 3) Затем, когда пользователь отправляет вашу форму, отправьте данные, включая скрытые значения и то, что пользователь ввел для CAPTCHA, оператору. 4) Наконец, проверьте, указал ли оператор успех, и создайте страницу, чтобы сообщить об этом своему пользователю.
Если вы делаете это в Rails, у вас, вероятно, будет два метода в вашем контроллере: один называется например. 'show' (шаги 1 и 2 выше), которые будут счищать CAPTCHA и другую информацию с сайта оператора и показывать пользователю ваш вид формы, а другой называется, например, «отправить» (шаги 3 и 4 выше), на который будет отправлена форма, и которая возьмет свои данные и отправит их на веб-сайт оператора, соберет ответ и сообщит своему пользователю, был ли он успешным или нет.
Примечание: Вы должны прочитать условия обслуживания операторов, прежде чем пытаться что-либо из этого. Я вполне уверен, что подобные вещи будут против их TOS, и если они заметят, что ваш сервер отправляет множество запросов в их направлении, они довольно быстро заблокируют вас.