Регистрация спамера с акисметром

У меня есть большой список пользователей, зарегистрированных на веб-сайте без какого-либо фильтра спама, который активен во время регистрации.

Я хотел бы выделить, какие зарегистрированные пользователи, вероятно, спамеры. Я пытаюсь использовать akismet для этого, но до сих пор акисмет говорит мне, что все пользователи не спамеры. Вероятно, так как акисмет действительно сделан для комментариев, которые недоступны при регистрации.

То, что я отправляю akismet, – это имя пользователя, адрес электронной почты. Для url я использую домен электронной почты. Для их комментариев я использую: «Привет, я $ username из $ domain, зарегистрированного в $ date, с электронной почтой электронной почты и веб-сайта $ url».

Это, как сказано, всегда возвращает действительных пользователей, даже если пользователь выглядит как спамер.

Если вас интересует полный код:

<?php // bring php process to this dir chdir(dirname(__FILE__)); // include Joomla Framework require('../bootstrap-joomla.php'); // akismet class require('akismet.class.php'); /** * Retrieves users not yet validated */ function getUsers($userid, $limit = 10) { global $database; $database->setQuery("SELECT * FROM jos_users WHERE akismet_validated = 0 LIMIT " . intval($limit)); $Users = $database->loadObjectList(); return $Users; } /** * sets the validation results for the user */ function saveValidationResult($userid, $spammer) { global $database; $database->setQuery("UPDATE jos_users set akismet_validated = 1, akismet_spammer = " . intval($spammer) . " WHERE id = " . $userid . " LIMIT 1"); return $database->query(); } // get non validated users $Users = getUsers(); // validate each user foreach($Users as $User) { list($user, $domain) = explode('@', $User->email); $name = $User->username; $email = $User->email; $url = $domain; $comment = "Hello, I am $name, registered on $User->registerDate from <a href=\"$url\">$url</a>.\r\n"; $akismet = new Akismet('http://www.fijiwebdesign.com/', 'c511157d1d98'); $akismet->setCommentAuthor($name); $akismet->setCommentAuthorEmail($email); $akismet->setCommentAuthorURL($url); $akismet->setCommentContent($comment); //$akismet->setPermalink('http://www.fijiwebddesign.com/'); echo "$User->id, $User->username : "; if($akismet->isCommentSpam()) { saveValidationResult($User->id, true); echo "Spammer"; } else { saveValidationResult($User->id, false); echo "Not Spammer"; } echo "\r\n"; } 

Лучше подумать о Akismet как гигантском байесовском спам-фильтре с некоторыми другими эвристиками. Он работает над содержимым сообщения, временем публикации, и, самое главное, как часто наблюдается аналогичный контент, о котором сообщалось как спам. Строка, которую вы питаете к ней, несколько уникальна, поэтому другие не будут образовывать ее на спаме. Даже если вы каким-то образом отметили эту строку как спам, вы получите целую кучу ложных срабатываний, потому что вы просто кормите все учетные записи пользователей через нее.

Если вы считаете, что у вас могут быть незаконные пользователи на вашем сайте, и они не участвовали, просто удалите регистрацию. Если они законны, они могут просто перерегистрироваться.

Если пользователи участвуют, просто посмотрите их вклад. Их спамность должна быть очевидной.

bucabay, используйте контактную форму на Akismet.com, чтобы связаться с нами. Мы увидим, есть ли что-то, что мы можем сделать, чтобы улучшить ваши результаты.

Вы можете использовать Akismet для проверки регистрации регистрации, если все сделано правильно. Точность еще не в том месте, где мы официально рекомендуем, но мы работаем над ее улучшением, и вы можете экспериментировать.

У Captchas есть своя проблема. Крупные коммерческие спам-боксы нарушают их.

Вы изобретаете колесо, которое было сделано много раз очень успешно. Просто используйте Recaptcha или один из методов отсюда – Практические подходы CAPTCHA, основанные на изображениях?