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

25 августа 2008 г.

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

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

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

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

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

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

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

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

Пример

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

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

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

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

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

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

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

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

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

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

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

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

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

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

1
2
3
4
5
6
7
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);

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

Комментарии (76): »

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

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

  3. 63
    Руслан
    Руслан

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

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

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

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

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

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

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

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

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

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

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

    @
  9. Что мешает пользователю спрятать ссылку за цифрой или буквой ??? отловит такой спам этот плагин???

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

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

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

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

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

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

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

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

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

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

  • Похожие статьи
  • Предыдущие из рубрики