- Сообщений: 986
- Спасибо получено: 146
Как создать и настроить свой веб-сервер на VDS (05 сен 2024)
Осенью самое время заняться установкой и тюнингом своего веб-сервера. Не правда ли?
Борьба со спамом. Хаки и трюки WordPress
- serge
- Автор темы
- Не в сети
- Модератор
Less
Больше
11 года 2 мес. назад - 11 года 2 мес. назад #1
от serge
А я смогу! - А поглядим! - А я упрямый!
serge создал тему: Борьба со спамом. Хаки и трюки WordPress
Несколько примеров крайне полезных в борьбе со спамом на WordPress кодов, хаков и трюков. Все нижеперечисленное, кроме последнего примера, относится к редактуре файла functions.php.
Автомаркируем как спам комментарии, содержащие длинный url. Попросту вставьте данный код в ваш functions.php. Длина url (50 знаков) может быть изменена в строчке кода:
Идем далее. Возможно, вы посчитаете необходимым попросту удалить поле url из формы добавления комментариев? Это очень несложно: добавьте в ваш functions.php этот код:
Теперь - попытаемся объединить первое и второе. Удалим поле url и в дальнейшем будем маркировать как спам любую попытку вставки url в комментах! Все то же самое, редактируем functions.php :
Разрываем ссылку в тексте комментария:
Если описанные выше мероприятия представляются вам чересчур суровыми - вы можете просто добавить тег nofollow (начиная с 2011 года Яндекс понимает nofollow) к ссылкам, ничего при этом внешне не меняя. Старый трюк:
Автомаркировка as spam комментариев на основе списка слов:
И напоследок - весьма полезное правило, реализующее запрет всех запросов, берущих начало не из вашего домена. Крайне неприятная штуковина для спам-ботов. Разместите в вашем htaccess следующие строчки:
Надеюсь, вам это поможет.
Автомаркируем как спам комментарии, содержащие длинный url. Попросту вставьте данный код в ваш functions.php. Длина url (50 знаков) может быть изменена в строчке кода:
Code:
<?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 );
?>
Идем далее. Возможно, вы посчитаете необходимым попросту удалить поле url из формы добавления комментариев? Это очень несложно: добавьте в ваш functions.php этот код:
Code:
function remove_comment_fields($fields) {
unset($fields['url']);
return $fields;
}
add_filter('comment_form_default_fields','remove_comment_fields');
Теперь - попытаемся объединить первое и второе. Удалим поле url и в дальнейшем будем маркировать как спам любую попытку вставки url в комментах! Все то же самое, редактируем functions.php :
Code:
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 );
?>
Разрываем ссылку в тексте комментария:
Code:
remove_filter('comment_text', 'make_clickable', 9);
Если описанные выше мероприятия представляются вам чересчур суровыми - вы можете просто добавить тег nofollow (начиная с 2011 года Яндекс понимает nofollow) к ссылкам, ничего при этом внешне не меняя. Старый трюк:
Code:
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;
}
Автомаркировка as spam комментариев на основе списка слов:
Code:
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',
'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');
И напоследок - весьма полезное правило, реализующее запрет всех запросов, берущих начало не из вашего домена. Крайне неприятная штуковина для спам-ботов. Разместите в вашем htaccess следующие строчки:
Code:
# 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]
Надеюсь, вам это поможет.
А я смогу! - А поглядим! - А я упрямый!
Последнее редактирование: 11 года 2 мес. назад пользователем serge.
Пожалуйста Войти или Регистрация, чтобы присоединиться к беседе.