Всем привет! SEO-Mayak.com продолжает свое вещание на бескрайние просторы мирового интернета и как всегда на повестке дня самые важные темы.
Антиспам или защита от спама в комментариях волнует чуть ли не каждого веб-мастера.
Какой вред может нанести спам сайту или блогу, если от него не защищаться?
Самая большая угроза — это бан поисковиков. Спам-боты очень часто распространяют ссылки на взрослые ресурсы, что для любого проекты смерти подобно.
Также через спам, к вам на сайт могут занести вредоносные коды и даже вирусы.
Ну и конечно посетители вашего ресурса будут менее охотно оставлять свои комментарии, заметив много спама.
Многие идут по легкому пути, используя плагины, блага плагинов, противостоящим спаму, существует масса.
По традиции назову лишь некоторые из них. К самым простым, для пользователей конечно, можно отнести такие плагины, как DCaptcha или как его еще называют — «Я не бот» и математический плагин Math Comment Spam Protection, который задает пользователю несложную математическую задачку.
Ребята, не стоит заставлять посетителей Вашего сайта заморачиваться какими-то капчами, даже если они самые простые, ведь это все равно преграда. Я уже не говорю про нагрузку на сервер, которую создают плагины.
В этой связи, стоит упомянут об еще одном популярном плагине Akismet. Плагин, при всех его достоинствах, а достоинства эти выражаются как раз в отсутствии капчи, имеет некоторые недостатки.
Самый большой недостаток — это отправления в спам реальных комментариев, ну и конечно тягомотина с регистрацией на официальном сайте и получением ключа, все это играет против его применения. Лично я быстро от него отказался, как только обнаружил в спаме комменты своих читателей.
Ну да ладно, достаточно лирики. Сегодня, для своих читателей я покажу способ зашиты от спама без использования каких-либо плагинов и защита эта, поверьте, довольно-таки надежная.
Защита будет заключается в подмене полей ввода комментариев, т.е спам-бот немного заблудится и не сможет напакостить, в общем возьмем «врага» хитростью. Поехали!
Защита от спама с помощью подмены полей ввода комментариев
Заходит спам-бот на сайт и начинает искать поле для заполнения. В шаблонах WordPress поле для ввода комментариев имеет название или имя — comment.
Алгоритмы спам-ботов настроены именно на поиск полей с определенными названиями. Так что нам надо сделать? Нам надо создать новое поле для заполнения с другим, уникальным именем, тем самым мы заставим робота-спамера сильно призадуматься.
В WordPress комментарии, в зависимости от шаблона, выводятся двумя функциями: comments_template(); и comments_form();. Определить это просто. Откройте в Notepad++ файл в шаблона single.php и воспользуйтесь функцией поиска редактора. Введите в поле поиска название функции и если редактор ее найдет, то значит именно эту функцию, для вывода комментариев, используется в Вашем шаблоне.
Дело в том, что для вывода комментариев, в шаблонах WordPress, функция comment_form(); используется довольно редко и я ее рассматривать в статье не стану, но если вдруг у моих подписчиков возникнет потребность поработать именно с этой функцией, то прошу воспользоваться формой обратной связи и мы что-нибудь придумаем.
И так, мы выяснили, что в нашем шаблоне применяется функция comment_template();. Теперь нам понадобится открыть для редактирования два файла шаблона: functions.php и comments.php.
В файле functions.php, в самое начало, после знака «<?php» вставляем следующий код:
add_filter('wp_get_current_commenter', 'replacing_the_field_of_comments'); function replacing_the_field_of_comments($commentdata) { $spam_test_field = trim($_POST['comment']); if(!empty($spam_test_field)) wp_die('Спам не пройдет!'); $comment_content = trim($_POST['antispam_comment']); $_POST['comment'] = $comment_content; $comment_author = trim($_POST['rokki']); $_POST['author'] = $comment_author; $comment_author_email = trim($_POST['balboo']); $_POST['email'] = $comment_author_email; $comment_author_url = trim($_POST['stalone']); $_POST['url'] = $comment_author_url; return $commentdata; }
Далее в файле comments.php ищем что-то похожее на такую строчку:
<textarea id="comment" tabindex="4" cols="100%" name="comment" rows="10"></textarea>
Это и есть форма ввода, которую нам надо подменить. Для этого вместо вышеупомянутой строчки вставляем две новых:
<textarea id="comment" style="display: none;" name="comment"></textarea> <textarea class="textarea" id="comment" tabindex="4" cols="100%" name="antispam_comment" rows="10"></textarea>
Теперь давайте я поясню, что мы тут на изменяли. Ну во-первых стандартное имя comment мы поменяли на antispam_comment, во-вторых исходное поле мы скрыли с помощью стилей:
style="display: none;"
Если убрать стили, то для комментирования в статье будет два поля.
Чтобы спам-бот смог добраться до новой формы, он должен сначала преодолеть фильтр, который мы установили в файле functions.php. Надеюсь, я пояснил понятно.
Внимание! Для тех, кто устанавливал смайлики в комментариях по моей статье, надо внести изменения в код, который мы добавляли в файл comments.php, строчку:
document.getElementById( 'comment' ).value=document.getElementById( 'comment' ).value+' '+$smile+' ';
Надо заменить на такую:
document.getElementById( 'antispam_comment' ).value=document.getElementById( 'antispam_comment' ).value+' '+$smile+' ';
Если этого не сделать, то после установки защиты от спама, смайлики в комментариях отображаться не будут.
Защита, которую мы только что реализовали, я испытал на своих блогах и она уже показала свою высокую надежность, но чтобы окончательно заморочить спам-робота, давайте выстроим для него еще один «муляж».
Защита от спама с помощью подмены стандартных названий в полях: имя пользователя, e-mail и адрес сайта
Понятно, чтобы оставить комментарий спам-робот должен заполнить поля: имя комментатора, e-mail комментатора и однозначно спам-бот заполняет поле — сайт комментатора, хотя его заполнять и не обязательно.
Что мы сделаем, мы заменим имена этих полей на другие, уникальные слова, которые я уже прописал в вышеупомянутой функции.
Для этого, в том же файле comments.php, ищем что-то похожее на такой участок кода:
<input id="author" tabindex="1" type="text" name="author" size="22" value="<?php echo $comment_author; ?>" /> /> <label for="author"><small>Имя <!--?php if ($req) echo "(обязательно)"; ?--></small></label> <input id="email" tabindex="2" type="text" name="email" size="22" value="<?php echo $comment_author_email; ?>" /> /> <label for="email"><small>Почта (не будет опубликовано) <!--?php if ($req) echo "(обязательно)"; ?--></small></label> <input id="url" tabindex="3" type="text" name="url" size="22" value="<?php echo $comment_author_url; ?>" /> <label for="url"><small>Адрес блога</small></label>
Здесь нам надо заменить имена (name):
name="author" name="email" name="url"
Меняем исходные имена на прописанные в функции. После изменения у нас должно получится следующее:
<input id="author" tabindex="1" type="text" name="rokki" size="22" value="<?php echo $comment_author; ?>" /> /> <label for="author"><small>Имя <!--?php if ($req) echo "(обязательно)"; ?--></small></label> <input id="email" tabindex="2" type="text" name="balboo" size="22" value="<?php echo $comment_author_email; ?>" /> /> <label for="email"><small>Почта (не будет опубликовано) <!--?php if ($req) echo "(обязательно)"; ?--></small></label> <input id="url" tabindex="3" type="text" name="stalone" size="22" value="<?php echo $comment_author_url; ?>" /> <label for="url"><small>Адрес блога</small></label>
Вот и все действия, которые нам было необходимо произвести. Как видите ничего сложного. Реализуйте такую защиту у себя на блоге и отпишитесь в комментариях. Буду Вам очень благодарен.
Понравилась статья — подпишись на обновления блога!
P.S. Некоторые «высокоинтеллектуальные» спам-боты все же могут обойти выстроенную нами защиту от спама в комментариях, но это уже будут редкие исключения.
На сегодня у меня все. Как Вам статья?
С уважением, Виталий Кириллов
Осень интересный подход!) Вы молодец. Пока не пробовала, но, думаю, что-то в этом однозначно есть.
А Акисмет я тоже буквально на следующий день удалила, вообще плагин плохой. Кстати, еще недавно столкнулась с проблемой — приходили большими пачками комментарии на английском от якобы владельцев аккаунтов на Фейсбуке. Я поначалу обрадовалась, а потом поняла, что и тут спам(… Установила специальный плагин, блокирующий написание комментариев на английском. Пока тихо), даже привычного спама стала меньше в десятки раз.
Большое спасибо за статью и изобретательность!
Sasha, обязательно попробуйте установить такую защиту, это можно считать моей просьбой к Вам. Очень бы хотелось услышать мнения своих постоянных читателей. Спасибо за столь лестные слова в мой адрес, я старался и поверьте, потратил на изобретение такой защиты от спама довольно много времени.
Саша, скажите пожалуйста, а что за специальный плагин, блокирующий написание комментариев на английском? Мне оно надо!))) Заранее спасибо!
Я слышал о таком, но названия не знаю. Яндекс в помощь.
Я как раз поэтому и сказала, что вы молодец. Представляю, как долго нужно химичить, чтобы создать таких «помощников».
У меня стоит плагин Antispam Bee, минус один, часто в папку попадают нормальные комменты, приходиться их все просматривать вручную.
Все равно чем меньше плагинов на блоге, тем лучше!
хотя там есть одна классная функция, если комментарий от пользователя был одобрен, последующие его комментарии могут сразу попадать на страничку, без дополнительного одобрения
Одним словом, все, что мы делаем плагинами, можно сделать кодами. Просто для этого нужно больше понимать и больше сделать на своем блоге.
Все правильно Анна!
Да, наверное, без кучи плагинов нагрузка на сайт будет меньше. Но все-таки плагин — это удобно. А вот в кодах надо ведь разбираться.
Здравствуйте Алла, рад снова Вас видеть на блоге! Рано или поздно, придется избавляться от плагинов в пользу кодов. А разбираться в языках программирования совсем необязательно, достаточно просто следовать инструкциям.
да очень важно знать спам или нет, а то часто голову ломаю
Приветствую Лана, давно Вас не было на блоге. Данная функция избавит Вас от лишней головной боли.
Доброго времени суток.
Весьма неплохой способ заставить спам-бота призадуматься. Будем пробовать, спасибо.
Марат, рад видеть Вас на блоге! Попробуйте, очень интересно мнение читателей.
Не знала, что ты великий изобретатель Виталий 😉
Интересно что скажут пользователи последнего пункта такой заЩиты когда обновят свой вордпресс…
А акисмет плохой плагин, когда он стоял было много спама.
Наталья, после обновления вордпресс, все останется по прежнему, так как никаких изменения в файлы движка я не вносил, а реализовал все в functions.php, который, как известно, находится в теме блога и аналогов, этой функции, в интернете нет, пока нет!
Совсем не понятно «Ну и конечно посетители вашего ресурса будут менее охотно оставлять свои комментарии, заметив много спама.» — мой опыт показывает, что многие блогеры совсем не понимают ЧТО такое спам и одобряют все левые комменты из англоязычных ресурсов. Они действительно думают, что их молодой сайт уже приняли на Западе и как дети радуются каждому такому комменту. А мне например по барабану кто и что пишет (это про то что якобы менее ОХОТНО комменты оставлять будут — ну что за мысли???), если мне интересен автор и статья я обязательно поддержу автора комментом и не одним! Несмотря на то, что у любого блогера могут быть спам комменты (это комменты ни о чем — типа Спасибо, автор крутой, статья класс и тому подобные), причем когда по написанному понимаешь что оставивший комментарий даже не читал твою статью) нормального человека все это отпугивать не будет. Факт, что комментарии оставляют только те, кому есть что сказать или он сам блогер и привлекает к себе внимание. Чувствую что скоро в меня шапка от автора полетит.. ну да мои комментарии спамом назвать нельзя ни разу 😉 они по существу темы и не бредовые!
Наталья, шапками я кидаться не стану, так как считаю, что каждый вправе высказать свое мнение! Судя по предыдущему твоему комментарию, ты тоже не очень внимательно статьи читаешь!
Вот сейчас есть время код разобрать..
Если надо было найти одно из 2-х: comment_template() и comment_form(), то у меня в single.php ни того, ни другого не находит. Двигаться дальше опасно. Жду ответа автора кода!
Наталья, поищи тоже самое в файле comments.php
Наталья, не знаю как ты искала, ну у тебя в файле single.php черным по белому написано, что шаблон использует функцию comments_template();
Всем привет!
Ох… как я устал от спама:) Перепробовал кучу всяких плагинов,но так и не нашёл идеального.
Во всех случаях спам остаётся на сайте либо в корзине,либо в непроверенных:(
Пытался банить спамеров по IP через .htaccess,результат неудовлетворительный. Забанил ~150 IP,а толку нет….. 300 — 400 коментов спама ежесуточно.
Сейчас буду пробовать, надеюсь это будет эффективно.
Спасибо за подсказки 🙂
Попробуйте, надеюсь данный метод Вам подойдет.
Спасибо!!! Всё зделал 🙂 Уже пару часов часов без спама,УРА!
Была одна загвоздка,после проделанных манипуляций перестал работать аjax в коментариях,но мы не привыкли отступать и побелили!
Ещё раз благодарю(!) за полезную информацию.
От меня хорошо отстал спам. Надоело, видимо.
Ольга, это потому, что у Вас еще не так много посетителей.
Меня спам сильно не достает, Akismet плохо ли -хорошо , но работает. Единственно, у меня много разных плагинов на сайте. Какими- то придется пожертвовать.
Пока думаю -какими 🙂
А вашу статья беру на заметку! Что- то мне подсказывает, что я к ней еще вернусь. Влезать в коды и что-то менять всегда боюсь, но надо когда- нибудь научиться 🙂
Интересный способ избавляться от спама, но для меня пока ещё тяжеловат он. Пользуюсь Акисметом, и пока всё хорошо.
Акисмет удалила сразу, потому что даже моя дочка которая с компьютером на ты несмогла разобраться, как его ставить. Поставила Антиспам Вее и тут началось — как я потом выяснила на разных форумах плагин конфликтовал с разными скриптами началась сильная перегрузка на сайте и посещалка с Гугла упала до нуля, хотя на другом сайте он у меня стоит и все нормально.Нашла на Ютубе информацию о блокировании по ip адресам, пока спама не так много, как у предидущего коментатора, еще можно жить, но чувствую, что придет время и буду разбираться с вашими кодами.
Анна, время разбираться обязательно придет.
Виталий, загрузила файл single.php в нотпад++
выдает следующее
Search «comment_template()comment_form()» (0 hits in 0 files)
Search «comment_template()» (0 hits in 0 files)
Это что значит?
но «comment_template()- там есть. если визуально смотреть.
Что вы посоветуете, продолжать дальше вставлять?
Анна, если вы визуально видите comment_template(), то значит все норм. можете продолжать.
Спасибо Виталий, вроде бы все сделала, только слова не меняла на Roki и т.д., у меня немножко по другому последовательность идет, побаиваюсь. Теперь значит спам коментарии не должны приходить или они сразу будут уходить в папку спам?
Анна, у меня примерно раз в месяц проскочит спам, а так все тихо. В папку спам сам отправляю.
Спасибо за полезную информацию, а то спамеры задолбали.
Анна, все же попробуйте заменить имена полей, а то эффект может быть хуже ожидаемого. В любом случаи позже поделитесь информацией, как обстоят дела со спамом.
За весь день ни одного коментария — не только спама, но и остальных. Вышла из системы, попыталась сама оставить комент, но выдает «Ошибка Вордпресс — заполните поля имя и эмейл»
Анна, я же в функции поменял имена:
[php] $comment_author = trim($_POST[‘rokki’]);
$_POST[‘author’] = $comment_author;
$comment_author_email = trim($_POST[‘balboo’]);
$_POST[’email’] = $comment_author_email;
$comment_author_url = trim($_POST[‘stalone’]);
$_POST[‘url’] = $comment_author_url;[/php]
Поэтому комменты у Вас и не работают.
Виталий, посмотрите пожалуйста, вот у меня такой код, я изменила name=»author» и так далее это правильно? Этот код из редактора, который ниже…
<input type="text" name="author" id="author" value="» size=»22″ tabindex=»1″ />
<input type="text" name="email" id="email" value="» size=»22″ tabindex=»2″ />
<input type="text" name="url" id="url" value="» size=»22″ tabindex=»3″ />
Меняете значения:
name=»author»
name=»email»
name=»url»
т.е. надо изменить слова:
author
email
url
Делайте все как в статье и все получиться!
Вроде бы все нормально, вышла из системы, сама попробовала оставить комент — все получилось, буду тестировать дальше, затем отпишусь.
Успехов Анна!
Виталий, это опять я,все изменила, как вы сказали, попробовала сама оставить коментарий выйдя из системы — получилось, но вот уже сутки без любых коментариев, это меня насторожило, а сегодня пришло письмо на почту от постоянного коментатора, что коментарий он оставляет, а выдает «Спам не пройдет» — коментария его я не вижу.
Вто код, который у меня получился в файле comments.php
<input type="text" name="rokki" id="author" value="» size=»22″ tabindex=»1″ />
<input type="text" name="balboo" id="email" value="» size=»22″ tabindex=»2″ />
<input type="text" name="stalone" id="url" value="» size=»22″ tabindex=»3″ />
или еще где-то нужно заменить, извините за тупость
Анна все у Вас правильно и комменты работают, я только что проверил.
В функции тоже изначально вставила скопированный у вас код.
Сама когда оставляю комент — он приходит на проверку, а остальные видимо куда-то деваются.Что делать?
Посмотрите мой комментарий, я совсем недавно его оставил.
Виталий, большое спасибо, все работает, я очень рада, спам коменты вообще отсутствуют, а в последние дни их было больше 500.Все хорошо уже, Гугл и Твит.
Спасибо Анна!
Добрый день. У меня ваш код заработал, но как то немного криво, в место к примеру поля «имя» ромбики с вопросами, как это исправить подскажите?
Здравствуйте Костя!
Кракозябры появляются из-за неправильной кодировки файла. Установите кодировку UTF8.
у меня комментарии вводятся через comment_form
где можно взять скрипт для моего случая?
спасибо!
Polina, надо бы взглянуть на файлы вашего шаблона.
Подскажите, пожалуйста! Я открыла файл single.php, но ни comment_template(), ни comment_form() в нем нет…Как быть?
Ольга, воспользуйтесь преобразователем и вставьте в комментарий код из вашего файла single.php, я посмотрю.
if (have_posts()) : while (have_posts()) : the_post();
/**
* Find the post formatting for the single post (full post view) in the post-single.php file
*/
get_template_part('post', 'single');
endwhile;
else :
get_template_part('post', 'noresults');
endif;
Обратите внимание на это участок кода:
У меня есть статья о функции get_template_part(), почитайте!
Виталий, снова вернулась к этой теме, так как прошлый раз некогда было разбираться в кодах, непросто для меня это. А сейчас спам прямо достал, приходит за сутки по 200-300 штук, среди них попадаются нормальные комментарии, сижу, просматриваю весь спам, чтобы выудить реальные комментарии. Надоело!
Почитала я статью, на которую вы давали ссылку о get_template_part. Но так и не поняла, что с этим делать, какие мои дальнейшие действия, открывать для редактирования два файла шаблона: functions.php и comments.php и делать все, как вы описали в этой статье или искать какую-то папку ‘post’ или ‘single’?
Ольга, какие файлы есть в вашей теме?
Добрый день! Подскажите, как подобным подходом организовать антиспам в записях? Записи открыты для всех. То есть любой желающий может написать без регистрации. организовано это при помощи плагина User submitted Posts. Если не поможете кодом. Направьте на нужную литературу. очень нужно. Спасибо!
Всегда пишет спам не пройдёт )) в чём причина?
Ищите ошибку.
Здравствуйте, Виталий!
Спасибо за интересную статью! Все сделал по статье, но пссле попытки оставить коммент, мне отвечают «Спам не пройдет». В чем может быть причина?
И еще. Выше в комментариях одна девушка не нашла ни comment_template() ни comment_form(). Оказывается нужно искать comments_template()
Виктор, просто где-то ошибка, ищите. За неточность в comments_template() спасибо, уже исправил.
Подскажите а на таких блогах нужно защищатся от спамма
extrimforex.blogspot.com
Если спам беспокоит, то будет не лишнем.
Виталий, добрый день! Может Вы знаете, что это за спам-комментарии на английском языке — без ссылок, адреса сайта нет, в имени нет никакого названия, в общем ничего, что бы указывало на спам? Однажды они посыпались тоннами на мой сайт. Пришлось в срочном порядке в настройках комментариев в черный список заносить комментарии, которые содержат самые распространенные англ.слова (первое, что пришло в голову, чтобы остановить этот поток). Но проблема в том, что если в email встретится это слово, то и обычный комментарий будет занесен в черный список.
Есть плагин, который не пропускает англоязычные комментарии, но, естественно, хочется обойтись без него. Может, вы знаете более простое решение, или достаточно применить ваш метод подмены названия полей? И еще буду благодарна, если разъясните, что это за странный спам такой)
Здравствуйте Наталья! Очень рад снова видеть Вас!
Попробуйте мой способ, я думаю должен помочь, так как у меня «подозрительно» тихо со спамом). Сам-боты становятся все умнее и точно не могу сказать какой из них умнее или сообразительней). У меня довольно неплохая посещалка, но не на английском языке, не на русском, спам не проходит. Интересно как будет у Вас…
Спасибо, Виталий! Попробую Ваш метод, и отпишусь о результатах.
Я так поняла, что в поле «Имя» таких спам-комментариев стоят никнеймы из различных соц.сетей (фейсбук, твиттер и linkedin). Не совсем понятно, зачем рассылать такой спам, имена-то могут повторяться, тем более встречаются распространенные. Какой вообще в этом смысл?
Кстати, Ваше письмо об ответе на комментарий попало почему-то в спам, раньше такого не было.
Наталья, про смысл не могу ничего сказать, так как сам теряюсь в догадках. А что письмо попала в спам, так такое часто случается с автоматическими ответами.
Виталий, все сделала, как описано в статье. Так что подожду результатов. Единственное, в этой строке:
<textarea class="textarea" id="antispam_comment" tabindex="4" cols="100%" name="antispam_comment" rows="10"></textarea>
я оставила «id=comment», а не «id=antispam_comment», потому что текстовое поле превратилось в маленький квадрат. Это, наверное, опечатка или все-таки принципиально важно?
Спасибо Наталья, опечатку уже исправил! Я рад, что мой метод борьбы со спамом в комментариях Вам подошел.
Здравствуйте, меня интересует вопрос, а за то, что мы скроем одну форму комментариев функцией display: none, могут ли за это последовать санкции от поисковых систем?
Дело в том, что я активно пользовался данным методом избавления от спама на своем блоге долгое время. Да, эффект 100%. За два года — ни одного спамного комментария. Недавно мне пришло письмо от поисковика, что мой сайт не оптимизирован для отображения на мобильных устройствах и соответственно будет понижен в выдаче в поиске с мобильных устройств. Вариантов решения было два — установить дополнительный плагин на сайт, который преобразует сайт под мобильную версию либо поменять шаблон сайта на адаптивный (резиновый), который нормально отображается на любом экране. Плагины я не люблю использовать и использую лишь в крайнем случае, если при помощи редактирования скрипта достичь цели нельзя. Поэтому я выбрал второй вариант — и установил новую адаптивную тему для своего блога. Соответственно все изменения, которые я вносил в предыдущую тему были утеряны. В том числе и способ избавления от спама, описанный выше в статье. Это я ощутил буквально на следующий же день. Ежедневно мне стал приходить спам с внешними ссылками. Конечно, он не отображается на сайте, пока я не промодерирую комментарий, но по 10-15 спамных комментариев ежедневно — мне стало надоедать модерировать их. Я решил снова воспользоваться этим методом избавления от спама. Но тут случилась другая беда — я случайно узнаю, что мой блог долгое время находится под санкциями яндекса, известного как АГС. Скажу сразу — блог мой качественный, сделан для людей, внешних ссылок нет, ссылки не продаю, тексты пишу сам, все- уникальные. Соответственно я решил разобраться с причиной наложения санкций на мой блог яндексом. Платону я написать не могу, так как он в последнее время убрал форму ввода вопросов своей службе поддержке. Хорошо, я решил порыться в интернете, что пишут люди о санкциях и фильтах яндекса. Среди причин под которыми могут быть наложены санкции я вычитал как совершенно фантастические и по моему ошибочные, такие как — отсутствие в статьях картинок (сайт без картинок — говносайт), до этого самого display: none. Причем о функции display: none указано прямым текстом в справочной службе яндекса — использование скрытых элементов и текста на сайте при помощи функции стилей display: none — прямой путь к санкциям со стороны поисковиков. Соответственно я задумался над вопросом, если мой сайт довольно качественный, не могло ли стать причиной наложения на него санкции данный метод избавления от спама? Что вы думаете по этому поводу?
Здравствуйте Павел!
Первое, Платон не убрал форму ввода вопросов, а замаскировал ее. Видимо для уменьшения их количества. Надо пройти ряд наводящих вопросов, каких точно не помню, но в интернете есть информация.
Второе, моя защита от спама ни в коем случаи не могла стать причиной АГС. Вам надо самым тщательным образом проанализировать свой проект на внутренние и внешние дубли, т.к. АГС зачастую накладывается именно за такие ошибки. Мой блог был под АГС и выйти из под него можно.
Третье, Павел Вам надо настроить индексацию сайта по моей статье, а также сделать качественную карту сайта для поисковиков.
А то, что Гугл разослал всем предупреждение, про мобильные версии, то да, все напугались, но не надо было делать таких резких движений. Поисковые системы не любят генеральные реконструкции, такие как смена шаблона и если такие проводить, то делать это надо крайне аккуратно, с максимальной предварительной подготовкой.
В общем Павел АГС это не приговор, не отчаивайтесь и боритесь. Успехов!
Опять же вставлю свои 5 копеек по решению проблем, которые возникли при внедрении технологии Виталия в мою тему WordPress. Авось кому пригодится.
Если после сделанного у Вас не отправляются комментарии (выводится ошибка) или если в файле comments.php нет нужных строк " <input id="author" tabindex="1" " и тд., сделайте следующее.
1.) Если сайт уже на хостинге, разархивируйте последнюю резервную копию файлов сайта себе на компьютер. Если сайт ещё на Денвере — ничего делать не надо.
2.) Откройте Notepad++
3.) Выберете в нём: Поиск/Найти в файлах.
В поле "найти:" вбивайте: id="author"
В поле "папка" вбейте путь к папке с файлами Вашего сайта (…/www на Денвере)
4.)Нажмите поиск. Через минуту Notepad выдаст Вам все файлы, где встречается эта запись.
5.) проанализируйте их и внесите нужные изменения: name="author" -> name="rokki" и так далее.
Должно заработать.
У меня id="author" скрывался не только в шаблоне комментариев wp-includes/comment-template.php , но и в файле function.php.
После того как я в дополнении к comment-template.php (или comments.php в зависимости от темы WP) внёс изменения в function.php, всё отлично заработало!
Я поменяла тему сайта и теперь новая проблема — нет комментариев!
Раньше комментарии были. Спамщики попадали в Спам.
Я зашла на свой сайт инкогнито, написала комент и вот что пишется
«Не спамьте, пожалуйста. Этот сайт защищен.
Включите JavaScript в Вашем обозревателе и попробуйте еще раз…»
Понятно, что никто не хочет пробовать еще раз
Что делать, что менять?
Может этот плагин и есть причина отсутствия коментов?
Я оставил комментарий на вашем сайта, все работает, комментарий отправился на модерацию.
Здравствуйте, скажите а что мешает запрос отправить через правильный texarea? нужно просто пропарсить код выдернуть скрытый textarea и получит его имя или textarea найти по форме, ведь у вас на сайте одна форма где есть крытый textarea или я чего то не понял?
Я так понимаю это защита от спама, рассылаемая ботами.Ботам выдернуть из кода страницы реальный textarea не под силу (так как вы можете этому полю присвоить свое название, имя). Допустим вы присвоите этому полю имя Htghrkur, то бот по этому названию никак не определит, что это поле — название реального textarea. Такое проделать может только человек, проанализировав код. Ну а смысл живому человеку проделывать эту операцию, когда отправить комментарий можно воспользовавшись обычной формой комментариев, не парся при этом никакой код
Что-то поломалось после последнего обновления вордпресса, пишет ОШИБКА: пожалуйста, заполните необходимые поля (имя, e-mail). А если писать под залогинившимся пользователем, то пишет, ОШИБКА: пожалуйста, введите комментарий.
Перезалил по новой, все равно не работает(((
Виталий, здравствуйте! Вы написали, что «Функция актуальна до версии WordPress 4.4.» А что же делать после обновления?)
Здравствуйте Наталья! Там, запрос методом post, который передается из формы комментариев, как-то хитро обрабатывается в новой функции, что нет возможности этот запрос перехватить и изменить. По крайней мере у меня не получается. Может у Вас получится)
Виталий, я посмотрела Ваш код, если я не ошибаюсь, Вы все вернули на круги своя?
У меня тоже была эта мысль, даже хотела проверить, может, обновленный вордпресс усилил как-то защиту от спама, и уже не стоит идти на хитрости) Вам спам не досаждает?
В общем, я хук wp_get_current_commenter заменила на init. Не знаю, насколько это корректно, но работает)) Буду проверять еще.
Ух, предложенный мной способ совсем некорректный)) Поломал тему. Пока сделала откат, но буду продолжать искать решение.
Виталий, но все-таки, как у Вас со спамом? Может, и не стоит голову ломать?
Виталий, поделюсь с Вами своими мыслями. У меня не хватает сообразительности их развить) В общем, Вы наверное знаете, что вся проблема заключалась в файле wp-comments-post.php. В версии 4.4 этот файл полностью заменили. (Кстати, я пока временно решила проблему, перезаписав этот файл из версии 4.3. Все работает на ура)
Так вот в новом файле была заменена функция wp_new_comment на wp_handle_comment_submission. Дело именно в этой функции. Ну, Вы наверное и это знаете) Теперь с помощью хуков на $_POST мы никак не сможем повлиять. Короче, что дальше делать, я не знаю. Можно, конечно, просто заменить функцию в новом файле, а еще проще поменять названия полей в файле wp-includes/comments.php. Или, как я сделала, заменить старый файл на новый (в принципе функционал там не поменялся). Но все это не есть хорошо. Наверное, нужно искать новый способ защиты)
Здравствуйте Наталья!
Я провел не мало экспериментов, пытаясь реанимировать защиту после обновления движка. Все тщетно. Менять что-то в файлах движка считаю неразумным.
Пока временно я пользуюсь плагином Kama SpamBlock, проанализируйте его и поделитесь пожалуйста своими мыслями, касательно функционала данного плагина.
Виталий, к плагинам отношусь так же, как и Вы) Ставлю их только при крайней необходимости, если других способов нет или слишком сложные. А тут, мне кажется, есть где развернуться, реализаций масса))
В общем, я решила поступить так: отключаю стандартные комментарии вордпресс (что избавляет от спама), делаю отправку с помощью Ajax. И вроде как двух зайцев убила)) Давно хотела сделать форму комментирования на Ajax, но казалось слишком сложно. Теперь более-менее разобралась, и все работает. Остались некоторые вопросы, но не принципиальные. Может, Вы когда-нибудь об этом статью напишете, тогда буду более подробно вникать)
Здравствуйте, Виталий!
В предыдущем сообщении не воспользовался преобразователем, поэтому повторяю.
У меня в коде страниц с комментариями есть код: <textarea id="comment" name="comment" cols="45" rows="8" maxlength="65525" aria-required="true" required="required">,
но вот файл comments.php строчки с textarea не содержит.
Получается, что этот код сидит где-то в файле ядра? Тогда, видимо, редактировать его смысла нет, поскольку он перезапишется при первом же обновлении?
Буду признателен Вам за ответ.
Виталий, я тут поползал по сайтам и узнал, что форма комментирования может выводиться двумя способами.
Один Вы указали: через файл comments.php.
Второй вариант — через функцию comment_form().
Вот у меня именно второй вариант. Можете ли Вы подсказать, как мне реализовать защиту от спама в этом случае?
Сергей, данная защита работает только на версиях WordPress ниже 4.4.
Виталий, добрый день! Благодарю Вас за ответ.
Жаль, очень хорошее решение, тем более без плагина.
Спасибо за ценную информацию!
Здравствуйте Виталий, случайно попала на Ваш блог, искала решение своей проблемы, нашла много интересных и нужных статей по замене плагинов. Решила начать с замены антиспам вее, но к сожалению ничего не получится, у в моём шаблоне «comment_form».
Галина здравствуйте! Какая версия WordPress у Вас установлена?
Дело в том, что этот способ защиты от спама работает только до версии 4.4.
Здравствуйте Виталий, у меня сейчас вордпресс 4.6, но ведь можно назад откатить до нужной версии? Вот только тему менять не хочется, из-за файла «comment_form», а остальные скрипты тоже работают только со старой версией вордпресс?
Здравствуйте Галина!
Смысла откатывать нет. Установите лучше плагин Kama SpamBlock и забудете про спам.
Здравствуйте, Виталий. У меня Вордпресс 3,8, но почему-то когда вставляю ваш код в файл functions вообще весь сайт перестает работать, не подскажете, в чем дело?
Здравствуйте Анна!
Думаю вы где-то допускаете ошибку.
Проверьте все еще раз внимательно!
Да, Виталий, я наверное ошиблась. Сейчас попробовала вставить код перед закрывающей скобкой, и все вышло. Спасибо вам за ваш труд!
Спасибо за пост
Где то читал свежую статью как сделать защиту на новых версиях wordpress, у себя сделал — вроде как работает, но на каком сайте вычитал вспомнить не могу ((
Каждый день, по 50-100 коментов из хрумера, акисмет справляется, но это надо просматривать на наличие реальных коментов, очень неудобно, буду пробовать ваш метод, если он еще актуален!
Что-то у меня не получается, перепроверял и все одно и тоже: нужно ввести имя и адрес.
Вообще странно все поясняется в самой статье, если не найдете эту функцию, значит она задействована, может наоборот? Что за поле невидимое добавляется, зачем, непонятно.
Может быть это связано с этим:
1. Я не нашел comments_form в файле single.php
2. У меня версия WordPress 5.0.3 (понимаю, время идет).
Спамеры достали, капча всех отпугивает. Помогите с вашими кодами, все перепроверил, все заменил, не работает.
Функция актуальна до версии 4.4.
В тексте об этом говориться.
А может что-то можно изменить?
Нет, изменить нельзя. В движке с версии 4.4 произошли кардинальные изменения.
Последнее предложение. Посмотрите пожалуйста вот на этот вариант: wordpressplugins.ru/faq/no-spam-2.html. Я поставил тот код и были некоторые неувязки, там даже мою переписку видно (комментарии: 186-192). Сейчас еще с автором материала веду переписку, поскольку я не знаю как проверить работу кода (установлен только 2-й код, как предлагал автор). Может посмотрите и посоветуйте как проверить работу кода. Спасибо.
Все разобрался, там ответ написан. Но также хотел и у вас спросить, как поисковые системы относятся к скрытым полям, вроде бы понижают в выдаче?
День добрый! Статья интересная. Подскажите а как быть с обновлением. Ведь обновов тему все изменения в файле исчезнут