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

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

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

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

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


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

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


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

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

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

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


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