Ну вот решил продолжить разговор по теме спама. Конечно мы все относимся к спаму по разному. Но правда состоит в том, что хороший спамер может поднимать нехилые деньги на рассылках или оптимизации своих сайтов в ПС. Естественно, что оптимизация хороших сайтов и сайтов сделанных для людей – не может быть обеспечена спам комментариями, но вот разного рода низко качественные блоги, сайты с короткосрочной жизнью оптимизировать вполне можно. Поэтому то и ведётся борьба между создателями спама и их уловителями. Так как этот блог основан на всем известном движке Wordpress , то естественно здесь стоит плагин Akismet. Спам он фильтрует успешно. И поэтому я решил разобраться и описать ниже как можно связать питон и естественно спамо уловитель Akismet. Как говориться понимание ключ к успеху в использовании или преодолении.
Вернее сказать всё уже и так связано, но теперь можно продолжить исследование в этом направлении. Кроме того следующий пост может быть полезен спамерам для быстрой оценки их спам комментариев на валидность. Кстати валидные спам комментарии очень полезны и при развитии спам блогов. Как никак иммуляция человеческой активности… И если уж такая служба как Akismet вас не поймала, то у яндекса вполне может сложиться впечатление, что ваш блог кто-то посещает. Ну а если вы боритесь со спамом, то этот модуль может сыграть не маловажную роль в случае фильтрации нежелательных комментариев на других видах CMS, отличных от либо даже на статических сайтах с собственно-ручно написанной гостевой книгой.
Ну естественно, перед тем как удариться во все питоновские страсти, рещил поговорить о истории самого Akismet.
Ну для начала нам понадобиться
- несравненный питон, ну взять его можно здесь http://www.python.org/
- модуль питон библиотеки akismet.py, этот модуль можно скачать с сайта http://www.voidspace.org.uk/python/akismet_python.html
- ну естественно валидный ключ, его вы можете получить по адресу http://akismet.com/personal/
Начну разговор со 2 -го пункта, про установку самого питона можно почитать у множества авторов…
Кстати замечу одну специфическую особенность. Модуль akismet.py следует поместить в папку с файлами самого языка питон. Иначе простой импорт самого модуля непосредственно в другой директории не позволит пользоваться функциями этого модуля.
В том случае если вы не знаете, где находится ваш модуль питона – поможет сам питон.
в случае с ОС Linux
Для это надо буде ввести
import sys print sys.path
Конечно будет выведена куча папок. Но нам нужна лишь первая из них. Например /usr/lib/python2.4.Чтобы разместить там модуль akismet.py необходимо будет переключиться на суперпользователя root, а затем ввести пароль.
В случае ОС Windows надо копировать файл akismet.py в папку C:\Python2.4\Lib\ .Как вы понимаете указывать надо свой путь. Я привёл лишь несколько примеров.
Ну а теперь , чтобы иметь возможность дальнейшего движения вперёд нам нужен валидный ключ. Иначе модуль работать не будет.
Здесь(http://akismet.com/personal/) указываем свою почту жмём кнопку Register
Затем выбираем бесплатную версию ключа. Тестируем всё таки.
Ну естественно указываем здесь ещё свой сайт и всё ключ будет выслан на почту…
Дальше нам должны выслать ключ на почту , указанную в форму. Теперь после получения этого ключа можно переходить к использованию самого модуля akismet.py . Для этого рекомендую посетить ещё раз сайт разработчика. Ну а если в английском вы не сильны, постараюсь ниже отразить важные моменты…
Конечно сразу начну с примера, приведённого на сайте разработчика . Который заставляет нас поверить , что для тестирования ключ не нужен
#example 3 url = 'http://www.voidspace.org.uk/cgi-bin/voidspace/guestbook.py' api_key = '0acdfg1fr' if not os.path.isfile('apikey.txt'): api = Akismet(agent='Example/0.3') api.key = api_key api.blog_url = url
Но у меня пример не заработал. в такой форме . Поэтому рекомендую произвести последовательный ввод комманд. Естественно всё надо делать в коммандной строке самого питона.
импортировали модуль
import akismet
дальше нужно сделать следующее:
>>> api=akismet.Akismet() >>> key="ваш ключ" >>> blog_url="your url" >>> api.setAPIKey(key, blog_url) >>> api.verify_key()
И в результате должны получить True. Иначе пишите в комментах .Это станет подьверждением того, что все выполненные действия верны. Ну по сути теперь остаётся самое интересное – это создать простой спам комментарий и проверить реакцию сайта akismet.com . За проверку комментариев отвечает комманда comment_check Вот небольшой скрипт, который должен проверять является ли выражение Make money fast! спамом или нет. Всё конечно можно будет усложнить конкретно под свою задачу, а этот пример надеюсь позволит понять основные принципы работы данного модуля. Сохраните файл под именем akismetspamtest.py
import akismet defaultkey="6f4abba17d45" pageurl="http://yoururlhere.com" defaultagent="Mozilla/5.0 (Windows; U;Windows NT 5.1;en-US; rv:1.8.0.7" defaultagent+="Gecko/20060909 Firefox/1.5.0.7" os.environ['HTTP_USER_AGENT']=defaultagent os.environ['REMOTE_ADDR']=127.0.0.1 comment="Make money fast!" api=akismet.Akismet() api.setAPIKey(defaultkey,pageurl) if api.comment_check(): print TRUE else print FALSE
Затем запустите интерпретатор питона и импортируйте модуль
>>> import akismetspamtest >>> True
И вышеуказанная строка должна зафиксироваться как спам.
А тепер просто небольшой Manual по встроенным функциям самого модуля akismet.
Эта функция используется для того, чтобы проверить – является ли комментарий помеченный как хэм спамом или нет
submit_spam(comment, data=None, build_data=True)
Эта функция используется для того, чтобы проверить – является ли комментарий помеченный как спам хэмом или нет
submit_ham(self, comment, data=None, build_data=True)
Следующая функция проверяет ключ Akismet API на валидность
verify_key()
Следующая функция устанавливает ключ key для данного url, полученного на сайте http://akismet.com
setAPIKey(key, url)
Следующим образом устанваливаем наш api, для того, чтобы можно было работать с вышеперечисленными функциями.
api = akismet.Akismet(agen="your agent")
your agent – является вашим агентом, по умолчанию этот агент -
Кстати иногда работает без указания принадлежности к конкретному модулю.
api=Akismet()
Ну в целом всё.
lifephysic
23.09.2010 - 17:05
Связался с автором этого модуля по поводу не рабочего примера. Поэтому он порекомендовал добавить следующую строчку.
from akismet import Akismet
api=Akismet()
Теперь примеры с его сайта будут работать
[Translate]