Пишем простой авторегистратор. Часть 3 - боремся с капчей.
Содержание
- Инструментарий
- Основы
- Боремся с капчей
- Подключаем антикапчу
- Подтверждение по email
- Пишем модуль для RegSubmitter
В предыдущей статье мы рассмотрели самый простой пример авторегистратора, которому надо всего лишь отправить форму. Но таких сервисов очень мало, поэтому гораздо чаще приходится во время регистрации видеть перед собой капчу. Сегодня “ляжет под нож” сервис Мое Место.
Шаг 1. Анализ защиты.
В первую очередь, следует убедиться, что капча вообще есть :) То, что есть картинка, еще не значит, что есть капча. Как это ни удивительно, но бывают сайты, на которых капча создает сложности только для людей, но не для роботов. Кстати, завтра будет ровно год статье, в которой я писал как раз про такие случаи. Советую прочесть ее, прежде чем читать дальше.
Если вы убедились, что капча действительно не обходится простыми методами, то придется смириться и перейти к изучению защиты. Я встречал два метода проверки валидности капчи:
- Капча привязывалась к сессии и сессионный идентификатор передавался через cookies
- Сессионный ключ передается в скрытом поле формы.
- Комбинация первых двух
В общем случае, самый простой подход - предполагать, что первый тип защиты всегда есть, а второй легко определить по наличию скрытых полей с непонятными хеш-подобными значениями, которые меняются при перезагрузке страницы.
В особо тяжелых случаях таких полей бывает несколько, поэтому надо отследить их все.
Шаг 2. Пишем код.
Для того, чтобы извлекать сессионные ключи из формы, мы будем пользоваться регулярными выражениями. Очень хорошо про них написано здесь. Нет, можно, конечно, обойтись и обычными строковыми функциями, но это будет выглядеть коряво и работать ненадежно.
Капчу мы будем вводить ручками, но это только до следующей статьи :)
При написании кода надо обратить внимание на две вещи:
- HTML-код скрытого поля с сессионным ключом. Основываясь на нем надо будет составлять регулярное выражение.
- Адрес картинки. При использовании сессионного ключа часто добавляют его к адресу картинки. На это тоже следует обратить внимание.
|
|
Вот и все дела. Как и в прошлый раз, в коде есть пара синтаксических ошибок “от дурака”, а в остальном он полностью рабочий, он же есть и во вложении. И, как в прошлый раз, файл должен быть в кодировке UTF-8. Скачать целиком: moemesto.php_.txt
Через неделю…
…нам надоест уже надоело вбивать капчу руками и мы воспользуемся антикапчей.