Skip to content

Кокосовая капча, которая была у пользователя anon1352

License

Notifications You must be signed in to change notification settings

drforkoff/coconut

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 

Repository files navigation

Coconut Ø Captcha

Кокосовая капча!

  • Генерирует от 3 до 8 случайных букв из набора (автоматически центруются)
  • На фоне случайным образом генерируются 30 маленьких букв-помех
  • Буквы капчи накладываются друг на друга под разными углами для усложнения интерпретации ботами
  • С вероятностью в 10% (кокосовый фактор) в конечном наборе будет слово "кокос" на случайной из возможных позиций (к примеру, если генерируется 5 букв и выпадает кокос, позиция может быть только 0; если генерируется 8 букв, то позиция может быть 0-2, и так далее (считается, что отсчёт ведётся с 0))
  • При генерации капчи просчитывается её хэш (используется свободный суб-модуль PHPass 0.3) и кладётся в сессию (так как куки использовать небезопасно)
  • При отсылке формы задействуется обработчик капчи, сверяющий хэш введённой капчи с тем, что хранится в сессии и (что делать после проверки - уже дело пользователя)
  • ???
  • Profit.

Использование

Поставить в нужном месте на странице тег:

<img alt="[капча протухла]" src="/way/to/cgen.php" onclick="this.src='/way/to/cgen.php';" />

где "/way/to/cgen.php" - путь к файлу cgen.php, возвращающему картинку по запросу.

Всем включенным файлам лучше лежать в одной папке с сохранённой структурой.

Кроме того, можно поставить ограничение на время ввода капчи (к примеру, активна только минуту, после чего "протухает" и нужно её обновить). Для этого достаточно подключить скрипт timer.js. По умолчанию скрипт вставлен в страницу с таймером на 1 минуту.

Файл stat.php выводит информацию о последней сгенерированной капче. Его можно использовать для дебага.

Настройки

Можно менять:

  • Шрифт
  • Рабочий набор букв (внимание, используется кириллица, поэтому шрифт обязательно должен её поддерживать; если поменять набор на латиницу или цифры, эта надобность отпадает)
  • Минимальное количество генерируемых букв (не должно превышать максимальное)
  • Максимальное количество генерируемых букв (в этом случае нужно поменять и ширину капчи с шагом в 16 пикселей на букву)

Не нужно менять:

  • Размер шрифта и подобранные множители для расчёта ширины букв, капчи и отступа от краёв
  • Механизм проверки капчи (если вы не разбираетесь в генерации хэша)

Капча не зависит от регистра введённых букв, так как по умолчанию они все маленькие, но пользователь может подумать, что большие (это можно отключить в обработчике, убрав функцию mb_strtolower()).

Свободный модуль PHPass: http://www.openwall.com/phpass/

About

Кокосовая капча, которая была у пользователя anon1352

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published