Спамерские технологии не стоят на месте. Все-таки изобретательные эти люди 🙂
В одном из последних постов на Blue Hat SEO как раз и описан один из таких способов.
Вкратце идея следующая. Создается страница со ссылками на различные блоги. И на них же отправляются трекбеки. Т.е. на этих блогах, обычно в разделе комментариев, появляются ссылки на эту страницу.
Естественно, владельцы блогов начинают проверять спамерскую страницу на наличие обратной ссылки на свой блог. Видят, что ссылка на месте и не удаляют трекбек.
Примечание. Эту проверку не обязательно делать вручную. Автоматизировать эту работу можно с помощью плагина для WordPress — Trackback Validator Plugin.
Через несколько дней спамер кардинальным образом изменяет страницу. Например, превращает в дорвей. Все ссылки на блоги с нее естественно удаляются.
Т.е. получается, что нужно периодически проверять страницы, с которых отправлены трекбеки на наличие обратных ссылок.
Делать это вручную – нереально. Поэтому я написал небольшой php скрипт, который автоматически выполняет эти проверки. Если его запускать cron’ом, то вы всегда будете в курсе наличия обратных ссылок.
Рассмотрим, как он работает.
define('SITE_URL', 'your_blog_url'); //URL, который нужно проверять /** * Настройки подключения к БД */ define('DB_NAME', 'your_db_name'); define('DB_HOST', 'your_db_host'); define('DB_USER', 'your_db_user'); define('DB_PASS', 'your_db_pass'); define('DB_TABLE_PREFIX', 'wp_'); //измените, если вы используете другой префикс таблиц /** * Адрес почты для отправки отчета */ define('MAIL_ADDRESS', 'your_email'); $log = ''; //подключаемся к базе $link = mysql_connect(DB_HOST, DB_USER, DB_PASS) or die("Could not connect : " . mysql_error()); //выбираем БД mysql_select_db(DB_NAME) or die("Could not select database");// получаем список трекбеков (не отмеченных как спам, с ними будет разбираться // Akismet) $qFindTrackbacks = 'SELECT * FROM '.DB_TABLE_PREFIX. 'comments WHERE comment_type="trackback" AND comment_approved<>"spam"'; $result = mysql_query($qFindTrackbacks) or die("Trackback search failed : " . mysql_error()); //------------- ищем обратные ссылки ---------------------// //инициализация cURL $ch = curl_init(); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); while ($curTrackback = mysql_fetch_array($result, MYSQL_ASSOC)) { curl_setopt($ch, CURLOPT_URL, $curTrackback['comment_author_url']); $page = curl_exec($ch); if ($page != null) { $log .= 'Receive page '.$curTrackback['comment_author_url'].'\n<br />'; } //проверяем наличие обратной ссылки if (substr_count($page, SITE_URL) < 1) { //добавляем запись о том, что найден подозрительный трекбек $log .= 'Found trackback without backlink : '.$curTrackback['comment_author_url'].'\n<br />'; } } curl_close($ch); //закрываем соединение mysql_close($link); //отправляем письмо с отчетом if ($log == '') { $log .= 'Bad trackbacks not found'; } mail(MAIL_ADDRESS, 'Trackback search', $log, 'From: Trackback checker script') or die("Could not send report"); //скрипт нормально завершил работу exit(0);
Алгоритм довольно простой.
Сначала вы указываете ваши параметры подключения к базе данных, URL блога и email на который будет отправлен отчет с результатами проверки.
Затем скрипт подключается к базе данных и находит все трекбеки (строки 29-32).
Примечание. Трекбеки, отмеченные как «spam» мы пропускаем, т.к. они на страницах блога не отображаются и могут быть легко удалены из админ-панели.
После этого с помощью cURL скрипт получает страницы и ищет на них ссылки на ваш блог (строки 40-51). Если он находит хотя бы одну ссылку, то трекбек пропускается. А вот если ссылок нет, то в отчет (переменную $log
) заносится адрес страницы.
Тут может возникнуть вполне закономерный вопрос. Почему не удалять сразу эти трекбеки? Дело в том, что во время страница может быть недоступна. Например, если ведутся технические работы. Поэтому окончательное решение об удалении ссылки скрипт оставляет вам.
Когда все проверки будут выполнены, скрипт отправит вам письмо с отчетом (строка 62).
Внимание! При работе данного скрипта могут возникнуть проблемы для блогов с большим количеством трекбеков (в виде нагрузки на сервер).
Если кто-то столкнется с такой проблемой – пишите в комментариях. И хотя бы примерно укажите количество трекбеков. Я переделаю скрипт так чтобы снизить нагрузку.
Небольшое дополнение.
На данный момент (по моим наблюдениям) большинство спамеров просто отправляют трекбеки без обратных ссылок. Наверное, надеются, что владелец блога ленивый и проверять их не будет 😉 .
Например, на этом блоге скрипт нашел всего один трекбек без обратной ссылки. И то, я не уверен, что его нужно удалять, т.к. на той странице просто висит сообщение об ошибке (никакой рекламы, ключевиков или редиректов). В тоже время Akismet отфильтровал почти 2000 спамерских трекбеков.
И в заключение немного теоретических сведений о самих трекбеках и пингбеках (аналогичная технология).
В подробности вдаваться не буду, технической информации на эту тему валом. Только перечислю несколько пунктов, которые должен знать и учитывать каждый блоггер.
1) В идеале трекбек отправляется, когда один блоггер ссылается на другого. Естественно, движки блогов должны поддерживать эту технологию.
2) Трекбеки можно запретить в админ-панели WordPress (так же как и комментирование).
3) Трекбек можно отправить без установки обратной ссылки (чем и пользуются спамеры).
4) В отличие от комментариев для отправки трекбека не нужно вводить captcha. Это полностью автоматизированная технология, что и делает ее привлекательной для спамеров.
5) Исходя из моего опыта ~ 90% спама в трекбеках фильтруется Akismet'ом. Правда в большинстве случаев они были напичканы ключевиками фарма тематики.
Как видите, со спамом можно довольно успешно бороться 😉
Если скрипт вас заинтерисовал — качайте архив:
Скачать скрипт
P.S. Меня, как блоггера очень интересует эта тема. Если у вас есть замечание или вы хотите поделится своим опытом – пишите в комментариях.