Ботоводське
Dec. 11th, 2008 03:50 amЗ подачі Фріца Моргена, а також для перепочинку від навчання написав бота для видалення жж-спаму. Від початку бот був зроблений скриптом, що прикручувався до поштового клієнта і реагував на повідомлення про нові коментарі. Власне, цей скрипт у мене зараз і працює. Потім я доробив його до повноцінного бота, який сканує журнал і самостійно шукає спам-коментарі. Ось вони обидва:
Поштовий бот: 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 , може, кому знадобиться.