Как стать автором
Обновить

Комментарии 44

НЛО прилетело и опубликовало эту надпись здесь
Верно, но в моем случае проще было заморочиться на php чем переписывать все остальное.
проще было взять питон:
>>> print ( 18220025198660 & 65535 ) * 1540483477 + ( ( ( 18220025198660 >> 16 ) * 1540483477 & 65535 ) << 16 )
22192919126932
Думаю вам не предлагали переписать всю на ноду, а просто запустить маленький node-сервер рядом, который бы принимал куку и выдавал ответ.

А в php коде просто делать GET с кукой на этот сервер.
Пожалуй соглашусь, такой вариант лучше.
А вообще, лучшая защита от ботов — это капча. Даже самый хитрый javascript может быть выполнен ботами

А для всего остального (включая капчу) — есть индусы.
да, антигейт работает на совесть и совсем недорого.
Не всегда в стандартной капче есть смысл. Сейчас ее пихают все кому не лень и куда не лень. В большинстве же случаев, 99,99% стандартных ботов можно отсеять простейшей js ловушкой. В оставшихся же случаях все равно обойдут самописным скриптом или антикапчей.
К слову большая часть каптч, которые так раздражают большинство, препрекрасно ломаются и без антикапчи. Т.е. смысла в такой защите от ботов — 0 и банальная js заглушка отсеивала бы ботов намного эффективнее.

Как вариант антикапчи пришло в голову вычислять нечто эдакое сложное (на стороне клиента), чтобы подгружало проц на секунду. Я лучше пару сек повтыкаю в монитор на крутящиеся часики с надписью «проверка кода», чем матерясь буду опять раз с 20-й попытки разгадывать очередной шедевр.

Допустим, даже если код сломают, то, как ни крути, спам-сервер, который это будет все разгадывать не сможет переварить больше определенного числа каптч в минуту.
Главное тут свой серверный код придумать так, чтобы не пришлось тех же вычислений каждый раз для клиентской стороны выполнять. Можно придумать что-то на основе алгоритмов закрытого/открытого ключа или сделать ход конем и считать решения для Bitcoin. Хз, правда, как последнее можно приспособить для этих нужд, но теоретически очень даже возможно, а дополнительным бонусом от ботов будет прибавка в виде Btc на счету. :)

Ух понаписал, хоть садись и реализовывай. :)
можно отсеять простейшей js ловушкой

Приведите пару примеров, если не затруднит.
А погуглите в сторону JavaScript Captcha, есть множество решений. Хотя лучше конечно что-то свое или хотя бы с минимальными изменениями.

Писать что-то мегасложное нет смысла, если нужно, все равно сломают.
Если у вас ресурс не по типу контакта, я сомневаюсь, что кто-то будет спецом писать разгадывалку.

А ловушка может быть самой элементарной, по типу скрытого поля, которое появляется только в процессе генерации на стороне клиента. От залетных спамботов часто выручает.
Можно кстати издеваться так над ними. Сделать капчу и скрытое js поле, если в POST запросе скрытое js поле не передалось, капчу считаем неверной. пусть долбится и тратит хозяйские деньги на антикапчу. Если авторы забыли сделать ограничение на число попыток, весь баланс быстро подойдет к нолю. :)
Скрытое поле заполняемое яваскриптом (jquery) боты на моих сайтах уже обходят ;(
Вот думаю как бы по простому усложнить им жизнь. Разумеется без капчи.
Для тех, кто не в курсе — в js нет целых чисел, всё — double-ы. Соответственно, появляется пара лишних знаков в мантиссе :)
Смысл поста в том, что вы открыли для себя bc math?..
Нет, пост о механизме защиты и о том как ее обходить. bc math только инструмент
Вы всегда читаете между строк?
Просто человек увидел в тексте знакомый инструмент BC Math и счел своим долгом оставить сей комментарий, даже не прочитав статью. Все мы хотим казаться умными, ну с кем не бывает? ;)
А на 64-бит системах пробовали?
Можно использовать gecko или webkit в боте. Отправлять запросы через него. :)
Что за бред вы несёте? =)))
Почему же бред? Инициализируется библиотека, например gecko, загружается страница с нужной формой, ставятся нужные значения в поля формы и нажимается кнопка сабмита. Javascript выполняется — запрос уходит. Всё автоматизировано.
Не знаю. Неукладывается подобное в голове моей.
Можно ещё проще(без иксов), есть PECL, считающий яваскрипт на основе куска файрфокса.
Есть монгодб, для которого есть нативный PHPшный туннель.
Можно интернет эксплорер запустить в конце концов, в виде HTA файла.
http://iopus.com/imacros/

вот плагин, автоматизирующий работу браузера, за 2 мин пишется скрипт, который сделает свое грязное дело и со стороны сервера, все его действия ничем не будут отличаться от действий обычного посетителя.

Спамер использующий этот софт даже не узнает, что тут была какая-то защита :D
На JS все числа — 64битные double.
В PHP такие тоже есть. Достаточно все вычисления проводить в double, применяя, где необходимо, doubleval.
У меня почему-то ваша php-функция zeroFill( 18220025198660, 16 ) возвращает 278015521, а javascript 18220025198660 >>> 16 даёт 11809. В чем может быть дело?
В zeroFill добавили первой строкой $a = floatval( $a );?
Не помогает, тот же результат.
Сейчас протестил, следующий код:

$k = zeroFill( 18220025198660, 16 );
echo «test = '». $k. "'";

k = 18220025198660 >>> 16;
alert( «test = '» + k + "'" );

Оба примера пишут test = '11809'

Сейчас тестил на Windows Vista, 32 bit
Очень странно. Мне php стабильно выдает 278015521 (тестирую, правда на маке, но какая разница?). Это, кстати, не простое число. Именно его выдает руби как результат `18220025198660 >> 16`. Ничего не понимаю :)
кстати, на php можно писать:
echo "test = '$k'";
coo, poo и urine? Действительно болото.
Как говорится из песни слова не выкинешь
Можете спросить у создателя «нескольких довольно популярных ресурсов», почему он решил назвать эти функции именно так
Я бы спросил тоже самое у создателей libcaca (хорошая библиотека, кстати): caca.zoy.org.
substr( $str, $i, 1 )?
Да-да, взял отсюда
КО подсказывает, что лучше так: $str{$i}
Для обхода подобной защиты проще всего использовать какой-нибудь браузерный движок и к примеру Selenium.
Пусть минусуют. Пост из раздела «демон на php» или «социальная сеть на joomla».
Из своего опыта, использование на сайте javascript против ботов описанным выше способом бесполезно.

Если вы хотите защитить ваш ресурс от антигейта, приходится каждые 2 недели — месяц менять скрипты капчи. Советы:
  1. На русскоязычных сайтах используйте русскоязычные капчи. На антигейт приходится всегда повышать цену за капчу — пусть спамеры больше денег потратят. Пропускайте гласные буквы в слове капчи (заставляя пользователя додумывать курс правописания первых классов).
  2. Рубите капчу после генерации на две-три картинки, отображая их на странице в правильном порядке. На антигейт два индуса не смогут ввести капчу в один <input />.
  3. Высший пилотаж: использовать js для записи действий пользователя. Самый простой пример — передать на сервер координаты клика по капче. По-сложнее, сделать капчу «собери пазл».


Сколько бы мы не придумывали способов защит, у спамеров есть свой софт, который обучается обходить защиты и пользуется общей базой, доступы к которой стоят $10-$30/мес. Поэтому, вашу капчу(скрипт) взломают один раз, и, если вы не будете обновлять принципы ее работы, когда-нибудь очень скоро ваша капча(скрипт) станет бесполезной
2. Порезанную капчу можно склеить обратно перед отправкой индусам
да, можно. но в базах для программ спам-ботов только список ссылок на форумы, блоги, чаты и пр. Изначально хрумер пытается сам разобраться где что на сайте находится и если он не может распознать капчу сам, отсылает ее в антигейт. Сам хрумер пока такие капчи не распознает и отсылает индусам каждую капчу отдельно, потом тупит
Если ее модифицировать, например динамически менять делающий вычисления код

Ничего особо не измениться.
Кстати, а зачем мучиться с переписыванием функции на пхп, если можно взять js код и подумать как выполнить его в своей программе?
function poo(), var urina;
Кто эти писаки?
> на нескольких довольно популярных ресурсах
Назвать эти ресурсы популярными можно лишь с бо-о-о-льшой натяжкой.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации

Изменить настройки темы

Истории