Clicky

Hacks y snippets para reducir eficazmente el spam en WordPress

evitar spam en WordPress

Retirar el enlace automático de URLs en el texto del comentario y más trucos

El spam es una molestia y cada blogger tiene que lidiar con eso. Como usuario de WordPress apuesto a que ya utilizas Akismet, que es sin duda una buena manera de reducir el spam. Sin embargo hay varios otros trucos que definitivamente pueden ayudar. Aquí están mis hacks y fragmentos de código favoritos para reducir el spam en tu blog WordPress.

Marcar automáticamente como spam comentarios con una URL super larga

¿Has notado alguna vez que la mayoría de los comentarios de spam tienen URLs muy largas? Así que una buena manera de bloquear más comentarios de spam que no han sido capturados por Akismet es marcar automáticamente como spam los comentarios con una dirección de Internet de más de 50 caracteres.

Para aplicar este consejo simplemente pega el siguiente código en tu archivo functions.php. Este código marcará como spam cualquier comentario con una dirección de Internet de más de 50 caracteres. Este número se puede cambiar en la línea 4.

 50 ) ? 'spam' : $approved;
  }

  add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 );

?>

Este fragmento es muy eficiente y me permitió reducir el spam en mis blogs.

Retira el campo url del formulario de comentarios

Una forma radical para combatir el spam en tu blog es quitar el campo url del formulario de comentarios, por lo que los comentaristas no serán capaces de vincular a su sitio web. Para algunos puede no ser una solución ideal, pero si se está ejecutando un gran blog con un montón de correo basura, esto puede ser una solución.

Pega este código en tu archivo functions.php. Una vez guardado, el campo url será removido de tu formulario de comentarios:

function remove_comment_fields($fields) {
    unset($fields['url']);
    return $fields;
}
add_filter('comment_form_default_fields','remove_comment_fields');

Quita el campo url del formulario de comentarios y marca como spam de forma automática comentarios con urls

Pero si quieres una manera realmente eficaz y radical para deshacerse de correo no deseado haz que se combinen las dos funciones anteriores.

En primer lugar, vamos a eliminar el campo url del formulario de comentarios. Luego, nos aseguraremos de que el spammer no tiene un truco todavía para insertar una url al marcar automáticamente como spam cualquier comentario con algo en el campo url.

function remove_comment_fields($fields) {
    unset($fields['url']);
    return $fields;
}
add_filter('comment_form_default_fields','remove_comment_fields');

 1 ) ? 'spam' : $approved;
  }

  add_filter( 'pre_comment_approved', 'rkv_url_spamcheck', 99, 2 );

?>

Para trabajar, este código tiene que ser pegado en tu archivo functions.php.

Desvincular urls del texto del comentario

¿Está cansado de que algunas personas usan tu sitio web para vincular a otras fuentes, la mayoría de ellas sin relación con el contenido de la entrada? Entonces, aquí está un truco que estoy usando: Retirar el enlace automático de URLs en el texto del comentario.

remove_filter('comment_text', 'make_clickable', 9);

Como de costumbre, este código va directamente a tu archivo functions.php.

"Nofollow" automático en los enlaces externos en el texto del comentario

Si deseas reducir la cantidad de enlaces spam en el texto del comentario sin remover el enlace automático de URL como se muestra arriba, esto es una alternativa: simplemente añadir un atributo rel="nofollow" para todos los enlaces externos.

Pega el siguiente código en tu archivo functions.php y guarda el archivo:

add_filter('comment_text', 'auto_nofollow');
 
function auto_nofollow($content) {
    //return stripslashes(wp_rel_nofollow($content));
 
    return preg_replace_callback('/]+/', '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;
}

Comentarios spam basados en una lista de palabras

Como los spammers generalmente se dirigen a palabras clave específicas, puede ser útil crear una lista negra y marcar automáticamente como comentarios de spam los que contengan una o más palabras de la lista negra.

Para añadir palabras clave, basta con editar la matriz de la línea 9. A continuación, pega este fragmento de código en tu archivo 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.') );
		}
	}
}

Denegar comentarios en solicitudes no referenciales

Este es un consejo muy útil para evitar spam al negar el acceso a todas las solicitudes que no se originan en el dominio.

Copia el código de abajo, actualiza el nombre de dominio en la línea 5 y pégalo en tu archivo .htaccess. Este archivo se encuentra en la raíz de tu instalación de 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]

No te olvides de hacer siempre una copia de seguridad antes de editar los archivos de los ejemplos.

Jesus_Caceres