Как избежать автоспама в WordPress’е.

Думаю, про такой метод, как “подмена полей” все слышали. Ну, если и не все, то очень многие. Достаточно муторный, но действенный метод. Единственный косяк – с этим методом можно забыть про автоматическое обновление движка. Только вручную и только с повторением этой процедуры после каждого обновления.
SunChaser как-то обмолвился про несколько иной (хотя и похожий) метод: подмена файлов. Суть в чём? За добавления комментария отвечает файл wp-comments-post.php и спамеры (авто) отправляют запрос именно к нему. Если за комментирование будет отвечать другой файл, то автоспам не пройдёт.
Исходи из этого, есть как минимум два варианта решения.

  1. ВАРИАНТ № РАЗ.
    • создаём в корне файлик wp-comments-antispam.php (название может быть любое, даже лучше, что бы у всех было индивидуальное) со следующим содержимым:
      < ?php
      
      include('wp-comments-post.php');
      
      ?>
    • в корне же находим .htaccess и вставляем строки:
      <files wp-comments-post.php>
      order allow,deny
      deny from all
      </files>
    • в корне же открываем wp-config.php и добавляем строку:
      define('OPENID_COMMENTS_POST_PAGE', 'wp-comments-antispam.php');
    • ну, и заключительный шаг.
      Тут уже зависит от вашей темы. Скорее всего, это будет файл comments.php в каталоге текущей темы.
      Находим строку, начинающуюся так:

      и в "action="wp-comments.php"" подставляем название файла из п.п. 1:

      
      
      
      
    • Собственно, всё. Воспользовался этим методом – пока ни одного спамерского камента не было.
      Касательно обновлений – как я понимаю, после каждого обновления нужно только повторить пп. 3.

  2. ВАРИАНТ № ДВА.
    • Собственно, SunChaser обмолвился о переименовании файла без подробностей. Алгоритм действий, как я понимаю, несколько проще:

    • переименовываем в корне файлик wp-comments.php в wp-comments-antispam.php;
    • в корне же открываем wp-config.php и добавляем строку:
      define('OPENID_COMMENTS_POST_PAGE', 'wp-comments-antispam.php');
    • находим comments.php в каталоге текущей темы.
      Находим строку, начинающуюся так:

      и в "action="wp-comments.php"" подставляем название файла из п.п. 1:

      
      
      
      
    • Как видите, отличается только первый пункт и второй вообще не нужен. Но этот способ я не проверял.

Вобщем, берём на вооружение, воплощаем и делимся впечатлениями.
ЗЫ И не забываем, что плагин добавл лишний пробел в первом блоке кода между “< " и "?". Пробел удалить. UPD: хауту от афтара метода.

Запись опубликована в рубрике HOWTO, блоговодство, интернет с метками , , , , . Добавьте в закладки постоянную ссылку.

19 комментариев на «Как избежать автоспама в WordPress’е.»

  1. SunChaser говорит:

    > после каждого обновления нужно только повторить пп. 3.

    не, не надо. конфиг ж не переписывается

    > Алгоритм действий, как я понимаю, несколько проще

    да, истинно так. но надо будет переименовывать после каждого обновления =) поэтому неудобнее

    да, подправь пункт 2 в 1 способе. так ты закроешь весь блог на доступ 😉

  2. Dandr говорит:

    SunChaser :

    да, подправь пункт 2 в 1 способе. так ты закроешь весь блог на доступ

    пля… Часть строк съелась. 🙁

  3. @ Dandr: т.е. невидимую капчу ты не попробовал ?

  4. Dandr говорит:

    Алексей Рязанцев :

    @ Dandr: т.е. невидимую капчу ты не попробовал ?

    Нет. Я эту методу вчера вечером как раз прикручивал.

  5. Ptah говорит:

    Я правильно понимаю, что с первым способом обновляться можно автоматически?

    И плагин для цитирования будет работать?

  6. SunChaser говорит:

    Ptah :

    Я правильно понимаю, что с первым способом обновляться можно автоматически?

    да

  7. Dandr говорит:

    Ptah :

    И плагин для цитирования будет работать?

    да.

  8. Ptah говорит:

    @ Dandr:
    @ SunChaser:
    Круто! Спасибо, сегодня же обязательно попробую! 🙂

  9. Dandr говорит:

    @ Ptah:
    на здоровье)))

  10. Ptah говорит:

    эмм… не нашел у себя файла .htaccess
    может я не там ищу?

  11. SunChaser говорит:

    @ Ptah:
    либо он в инвизе, либо создай =)
    у тебя, гляжу, rewrite не включен, его вполне может и не быть

  12. Ptah говорит:

    @ SunChaser: насчет инвиза я тоже подумал, но через cpanel не нашел функцию включить видимость. Дома через фтп гляну.

    Насчет rewrite нифига не понял, скажи по-русски, я же чайник 🙂

  13. SunChaser говорит:

    @ Ptah:
    у апача есть такая функциональность — превращать ссылки something.com/engine.php?article=my-cool-atricle в something.com/articles/my-cool-article.html
    или даже вот http://www.dandr.su/?p=8500 в http://www.dandr.su/2009/12/01/kak-izbezhat-avtospama-v-wordpresse/

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

  14. Ptah говорит:

    @ SunChaser: насчет таких ссылок, то это, насколько я знаю плагин такой. А файл поищу дома, должен быть – найдем 🙂

  15. SunChaser говорит:

    @ Ptah:
    не, не плагин. это настраивается на http://ptah-blog.com/wp-admin/options-permalink.php
    он вставляет в .htaccess такой обработчик:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    плагин лишь меняет кириллицу в пермалинках на латинницу. он называется transliterado

  16. Ptah говорит:

    @ SunChaser: хм, действительно. Давно это так? Может в ранних версиях не было?
    Реально видел такой плагин. 🙂

  17. SunChaser говорит:

    В 2.6 было. за еще более ранние не отвечаю. может, плагинописатели не умеют копаться в настройках? 😀
    или он делает что-нибудь слегка другое. или слегка подругому, например когда злые хостеры не дают допуска к .htaccess (хотя я не представляю как это тогда)

  18. Dandr говорит:

    SunChaser :

    он вставляет в .htaccess такой обработчик:
    RewriteEngine On
    RewriteBase /
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    ах, воот почему на локалхосте у меня ЧПУ не работают… 🙂

Добавить комментарий для PtahОтменить ответ