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

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

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

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

<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. 26 сентября 2008 г. в 12:05

    Сайт, указанный при комменте ботом, учитывается поисковыми системами ?

  2. 26 сентября 2008 г. в 17:30

    Артём, учитываются.

  3. aquablog
    29 сентября 2008 г. в 16:03

    Хм… Про всякого рода знаки припинания знал давно… По 100 штук на день грохал…
    Пробелы удивили… Я и представить себе не мог, что так вот можно сделать…
    Думаю, плагин нужен однозначно… Антипробелом обозвать и широко пропиарить…

  4. Блогер
    29 сентября 2008 г. в 22:14

    Не пойми не правильно – но <a href="http://spamer.cn" rel="nofollow"> </a> лучше как-то завуалировать, а то наплодишь спамеров больше чем убьёшь :)

  5. 3 октября 2008 г. в 17:51

    ну ничего себе! Может для кого то и не новость а я вот удивлена. Только вот чего не понимаю- если на комментах ноуфоллоу стоит то смысл то всех этих ссылок???

  6. 3 октября 2008 г. в 18:55

    maviska, смысл в том, что спамеры не проверяют, стоит ли на ссылках noindex или nofollow. К тому же если стоит просто nofollow, то это не мешает поднятию тИЦа.

  7. 7 октября 2008 г. в 17:51

    ух, какие сложности, не проще ли запретить юзать хтмл или в частности “а” тег, вот и всё. И ещё, анкор в виде пробела большого прироста не даст, хоть и увиличит ссылочную массу со вкусных блогов, вобщем много от такого подхода не добьёшься, люди просто экспериментируют, думаю этот спам не долго продлится.

  8. Артемий
    12 октября 2008 г. в 20:02

    Я просто в настройках поставил где есть задержка комментариев что на одну и более ссылок коммент задерживает. Да и вообще все комменты с модерацией.

  9. gooodd
    14 декабря 2008 г. в 09:22

    Спасибо за такой пост, не знал что это возможно, покопал у себя на сайте и нашел такие комменты.

  10. Руслан
    7 января 2009 г. в 15:31

    Я недавно отловил у себя пару комментариев с такой ссылкой:

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

    т.е. даже без пробела. Смысл ставить такие ссылки? Врядли они учитываются поисковиками.

    nofollow – для поисковых роботов означает не индексировать страницу на которую идет линк, но наличие линка всё равно попадет в статистику и соответственно будет отражено в GooglePR и ИЦ Yandex, что собственно и нужно спамерам

  11. 16 января 2009 г. в 21:23

    на этапе вывода комментария надо вставить что то типа

    $comment= preg_replace("/<a [^>]+>[\s\.\,\_]*<\/a>/is", "", $comment);
    

    нерегулярным выражением убиваем любую ссылку с пробелами

  12. Анатолий
    19 февраля 2009 г. в 14:43

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

  13. Edik
    28 июня 2009 г. в 15:21

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

  14. nata
    28 июня 2009 г. в 17:11

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

  15. Smitt
    13 ноября 2009 г. в 16:25

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

  16. 9 декабря 2010 г. в 07:50

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

  17. 13 декабря 2010 г. в 02:48

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

  18. 6 февраля 2011 г. в 20:40

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

    1. 7 февраля 2011 г. в 10:23 / ответ на коммент alpings

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

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

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

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

  19. 9 апреля 2011 г. в 11:12

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

  20. Jiovanni
    17 сентября 2011 г. в 04:04

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

    1. 17 сентября 2011 г. в 10:20 / ответ на коммент Jiovanni

      Нет, rel=”nofollow” – это параметр тега ссылки.

Ваш комментарий

Жирный текст

Ссылка

Цитата

Внутристрочный код

CSS-код

HTML-код

JavaScript-код

PHP-код