Как я могу получить доступ к изображению капчи, которое было сгенерировано при загрузке страницы? - PullRequest
0 голосов
/ 25 октября 2010

На некоторых веб-сайтах, когда вы хотите войти в систему, вам также необходимо ввести капчу. Если я хочу оказать поддержку пользователю для ввода капчи в мое приложение (которое затем войдет в систему на веб-сайте), как мне это сделать?

Моя проблема в том, что ссылка на изображение с изображением капчи выглядит следующим образом: example.com/captcha, и каждый раз, когда оно принимается, оно отображает другое изображение.

Мой подход такой:

  • страница запроса
  • скачать изображение
  • показать изображение пользователю
  • пользователь вводит информацию для входа в систему
  • приложение входит в систему

Дело в том, что если вы загружаете изображение, чтобы показать его пользователю, вы фактически получаете изображение, отличное от того, которое было сгенерировано при загрузке страницы, верно? Как я могу получить изображение, которое было сгенерировано при загрузке страницы, чтобы, когда я показываю его пользователю, оно было правильным?

Вопрос не зависит от языка.

Ответы [ 8 ]

3 голосов
/ 20 сентября 2011

Я думаю, что ваша проблема связана с сеансами, сеанс, в котором ваше приложение загружает изображение, и сеанс, в котором ваше приложение отправляет форму входа, может не совпадать с сеансом, тогда ваша капча никогда не будет правильной, вы должны поддерживать сеанс между запросами, как правило, файлы cookie устанавливаются веб-сайтом.

1 голос
/ 22 сентября 2011

По своему дизайну большинство каптч всегда будут давать вам другое изображение.Нет способа обойти этот факт.

Первое, что нужно сделать, это открыть fiddler .Таким образом, вы можете увидеть, что делает браузер, чтобы он мог аутентифицироваться и оставаться аутентифицированным.

Обычно это сводится к отправке файла cookie.Поэтому вам нужно сохранить cookie в своем клиентском приложении и отправить все запросы вместе с этим cookie.Различные платформы предоставляют функции для этого, но я уверен, что быстрый поиск покажет вам, как это сделать.

Не забудьте обратить внимание на все обмены в fiddler, вам нужно убедиться, что ваши приложения запускаются одинаково.Кроме файлов cookie, обратите внимание на любое скрытое поле, которое js может установить в форме.

1 голос
/ 21 сентября 2011

Можете ли вы быть более конкретным в своей ситуации?Из того, что вы сказали, я предполагаю следующее:

  • У вас есть "клиентское приложение с графическим интерфейсом", которое входит на сторонний сайт.Это веб-приложение или настольное / автономное приложение?На каком языке оно написано?
  • Ваше приложение связывается со сторонним сайтом и загружает изображение с картинки.Это изображение затем показывается пользователю.
  • Пользователь вводит фразу-капчу и отправляет ее в ваше приложение.Ваше приложение затем отправляет эту фразу на сайт для проверки.Именно здесь начинаются сеансы. Предполагая, что удаленный сайт использует отслеживание сеансов на основе файлов cookie, вам необходимо будет отправить тот же файл cookie на сторонний сервер с этой отправкой, как вы это делали при загрузке изображения (на шаге выше).Это позволяет серверу сопоставить отправку с правильным отправленным изображением.Как именно вы это сделаете, зависит от того, на каком языке вы написали свое приложение, и от точной структуры всего этого.Без дополнительной информации более конкретное решение невозможно.
1 голос
/ 25 октября 2010

Звучит так, будто вы пытаетесь сами изобрести решение с использованием капчи.Вы рассматривали возможность использования reCAPTCHA ?Это бесплатно.

0 голосов
/ 22 сентября 2011

Зависит от капчи к другой капче. Может быть, вам нужно использовать сеансы или куки или имя файла с изображением капчи. Показать страницу с этой капчей.

0 голосов
/ 22 сентября 2011

Я не уверен, что я полностью понимаю этот вопрос, но разве вы не просто сохраните капчу локально после запроса ее с сервера, а затем внедрите локальное изображение из клиентского приложения, сохраняя при этом все необходимые данные капчи сессиичто позволит проверять капчу в посте, предполагая, что введенные пользователем данные верны?

Если проблема в том, что капча меняется каждый раз, когда вы ее запрашиваете, просто запросите ее только один раз.Вы предлагаете больше разъяснений, если это не относится к вам?

0 голосов
/ 21 сентября 2011

Вы можете передать токен некоторого вида с изображением капчи, возможно, добавленным к имени файла, например captcha-0ad719bef61bc6a0.jpg, и добавленные данные могут быть связаны во временной таблице на стороне сервера базы данных, которая имеет правильный ответ. Это позволит вам проверить, что все в порядке, не передавая изображение и ответ вашему приложению.

0 голосов
/ 25 октября 2010

Сгенерированное изображение также является изображением, предоставляемым пользователю. Ваша «главная» html-страница не генерирует / не должна генерировать изображение, она только встраивает его, используя тег image.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...