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

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]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 практически не повторяются.

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

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


(Читать комментарии) -