Хак «Апгрейд капчи аля Яндекс»

47
Ввиду последних событий, а именно «СПАМ на LiveStreet» и «Бот регистрирует 120 юзеров в сутки», решил найти альтернативную капчу. Нашел случайно у себя в папке со скриптами какой-то калечный аналог капчи Яндекса, откуда скачал уже не помню, поэтому первоначального автора указать не могу. Считаю капчу Яндекса одной из самых лучших (и не только я), поэтому допилил этот скрипт и прикрутил к ЛС. Эта капча основана на kcaptcha, которая используется в стандартной комплектации движка, поэтому безопасность 100% не хуже и даже лучше — можно смело ставить, если нравится, конечно.

Скрин:
Апгрейд капчи аля Яндекс

Установка:

1) Скачиваем (отсюда или отсюда) и распаковываем архив.
Папку Zloy_Taburet кладем в \classes\lib\external\
Изображения zloy_taburet_arrow.gif и zloy_taburet_post.gif кладем в папку images вашего шаблона:
для шаблона new\templates\skin\new\images\
для шаблона developer\templates\skin\developer\images\

2) Находим в файле \templates\language\russian.php строчку:
'registration_captcha' => 'Введите цифры и буквы',
и меняем на:
'registration_captcha' => 'Введите цифры слева',
Тоже самое нужно сделать со всеми локализациями.

3) Вставляем капчу в шаблон:

Для шаблона NEW
3.1) Находим в файле \templates\skin\new\actions\ActionRegistration\index.tpl:

			{$aLang.registration_captcha}:<br />
			<img src="{$DIR_WEB_ROOT}/classes/lib/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}">
			<p><input type="text" class="input-text" style="width: 80px;" name="captcha" value="" maxlength=3 /></p>
и меняем на:

			<div class="zloy_taburet">
				<img class="taburet" src="{$DIR_WEB_ROOT}/classes/lib/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}" onclick="this.src='{$DIR_WEB_ROOT}/classes/lib/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random(); return false;" alt="" />
				<img class="captcha" src="{$DIR_STATIC_SKIN}/images/zloy_taburet_arrow.gif" alt="" />
				<div class="zloy_taburet_license">
					<label for="zloy_taburet_name">{$aLang.registration_captcha}:</label><br />
					<p><input type="text" class="input-text" style="width:80px;" name="zloy_taburet_name" value="" maxlength="6" /></p>
				</div>
				<div class="clear"></div>
			</div>

3.2) Находим в файле \templates\skin\new\css\style.css строчку:
.lite-center .input-note { display: block; color: #bbb; font-size: 11px; line-height: 14px; }
и после нее добавляем это:
.lite-center .zloy_taburet { background:url("../images/zloy_taburet_post.gif") no-repeat 0px 0px; }
.lite-center .zloy_taburet img.taburet { width:200px; height:60px; float:left; padding:7px 0 7px 5px; cursor:pointer; }
.lite-center .zloy_taburet img.captcha { float:left; margin:30px 8px 0 15px; }
.lite-center .zloy_taburet .zloy_taburet_license { float:left; margin-top:5px;}
.lite-center .zloy_taburet .clear { clear:both; padding-bottom:40px; }

Для шаблона DEVELOPER
3.3) Находим в файле \templates\skin\developer\actions\ActionRegistration\index.tpl:

		<p><label for="captcha">{$aLang.registration_captcha}:</label>
		<img src="{$DIR_WEB_ROOT}/classes/lib/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}" /><br />
		<input type="text" name="captcha" id="captcha" maxlength="3" class="input-text captcha" value="" /></p>
и меняем на:

		<p>
			<div class="zloy_taburet">
				<img class="taburet" src="{$DIR_WEB_ROOT}/classes/lib/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}" onclick="this.src='{$DIR_WEB_ROOT}/classes/lib/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random(); return false;" alt="" />
				<img class="captcha" src="{$DIR_STATIC_SKIN}/images/zloy_taburet_arrow.gif" alt="" />
				<div class="zloy_taburet_license">
					<label for="zloy_taburet_name">{$aLang.registration_captcha}:</label>
					<p><input type="text" class="input-text" style="width:80px;" name="zloy_taburet_name" value="" maxlength="6" /></p>
				</div>
				<div class="clear"></div>
			</div>
		</p>

3.4) Находим в файле \templates\skin\developer\css\style.css строчку:
.center-block .error { color: #f20909; }
и после нее добавляем это:
.center-block .zloy_taburet { height:74px; background:url("../images/zloy_taburet_post.gif") no-repeat 0px 0px; }
.center-block .zloy_taburet img.taburet { width:200px; height:60px; float:left; padding:7px 0 7px 5px; cursor:pointer; }
.center-block .zloy_taburet img.captcha { float:left; margin:30px 8px 0 15px; }
.center-block .zloy_taburet .zloy_taburet_license { float:left; margin-top:4px;}
.center-block .zloy_taburet .clear { clear:both; }

4) Находим в файле \classes\actions\ActionRegistration.class.php строчку:
if (!isset($_SESSION['captcha_keystring']) or $_SESSION['captcha_keystring']!=strtolower(getRequest('captcha'))) {
и меняем на:
if (!isset($_SESSION['captcha_keystring']) or $_SESSION['captcha_keystring']!=strtolower(getRequest('zloy_taburet_name'))) {


Если вам не нужна старая капча, то удалите папку \classes\lib\external\kcaptcha\
Вроде бы все. Надеюсь ничего не забыл.


Товарищи, быть может у кого-то из вас есть лишние инвайты на хабр и лепру? Буду очень благодарен, если поделитесь. Заранее спасибо.
  • +26
  • 21 августа 2009, 22:03
  • Romelyus

Комментарии (90)

RSS свернуть / развернуть
Спасибо большое, респект, плюсую, уже прикручиваю.
+1
Поставил эту капчу, работает прекрасно. Убрал хак «вопрос при регистрации» и убрал забаненные IP из админки, оставил только активацию по email и новую капчу спеуиально для проверки. Завтра отпишусь будет ли спам или нет. Спасибо за работу.
+1
Великолепно. Принимаюсь за прикручивание к себе. Автору респектище!
+1
Все установилось. Автор еще раз спасибо. Поклон ;)
+1
Скажите, а если я прикрутил, но не видно что написано внутри, т.е. внутри пусто… что делать? помогите))
0
А стандартная капча отображается? Если да, то проверьте внимательно все ли пункты установки выполнены верно.
0
Здравствуйте! Подскажите пожалуйста а 4 пункт 4) Находим в файле \classes\actions\ActionRegistration.class.php строчку: это ТОЛЬКО для шаблона DEVELOPER или для NEW нужно тоже 4 пункт делать? Заранее спасибо.
0
Рано я обрадовался:( Эту капчу тоже пробивают собаки… опять с того же IP 82.193.96.212 зарегалось 2-е левых… Все та же бредятина в поле «о себе», левый маил и ссылка на сайт. Придется все таки через htaccess пока обороняться.
0
хех, только обрадовался новой капче, а получается она только с виду красивая, но все равно взламывается :(

но автору все равно! +1
0
Взломать можно что угодно, было бы умение, желание и смысл ломать. Такие дела =)
0
Раз такие пироги, то может avadim был прав? По-моему, обычный спам-бот не смог бы так быстро перестроится под новую капчу, ибо она значительно отличается от стандартной. Если это, конечно, не бот, которого целенаправленно травят на вас и переписывают его алгоритмы в режиме реального времени. В таком случае поможет только блокировка по IP. И то временно, пока бот не научится лазить через прокси. Тогда только инвайты спасут =)
0
если капчу берут слоем и выводят на порносайте для ввода. то как выглядет капча совершенно пофигу.
наберут её скорее всего школьнеги и наберут правильно. или расказать про заполнение форм на стороне?
0
Это реальный вариант, но он скорее будет использоваться для серьезных сайтов.
+1
Такой метод мне известен, но не думаю, что в этом случае используется именно он. Carw прав — это скорее для серьезных проектов. Хотя… всякое может быть =)
0
Ничего не понимаю, ночью после того как 2-е левых зарегилось с новой капчей я вновь вбил в бан IP 82.193.96.212. До сих пор все спокойно. У кого еще с новой капчей были вторжения?
0
На самом деле отлично, что у вас такое есть, да еще и на пустом сайте. Можно найти хорошее решение. Если такая капча пробивается, то скорее всего копать надо вообще в другую сторону. Возможно ее можно обойти без заполнения?
0
Тоже посещала такая мысль, что либо спамят вручную (зачем?), либо тестируют нового бота для ЛС и дорабатывают его в режиме реального времени, либо был найден способ регистрации, не заполняя капчу.
+1
если регают ботом/софтом следует подумать не о замене капчи а в первую очередь убрать везде слово «captcha».
Тоесть заменить его другим словом совсем не пахожим на капчу в шаблоне, в названии формы, в цсс… боту чтоб найти капчу нужно её как то распознать же =) а вы явно указываете «captcha» «тут» =)
+1
а вы явно указываете «captcha» «тут» =)
скорее «я капча» =)
А вобще дело говорите, стоит заменить имена айди и классов.
0
угу и добавить двухступенчатую регистрацию =)
зарегал первую половину данных, получил мыло, прошел по ссылке, дорегистрировался + рекапча + доп вопрос (а лучше три и тес на айкью) =)
0
По-моему, в ГИТИС будет легче поступить, чем пройти такую регистрацию =)
Вечерком обновлю пост — изменю имена классов. Там только одно маленькое добавление будет — основной экшн регистрации нужно будет чуток подправить, чтобы капча заработала с новым именем.
+1
ну что там поправить нужно я в старой капце поправил уже ;-)
но вобще нужно придумывать чтото простое и новое, тогда ещё на год полтора от спама уйдем.
и стопудняк это простое и новое как всегда лежит под носом.

PPS. я поддерживаю в раше один неизвестный движек… там реализация капчи идёт с фенечкой. если юзер переключился со страницы с капчей а потом вернулся чтоб её ввести то капча незасчитываеться (я имею ввиду переход — закрыл вкладку. открыл вкладку со страницей (сложил развернул окно)) только я честно хз как там это сделано. пол тыщи юзеров поставили цмску, про спам небыло пока нислова.
0
Если спама нет, то это еще не говорит о заслуге средств защиты. Может эти сайты просто нафиг никому не нужны :-)
+1
Раз такие проблемы, может автору(ам) проекта подумать как решить эту задачу.
0
  • avatar
  • igrok
  • 22 августа 2009, 10:09
может вам подумать а автор сделает? или автор проекта вам обязан чемто?
тон неплохо смень бы дабы не обижать автора.
+3
Так уже все последние топики только про это, вот я и написал.
какой еще тон, вы про что?!
0
Со спамом не только автор должен бороться — это долг каждого, кто пользуется LS =)
«Вставайте, люди русские» ©
В этой войне мы должны победить =)
0
что если сделать поля ввода информации, при регистрации пользователя предзаполненными?
то есть чтобы ввести какую-то информацию в строку, придется предварительно стереть уже написанное test, test@test.ru и тд
0
Хм. Может быть и поможет. Смотря как работает бот. Но попробовать никто не запрещает =) Имеет смысл делать предзаполненным только поле почты — если к test@test.ru бот добавит свой адрес, не очистив поле, то регулярка заругается, что введен неправильный формат мыла.
Мне проверять не на чем. Может быть yuri25 согласится потестировать на его сайте такой способ, раз уж так получилось, что его боты одолели =)
0
вобще спаминг движка это только показатель его популярности =) порадуйтесь за творение Орта же =)
+1
Такими темпами LS скоро как DLE спамом обрастет с ног до головы =) Ура, товарищи! =)
0
как там в wp антиспам система называецо? может к ней можно както подключицо?
0
Не знаю, мало работал с этим убожеством =)
+2
Все это хорошо, но в сети столько дешевых сервисов распознавания капч появилось, что есть смысл оставлять только активацию по почте :)
0
Отличный хак! Давно с небольшой завистью поглядывал на капчу яши, очень хотелось такую же :) Красиво, да и она очевидно сложнее для ботов. Добавил в избранное, обязательно поставлю.
Вы бы добавили этот хак в раздел модулей, а то топик может и затеряться со временем :)
+1
  • avatar
  • Do3er
  • 23 августа 2009, 21:06
Для WordPress появилась капча, в которой надо вращать картинки до правильного положения, посмотреть можно вот на этом блоге в комментах, а скачать плагин для WP кажется тут, если её доработать напильником, чтоб она работала на LS, то Xrumer её вроде не пробивает, возможно было бы счастье :) Сам к сожалению плохо хнаю php, чтоб такое реализовать, возможно кто-то заморочится, думаю, что эту капчу не намного проще было дорабатывать напильником.
0
  • avatar
  • Lesso
  • 25 августа 2009, 12:22
Интересный вариант. Можно попробовать прикрутить.
0
Топик обновлён.
Изменнены имена классов, чтобы спам-ботам было трудней обнаружить капчу, и залит архив в раздел модулей (будет доступен после модерации).
0
А как насчёт вращающихся картинок? Нет желания заморочиться? :)
0
Возможно прикручу, как появится свободная минутка между учебой и работой. Если никто другой к тому времени не успеет прикрутить :)
+1
Всё заменил по инструкции перестал работать.
пишет Ошибка: Неверный код

до смены названия работал (
0
А вы уверены, что не пропустили 4-ый пункт инструкции?
+2
Спасибо. Действительно 4-ый пункт пропустил.
(он просто в конце)
0
Незачто. Всякое бывает :)
+2
Была та же проблема. Уже собирался плакаться тут. Но почитал и оказалось я тоже забыл 4-ый пункт выполнить :-D

Спасибо вам, отличный хак!
0
Я обновил — полет нормальный. Наверное вы что-то пропустили =)
+1
Прикрутил, всё работает отлично. Благодарствую.
+4
  • avatar
  • vk333
  • 26 августа 2009, 23:24
На моем сайте на днях начали боты регистрироваться, правда не по 120 штук как тут кто-то писал)) Прикрутил этот хак и все прекратилось! Огромнейшее спасибо! ИМХО это самое полезное дополнение для LS за месяц (для меня точно), так как борьба со спамом это святое :)
+2
  • avatar
  • Arlen
  • 31 августа 2009, 12:16
Рад помочь =)
+2
Тоже недавно такая же ситуация была — хак помог, спасибо :)
+1
Спасибо за хак. Прикрутил, только у меня почему-то 2 формы для ввода цифр и они под картинкой с цифрами. Не подскажите почему так?
0
Наверное случайно вставили два раза код. Или не удалили старый.
Внимательно проверьте все пункты установки. Особенно обратите внимание на файл \templates\skin\ваш_шаблон\actions\ActionRegistration\index.tpl
0
Спасибо. Буду разбираться.
0
постоянно пишет что неверный код, в чем может быть проблема??
0
простите, не заметил коммента)
0
А у меня картинка не отображается. Скажите, для этой капчи надо обязательно GD2? У меня только GD установлен.
0
Для этой капчи, как и для стандартной, требуется GD2.
0
странно после того как поставил у меня названия меню изменились на "???
???????????? ???????
??????"

подскажите в чем проблема
ps смена шаблона не помогает :(
0
  • avatar
  • f1re
  • 15 сентября 2009, 13:18
проблему решил...(russian.php)
0
  • avatar
  • f1re
  • 15 сентября 2009, 13:51
Здравствуйте! Пытаюсь настроить, ливстрит под свои нужды, пока получалось с помощью чтения топиков на вашем сайте, но возник вопрос на который я не могу найти решения.
Мне нужно, чтоб при регистрации пользователь указал только имейл и ввел капчу, а ему на ящик прийдет сгенерированый пароль и ник сгенерированый по типу userid0036, чтоб юзеры не выдумывали пароли и логины.
0
Боты отсеиваться стали… но и многие пользователи жалуются что не могут разобрать картинку.
0
Други помогите. Поставил капчу. Всё ус тановилось. Только не показываются иферки и волны. Рамк и текст появилисб. А циферки и волны внутри рамки нет. только белое поле.
0
Други помогите. Поставил капчу. Всё ус тановилось. Только не показываются иферки и волны. Рамк и текст появилисб. А циферки и волны внутри рамки нет. только белое поле. Это если в Мазиле смотреть.
А в експлорере — просто не отображается картинка.
Хотя две картинки в каталоги разместил.
0
Аналогичная ситуация. Что делать?
0
спам только неоправданный, ссылки скрываются под и rel=nohref забавный народ индейцы, как-будто из профилей прям так и попрет народ…
0
* noindex (тег не запостился) и rel=«nofollow»
0
Можно как то сделать изображение капчи почетче? Иногда сам не могу разобрать. Подскажите плиз кто знает. Спасибо.
0
файл index.php в папке со скриптом каптчи
Строка 8
$jpeg_quality = 90;

Меняем значение 90 (от 1 до 100 вроде)
0
от этого уменьшится сжатие жпег. 90% это нормальная цифра. надо ковырять параметры искажения, там куча разных цифр, формул и параметров в коде при генерации картинки, можно подбирать их методом тыка, что бы изображение получилось более или менее разглядываемое
0
И чтобы боты были более менее разборчивы :)
0
Эта каптча работает на версии php 5.3.1?
0
У меня на 5.3.1 работает, ничего не менял.
+1
все круто, только в файле index.tpl из actionregistration надо убрать лишнее

0
Ребят, помогите. Все сделал как тут описано, но сама картинка не отображается. В чем проблема?
Вот, посмотрите сами: ls.macdays.ru/registration/
0
'res/watermark.png' is not a valid PNG file

Ватермарк у Вас кривой судя по всему… попробуйте другой…
0
автор, ещё один человек тебе благодарен ;)
0
  • avatar
  • F_5
  • 06 января 2010, 13:17
Спасибо!!!
0
Почему-то у меня постоянно неверный код при регистрации(

Как исправить?
+1
спасибо!
0
я еще добавил для input где вводятся цифры параметр autocomplete=«off»
чтобы подсказка браузера не вылазила
0
спасибо большое на 0.4 пихнул пошла)))
0
Для версии 0.4 и выше есть несколько особенностей. Вот по пунктам соответственно:
1) Копировать папку по адресу: engine/lib/external/
3.1) Находим в файле /templates/skin/new/actions/ActionRegistration/index.tpl:
{$aLang.registration_captcha}:<br />
			<img src="{cfg name='path.root.engine_lib'}/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}"  onclick="this.src='{cfg name='path.root.engine_lib'}/external/kcaptcha/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random();">
			<p><input type="text" class="input-text" style="width: 80px;" name="captcha" value="" maxlength=3 /></p>

и меняем на:
<div class="zloy_taburet">
             <img class="taburet" src="{cfg name='path.root.engine_lib'}/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}" onclick="this.src='{cfg name='path.root.engine_lib'}/classes/lib/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random(); return false;" alt="" />
                                <img class="captcha" src="{cfg name='path.static.skin'}/images/zloy_taburet_arrow.gif" alt="" />
                                <div class="zloy_taburet_license">
                                        <label for="zloy_taburet_name">{$aLang.registration_captcha}:</label><br />
                                        <p><input type="text" class="input-text" style="width:80px;" name="zloy_taburet_name" value="" maxlength="6" /></p>
                                </div>
                                <div class="clear"></div>
                        </div>

Должно работать:) Автору респект!
+1
Добрый день!

Сделал как написали (версия 0.4.1 шаблон NEW) не могу зарегистрироваться: постоянно выдаёт ошибку «неверный код регистрации»…

В какую сторону копать?
0
Если быть точным, менять на:

<div class="zloy_taburet">
  <img class="taburet" src="{cfg name='path.root.engine_lib'}/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}" onclick="this.src='{cfg name='path.root.engine_lib'}/external/Zloy_Taburet/index.php?{$_sPhpSessionName}={$_sPhpSessionId}&n='+Math.random(); return false;" alt="" />
  <img class="captcha" src="{cfg name='path.static.skin'}/images/zloy_taburet_arrow.gif" alt="" />
  <div class="zloy_taburet_license">
       <label for="zloy_taburet_name">{$aLang.registration_captcha}:</label><br />
       <p><input type="text" class="input-text" style="width:80px;" name="zloy_taburet_name" value="" maxlength="6" /></p>
  </div>
  <div class="clear"></div>
</div>
0
Странно, мучался, конфижил, правил скрипт, а плагин принципиально выдавал «неправильный ключ», даже перезакатывал поверху все заново… Потом махнул рукой, снес его под чистую, почистил кэш, поставил заново — все работает, вроде как так и задумывалось… Снова подправил все моменты, которые меня интересовали — по-прежднему работает… Странно… ))

Одно смутило — нельзя юзать буквы в капче, тупо бело выводится, но, думаю, что это и сам доковыряю…
Спасибо за плагин!
0
Сделал, как описано, на Версию 0.4.2 не пошла, тупо стрелка и все
0
Эта каптча есть вот здесь => livestreetcms.com/addons/view/87/
0
на 5.0.1 пойдёт?
0
Я ставил на 0.5 — работает, там только где то css немного надо подправить иначе форма регистрации растягивается на всю ширину экрана, наверное и на 0.5.1 будет работать.
0
Я минут 30 назад ставил на 0.5.1 она то работает, но при нажатии на картинку каптчи (чтобы обновить) она пропадает и больше ничего не появляется… только после обновлении страницы браузера...=(
0
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.