Невидимый спам в комментариях — ссылки на пробелах

Когда закрываешь перед спамером дверь, он лезет в форточку. В переводе на язык блога это означает следующее — стоит в комментариях убрать поле для указания сайта, либо каким-то иным образом ограничить доступ к этому полю, как спамеры начинают пихать свои ссылки в текст комментария.

И делают они это вовсе не стандартным способом.

Теперь у спамеров пошла «мода» на то, чтобы ставить свои ссылки в комментариях на пробелы, т.е. вот так:

<a href="http://spamer.cn"> </a>

Браузер представляет такую ссылку невидимой для пользователя (даже при выделении всего текста на странице пробел не выделяется), а в коде она есть, поэтому будет учтена поисковой системой, что и является целью спамера.

По сути, такие ссылки, будучи администратором сайта, выявить очень легко — для этого достаточно получать на свое мыло все письма, сообщающие о новых комментариях. В таких письмах спам-ссылки прекрасно видно, так как представлены они там в виде кода.

Кроме того, если на блоге стоит спам-фильт, типа Akismet, подобные спам-комментарии, по идее, должны сразу переноситься в спам.

Однако, не смотря на 2 вышеупомянутых обстоятельства (либо письма не приходят, либо не используется спам-фильтр) комментарии, содержащие невидимые ссылки, попадаются мне на некоторых блогах.

Пример

Вот так видели (до недавнего времени) комментарий на одном из блогов все пользователи, в том числе и админ блога:

Комментарий с невидимым спамом

А вот так увидел этот коммент я, используя специальный ява-скрипт:

Комментарий с видимым спамом

Каким мне видится решение проблемы

1. Написать плагин для WordPress, который бы фильтровал подобные ссылки (т.е. просто-напросто удалял) из текста комментария в момент публикации.

Минус данного решения я вижу в том, что в таком случае автор блога не узнает, что подобные ссылки публиковались, а, соответственно, не отправит спамера в положенное ему место (что, по идее, нужно делать).

2. Написать скрипт, который бы превращал эти невидимые ссылки в видимые, тем самым давая понять, что это спам-коммент. В данный момент у меня есть такой скрипт в двух вариантах исполнения: стандартным ява-скрипт-кодом (большое спасибо за него моему хорошему знакомому программеру) и скрипт, который я сделал сам на jQuery.

Их недостаток в том, что сложно четко ограничить их действие на определенный участок страницы, а на странице могут быть и вовсе не спам-ссылки на пробелах, которые связаны с особенностями дизайна сайта.

3. Написать плагин для WordPress (на PHP), который бы не вырезал эти ссылки, а просто выделял их, и в админ-интерфейсе, и прямо на сайте. Это, пожалуй, был бы самый лучший вариант, т.к. фильтроваться будет только текст комментариев.

Вот такие дела.

Ну что, есть желающие написать такой плагин? =)
У кого какие есть мысли по поводу темы статьи?

Обновление от 19.02.09

Вот готовая функция, которая выполняет то, что описано в 3-м пункте (см. выше). В файл functions.php своей темы добавьте следующий код:

function show_me_the_spam_links($comment) {
	return preg_replace(
		'#<a.+href=["\']?(https?:\/\/[^\s"\'\>]+)[\'"\s].+>[\s\.\,\_]*<\/a>#msiU',
		'<a href="http://anonym.to/?$1" title="Похоже на спам-ссылку" style="border: 1px dotted #F00 !important; background: #FF6 !important; padding: 2px 4px !important; color: #03F !important">$1</a>',
		$comment);
}
add_filter('comment_text', 'show_me_the_spam_links', 10000);

Все ссылки на пробелах, точках, запятых и нижнем подчеркивании становятся видимыми и выделяются особым цветом.

Комментарии (72)
  1. 1
    Анатолий

    Написать не напишу, но такой плагин хотелось бы заиметь :)

  2. 2
    Edik
    @

    а для DLE есть чтото подобное? а то задолбали уже

  3. 3
    nata

    Как по мне, то капчу в любом случае ставить нужно … Ну, а вобще, порой такие комменты оставляют что сложно отличить от спама …

  4. 4
    Smitt
    @

    Спасибо.
    А для Joomla 1.5 есть подобное решение?

  5. 5
    @

    Не хочу показаться некропостером, просто только что прочел эту статью. Есть еще вариант для подобных ссылок — при попытке оставить комментарий CMS сайта должна его проверить и при обнаружении ссылок выдать что-то вроде «недопустимые символы в теквсте» и не дать его опубликовать

  6. 6

    спасибо большое)пригодится.но я пока справляюсь со спамом вручную

  7. 7
    @

    Волнуют два вопроса. Показывает ли исходный текст страницы скрытые ссылки комментария и как можно заключить все комментарии тегом noindex?

    • 8

      Показывает ли исходный текст страницы скрытые ссылки комментария

      Конечно показывается.

      как можно заключить все комментарии тегом noindex?

      Поставить какой-нибудь плагин, который вставляет его автоматически, либо вручную вставить в шаблон.

  8. 9
    @

    Либо я чего то не понимаю, либо люди привыкли работать в редакторе! Если работать в тегах, а научиться набирать текст, даже для собственных постов, переключая регистры и сразу расставляя теги в ручную, чего может быть проще!
    Правда надо отметить, что спамеры ходят косяками! У меня был период, когда повалил ручной спам! Но потом всё стихло! Akismet активировал совсем недавно, не видел перехода на бесплатное использование, бывает, теперь сразу поставил на новый проект.
    Активировал и еще один какой то плагин, который создает пустое поле и при автоматических заполнениях, сразу отправляет на страницу с сообщением о том что Вы спамер! Antispam Bee называется, правда при таком плагине не работает easyComment, но это не важно! Еще где то добавить можно список слов, по которым сразу в СПАМ!
    Но больше всего достало неграмотное оформление комментариев, сам правлю если нахожу интересным! Иногда, глумлюсь в ответах, отправляя в школу!

  9. 10
    Jiovanni

    Подскажите пожалуйста, тэг тоже самое что rel=»nofollow» ?