Спам — это неприятность, и каждый блоггер должен иметь с ним дело. Как пользователь WordPress, держу пари, что вы уже используете Akismet, что, безусловно, является отличным способом уменьшения спама. Но некоторые другие уловки могут определенно помочь. Вот мои любимые взломы WordPress и фрагменты кода для уменьшения спама в вашем блоге.
Автоматически помечать как спам комментарии с супер длинным URL
Вы когда-нибудь замечали, что большинство спам-комментариев имеют очень длинный URL? Таким образом, хороший способ поймать больше спам-комментариев, которые не были обнаружены Akismet, — автоматически пометить спам-комментарии с URL длиной более 50 символов.
Чтобы применить этот совет, просто вставьте приведенный ниже код в ваш functions.php
файл. Этот код помечает как спам любой комментарий с URL длиной более 50 символов. Этот номер можно изменить в строке 4.
<?php function rkv_url_spamcheck( $approved , $commentdata ) { return ( strlen( $commentdata['comment_author_url'] ) > 50 ) ? 'spam' : $approved; } add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 ); ?>
Этот фрагмент действительно эффективен и позволил мне уменьшить спам в моих блогах.
Источник: http://css-tricks.com/snippets/wordpress/spam-comments-with-very-long-urls/
Удалите поле URL из формы комментариев
Радикальным способом борьбы со спамом в вашем блоге является удаление поля url из формы комментариев, чтобы комментаторы не могли ссылаться на свой сайт. Это не очень круто для них, но если вы ведете очень большой блог с большим количеством спама, это может быть решением.
Вставьте этот код в ваш functions.php
файл. После сохранения поле URL будет удалено из формы комментариев.
function remove_comment_fields($fields) { unset($fields['url']); return $fields; } add_filter('comment_form_default_fields','remove_comment_fields');
Источник: http://wp.tutsplus.com/tutorials/creative-coding/customizing-comments-in-wordpress…/
Удалить поле URL из формы комментариев и автоматически спамить комментарии с URL
Теперь, если вы хотите действительно эффективный и радикальный способ избавиться от спама, позвольте объединить две функции выше.
Во-первых, давайте удалим поле URL из формы комментария. И затем убедитесь, что у спаммера нет хитрости для вставки URL-адреса, автоматически пометив как спам любой комментарий с чем-то в поле URL-адреса.
function remove_comment_fields($fields) { unset($fields['url']); return $fields; } add_filter('comment_form_default_fields','remove_comment_fields'); <?php function rkv_url_spamcheck( $approved , $commentdata ) { return ( strlen( $commentdata['comment_author_url'] ) > 1 ) ? 'spam' : $approved; } add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 ); ?>
Этот код должен быть вставлен в ваш functions.php
файл для работы.
Отключить ссылки в тексте комментария
Вы устали от того, что некоторые люди используют ваш веб-сайт для ссылки на другие источники, большинство из которых не имеют отношения к содержимому публикации? Тогда вот трюк, который я использую как на CatsWhoCode.com, так и на WPRecipes.com: Удалите автоматическую ссылку на URL в тексте комментария.
Как обычно, этот код попадает прямо в ваш functions.php
файл.
remove_filter('comment_text', 'make_clickable', 9);
Источник: http://www.wprecipes.com/wordpress-hack-remove-autolinks-in-comments
Автоматический «Nofollow» для внешних ссылок в тексте комментария
Если вы хотите уменьшить количество спам-ссылок в тексте комментария, не удаляя автоматическое связывание URL-адресов, как показано выше, вот альтернатива: просто добавьте rel="nofollow"
атрибут ко всем внешним ссылкам.
Вставьте приведенный ниже код в свой functions.php
файл, а затем сохраните файл.
add_filter('comment_text', 'auto_nofollow'); function auto_nofollow($content) { //return stripslashes(wp_rel_nofollow($content)); return preg_replace_callback('/<a>]+/', 'auto_nofollow_callback', $content); } function auto_nofollow_callback($matches) { $link = $matches[0]; $site_link = get_bloginfo('url'); if (strpos($link, 'rel') === false) { $link = preg_replace("%(href=S(?!$site_link))%i", 'rel="nofollow" $1', $link); } elseif (preg_match("%href=S(?!$site_link)%i", $link)) { $link = preg_replace('/rel=S(?!nofollow)S*/i', 'rel="nofollow"', $link); } return $link; }
Источник: http://www.onextrapixel.com/2012/10/12/5-code-snippets-for-interacting…
Спам-комментарии на основе списка слов
Поскольку спамеры обычно нацелены на конкретные ключевые слова, может быть полезно создать черный список и автоматически помечать его как спам-комментарии, которые содержат одно или несколько слов из черного списка.
Чтобы добавить ключевые слова, просто измените массив в строке 9. Затем вставьте этот фрагмент кода в свой functions.php
файл.
function in_comment_post_like($string, $array) { foreach($array as $ref) { if(strstr($string, $ref)) { return true; } } return false; } function drop_bad_comments() { if (!empty($_POST['comment'])) { $post_comment_content = $_POST['comment']; $lower_case_comment = strtolower($_POST['comment']); $bad_comment_content = array( 'viagra', 'hydrocodone', 'hair loss', '[url=http', '[link=http', 'xanax', 'tramadol', 'russian girls', 'russian brides', 'lorazepam', 'adderall', 'dexadrine', 'no prescription', 'oxycontin', 'without a prescription', 'sex pics', 'family incest', 'online casinos', 'online dating', 'cialis', 'best forex', 'amoxicillin' ); if (in_comment_post_like($lower_case_comment, $bad_comment_content)) { $comment_box_text = wordwrap(trim($post_comment_content), 80, "\n ", true); $txtdrop = fopen('/var/log/httpd/wp_post-logger/nullamatix.com-text-area_dropped.txt', 'a'); fwrite($txtdrop, " --------------\n [COMMENT] = " . $post_comment_content . "\n --------------\n"); fwrite($txtdrop, " [SOURCE_IP] = " . $_SERVER['REMOTE_ADDR'] . " @ " . date("F j, Y, g:i a") . "\n"); fwrite($txtdrop, " [USERAGENT] = " . $_SERVER['HTTP_USER_AGENT'] . "\n"); fwrite($txtdrop, " [REFERER ] = " . $_SERVER['HTTP_REFERER'] . "\n"); fwrite($txtdrop, " [FILE_NAME] = " . $_SERVER['SCRIPT_NAME'] . " - [REQ_URI] = " . $_SERVER['REQUEST_URI'] . "\n"); fwrite($txtdrop, '--------------**********------------------'."\n"); header("HTTP/1.1 406 Not Acceptable"); header("Status: 406 Not Acceptable"); header("Connection: Close"); wp_die( __('bang bang.') ); } } }
add_action (‘init’, ‘drop_bad_comments’); Источник: http://www.wprecipes.com/automatics-refuse-spam-comments-on-your-wordpress-blog
Запретить комментирование нереферальных запросов
Вот очень полезный совет, чтобы спам-боты не сбрасывали спам-бомбы, отказывая в доступе ко всем запросам, исходящим не из вашего домена.
Скопируйте приведенный ниже код, обновите имя домена в строке 5 и вставьте его в свой .htaccess
файл. Этот файл находится в корне вашей установки WordPress. Не забудьте всегда сделать резервную копию перед редактированием этого файла!
# block comment spam by denying access to no-referrer requests RewriteEngine On RewriteCond %{REQUEST_METHOD} POST RewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.*catswhocode.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule ^(.*)$ ^http://the-site-where-you-want-to-send-spammers.com/$ [R=301,L]
Источник: http://perishablepress.com/block-spam-by-denying-access-to-no-referrer-requests/