Войти в систему

Home
    - Создать дневник
    - Написать в дневник
       - Подробный режим

LJ.Rossia.org
    - Новости сайта
    - Общие настройки
    - Sitemap
    - Оплата
    - ljr-fif

Редактировать...
    - Настройки
    - Список друзей
    - Дневник
    - Картинки
    - Пароль
    - Вид дневника

Сообщества

Настроить S2

Помощь
    - Забыли пароль?
    - FAQ
    - Тех. поддержка



Пишет Misha Verbitsky ([info]tiphareth)
@ 2007-02-14 22:24:00


Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Настроение: sick
Музыка:Подорожный - АБВГДЭЙКА
Entry tags:perl, spam

GD::SecurityImage::AC
В старый форум Imperium.lenin.ru ходят
дикими толпами ополоумевшие роботы
и спамят в форум.
Все их сообщения сводятся к

``Your username/password combination was invalid, or you
do not have permission to post to this topic. You may
revise your username and password using the form at the
bottom of this page.''

но это их совершенно не останавливает. Очевидно,
роботами управляет какая-то программа, которая сломана.

Я провел весь вечер, изучая антиспамный софт.
Результат моих трудов видно вот тут
http://imperium.lenin.ru/DISCUS/test-capcha.cgi
это программа, которая показывает антиспамную
картинку, и если вы введете в формочку
правильные буковки, она вам скажет
``Your results: 1'', а в противном
случае ``-3''.

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

В результате я просто переименовал поля
формы, куда роботы вбивают свое барахло;
хочется думать, что это их остановит.

Если кому нужно, вот антиспамный скриптец,
который дальше можно куда-нибудь привертеть.

#!/usr/bin/perl 
use GD::SecurityImage::AC;
use CGI qw[header escapeHTML param];

my $public_folder= "/home/imperium/p/DISCUS/captcha-public/";
my $private_folder= "/home/imperium/discus-adm/captcha/";
my $captcha_url = "/DISCUS/captcha-public/";

my $self  = bless {}, __PACKAGE__;
$self->{cgi}     = CGI->new;
$self->{program} = $self->{cgi}->url;my @jp;($self->{program},@jp) = split /\?/, $self->{program};

$color  = [15, 100, 75];     # HEX

my $captcha = Authen::Captcha->new;

$captcha->data_folder("$private_folder");
$captcha->output_folder("$public_folder");
my $number_of_characters=4;

$captcha -> gdsi ( 
                  new => {width   => 380, thickness => 3,
                          height  => 150,
                          lines   => 10,
                          gd_font => 'Giant',
                          font => "/home/imperium/cgi/comic.ttf",
                          ptsize => 47,
                          scramble => 1, 
                          },
                  create => [ ttf => 'ec', $color, $color],
                  particle => [165],
                  );


$code = param("captcha");

my $md5sum = ""; 

if ($code eq "")
{ 
    $md5sum = $captcha->generate_code($number_of_characters);
    print_form(); 
}
else 
{ 
    $md5sum_form = param("md5sum");
    my $results = $captcha->check_code($code,$md5sum_form);

    print "Content-type: text/html

   Your code: $code, your md5sum: $md5sum_form
   Your results: $results"; 
}

sub print_form
{
    print <<EOF;
Content-type: text/html


<img src=$captcha_url/$md5sum.png>
<FORM ACTION="$self->{program}" method=post>
<INPUT TYPE=HIDDEN NAME="md5sum" value="$md5sum">
<INPUT NAME="captcha"  SIZE=10><p>
</form>
EOF
}



а вот полезные ссылки
[ 1 | 2 ]

Спаммеров надо убивать. Самым жестоким образом.
Ужасно пытать, а потом убивать.

Привет


(Добавить комментарий)


[info]symbolith
2007-02-15 01:23 (ссылка)
оффтоп

Миша, а скайпом ты в частности не пользуешься?

(Ответить) (Ветвь дискуссии)


[info]tiphareth
2007-02-15 01:25 (ссылка)
Нет, увы. Все никак не соберусь

Такие дела
Миша

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]symbolith
2007-02-15 01:26 (ссылка)
Жаль, я вот сейчас в скайпе сижу.

(Ответить) (Уровень выше)


[info]yobanniy_huy
2007-02-15 02:01 (ссылка)
спам-боты не эмулируют javascript - сделайте dynamic html, выдайте форму через document.write("<form ..., и все дела.

(Ответить) (Ветвь дискуссии)


[info]yobanniy_huy
2007-02-15 02:01 (ссылка)
и ответьте плиз на прошлый месадж про неработающие бан-сеты

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]tiphareth
2007-02-15 02:03 (ссылка)
Это [info]nit@lj надо спросить, он, кажется, разбирался.
Я сам удивляюсь.

Такие дела
Миша


(Ответить) (Уровень выше)


[info]quappa
2007-02-15 04:45 (ссылка)
Есть очень простая вариация на тему всех этих картинок, сильно облегчающая жизнь настоящим живым людям. Достаточно попросить их вместо кода с кривой картинки ввести какое-то конкретное слово, например, название форума или фамилию первого советского вождя.

У многих хороших людей единожды введённое значение поля сохранится в браузере и вообще более никак их напрягать не будет. Да и остальным в целом будет довольно просто жить.

Безусловно, этот способ не работает в случае, когда спаммеры пишут свои злобные программки конкретно под ваш форум.

(Ответить) (Ветвь дискуссии)


[info]tiphareth
2007-02-15 04:52 (ссылка)
Ага, вот посмотрим.
Сейчас я думаю, может, достаточно просто менять глобально поле формы,
куда заносится сообщение. Если спаммерам лень настраивать
помойный насос, они отхлынут, а если не лень - то и вожди
СССР не помогут

Такие дела
Миша

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]quappa
2007-02-15 04:58 (ссылка)
Настроить парсинг имени поля из формы можно и в generic-скрипте.
На моём сайтике форма с переименованным полем сбивала 100% спама в течение года, а потом за неделю показатель снизился до 0%. Видимо, ребята проапгрейдились.

Сейчас я прошу людей решать 40 + 2 и вновь наблюдаю радостные 100% попадания :)

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]phantom
2007-02-16 08:36 (ссылка)
муахаха
эта капча распространится - и будут спаммеры
пользовать гугл-калькулятор...
представляю я себе скрининг-тест будущего:
"кэлеровы многообразия - это ..."
а дальше вручную вписать надо

хехе, а чем тогда человек от спама отличается?
а ничем.
не каждый, точнее, не является спамом.

персональные фильтры информации спасут

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]quappa
2007-02-16 08:54 (ссылка)
Спасёт только Аллах :)
А в гонке вооружений надо всего лишь всегда быть чуть-чуть впереди.

(Ответить) (Уровень выше) (Ветвь дискуссии)


[info]phantom
2007-02-16 09:40 (ссылка)
чтобы это обрело смысл,
надо вернуть СССР.
никакой гонки вооружений
в наше время быть не может.

правильное слово для статус кво -
говнозамес (говномешалка).

где нужно быть в говнозамесе?

(Ответить) (Уровень выше)


[info]tiphareth
2007-02-18 04:29 (ссылка)

Да, и у меня не помогло - роботы совершенно не
успокоились. Попробую теперь жабаскрип.

(Ответить) (Уровень выше)


[info]yarlson
2007-02-15 08:52 (ссылка)
Есть способ борьбы:
Создаются фейковые поля со стандартными названиями типа subject и text и скрываются от юзера через CSS или JavaScript, а юзеру подсовываются поля с левыми названиями. В итоге, если скрытые поля заполняются - то это бот и можно автоматом банить айпи.

(Ответить) (Ветвь дискуссии)


[info]syarzhuk
2007-02-16 01:52 (ссылка)
O!

(Ответить) (Уровень выше)


[info]tiphareth
2007-02-18 04:32 (ссылка)
У них большая база взломанных IP - тысяч 10 самое малое.
IP практически не повторяются.

Такие дела
Миша

(Ответить) (Уровень выше)