[personal profile] ichthuss

З подачі Фріца Моргена, а також для перепочинку від навчання написав бота для видалення жж-спаму. Від початку бот був зроблений скриптом, що прикручувався до поштового клієнта і реагував на повідомлення про нові коментарі. Власне, цей скрипт у мене зараз і працює. Потім я доробив його до повноцінного бота, який сканує журнал і самостійно шукає спам-коментарі. Ось вони обидва:

Поштовий бот: delcomment.pl

Автономний бот: scancomments.pl

Все ж таки я б рекомендував користуватися поштовою версією бота, вона проста і гарно відлагоджена.

Як користуватися.

Найперше, знадобиться perl.

Поштовий бот:

Налаштовуєте у своєму поштовому клієнті фільтр, котрий всі спам-повідомлення передає на вхід скрипта. УВАГА! Скрипту слід передавати лише спам-коментарі. Всі коментарі, що попадуть до скрипта, будуть видалені, а їх автор забанений. Скрипт викликається наступною командою:

Для Linux:

perl delcomment.pl <логін> <пароль>

Для Windows, скоріше за все, знадобиться вказати повний шлях:

"c:\Program Files\Perl\bin\perl.exe" "c:\Documents and Settings\YYY\delcomment.pl" <логін> <пароль>

(звісно, треба підставити свої шляхи - до установки perl'a та до скрипта).

Автономний бот:

(На всякий випадок ще раз попереджаю: автор не несе ніякої відповідальності за наслідки використання бота і не дає ніяких гарантій щодо його використання. Якщо в результаті неправильних дій бота ви влаштуєте тотальний френдоцид і повидаляєте всі до одного коментарі зі свого журналу, то так вже і буде).

Найперше, в поточному каталозі має знаходитися файл під назвою "patterns.txt", в якому мають знаходитися зразки текстів зі спам-повідомлень - по одному зразку на строку. Зразки задаються регулярними виразами, тому перед символами [].\^$() треба ставити додатково знак "\" (або, щоб не морочитися, просто вибирати фрагменти спам-текстів без пунктуації). Після цього виконайте

Для Linux:

perl scancomments.pl <логін> <пароль>

Для Windows:

"c:\Program Files\Perl\bin\perl.exe" "c:\Documents and Settings\YYY\scancomment.pl" <логін> <пароль>

Ні, все-таки краще перед цим допишіть в 38 строці команду "return;" (без лапок) і запустіть скрипт "вхолосту", щоб побачити, що він надумав видаляти.

Реліз нотес:

delcomment.pl реагує на строку виду

http://www.livejournal.com/delcomment.bml?journal=3Dusername&id=3D######

, де ###### - ідентифікатор коментаря, який потрібно видалити. Зверніть увагу: строка закодована (замість "=" стоїть "=3D"), тож, якщо захочете запустити скрипт вручну, без поштового повідомленні, строку слід передавати саме в такому вигляді.

scancomments.pl відкриває головну сторінку журналу, знаходить на ній всі посилання на пости цього ж журналу і сканує всі коментарі з цих постів на предмет спаму. Коментарі парсяться досить примітивним чином, тому в аналізатор також потрапляє супутній html-код. Тому потрібно уважно слідкувати, щоб зразки спам-коментарів із файла patterns.txt не були схожі на html-розмітку. В тому числі вкрай небажано використовувати як маркери спаму числа, а також строки, які використовуються в оформленні журналу (напр., Link, оставить комментарий etc).

PS Для відладки створив жж-аккаунт imaspammer, пароль TWisE3Ey , може, кому знадобиться.

Profile

ichthuss

January 2026

S M T W T F S
    123
45678910
11121314151617
18192021222324
25262728293031

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 30th, 2026 02:46 am
Powered by Dreamwidth Studios