Как защитить продажные ссылки от поисковиков на примере SAPE и MainLink
Здравствуйте, уважаемые посетители моего блога Курилка.co.ua. Понятно, что с появлением в поисковиках детекторов проверки продажных ссылок жить стало «лучше», жить стало «веселей». Я всё больше поглядываю в сторону дорвеев и автоматически генерируемого контента. Как в песне: «как-то надо же жить, хлеб жевать, воду пить…» — ну и зарабатывать. Так как бизнес в Интернете, остаётся лишь приятным и заманчивым мифом, то в ход идёт всё что можно и нельзя. Однако, попытка не пытка, попробуем защитить продажность ссылок от кровавых ботов поисковых гигантов.
В Интернете существует совсем простенький сервис «Ёбана в рот». Он реализует самый простейший алгоритм проверки сайта на продажность. В чём его суть? Скрипт автоматического размещения платных (продажных) ссылок, выводит те или иные ссылки, основываясь на запрашиваемом URL. Стоит добавить в URL одну, лишнюю переменную и мы получим различие. К примеру:
/
/?vsyakiy_musor=!@#$^%&*()
Как вы видите, два адреса отличаются лишь наличием бесполезной переменной vsyakiy_muso, но для скрипта (SAPE, MainLink и т.п.) этого достаточно, дабы предположить, что открываются две разные страницы. Этим и пользуется детекторы продажных ссылок. Дальше, сравнивая оригинал страницы с тем, куда добавлена лишняя переменная, определяются исчезнувшие ссылки. Если таковые есть они и считаются продажными.
Конечно, надеется на то, что поисковые гиганты, вроде Google, Яндекс и т.п., используют только этот алгоритм, было бы наивно. Однако, лучше подстраховаться и учесть даже такой нюанс.
А вот теперь, о самом интересном: «как защитить продажные ссылки от поисковиков на примере SAPE и MainLink?» Предложенный алгоритм «защиты» достаточно прост: «удаляем из URL запроса передаваемые переменные».
Как защитить платные ссылки в скрипте SAPE?
- Открываем файл sape.php.
- Находим там функцию load_links(), а в ней строки:
// Убиваем PHPSESSID
if (strlen(session_id())) {
$session = session_name() . '=' . session_id();
$this->_request_uri = str_replace(array('?'.$session,'&'.$session), '', $this->_request_uri);
} - Заменяем или (на всякий случай) ставим после них следующий код:
$pos_qs = strpos($this->_request_uri,'?');
if ( $pos_qs!==false ) $this->_request_uri = substr($this->_request_uri,0,$pos_qs);который находит в URL запроса символ вопроса (?) и в случае его наличии оставляет только то, что идёт до него.
Как защитить платные ссылки в скрипте MainLink?
- Открываем файл ML.php.
- Находим там функцию _PrepairRequest(), а в ней строки:
// Убираем сессию
if(session_id()){$session=session_name()."=".session_id();
if($this->option[debugmode]) $this->option[debug_info].="Session clear: $session\n";
//$url = @str_replace($session, '', $url);
$pattern = "/[?&]?$session&?/i";
$replacement = '';
$url = preg_replace($pattern, $replacement, $url);
} - Заменяем или (на всякий случай) ставим после них следующий код:
$pos_qs = strpos($url,'?');
if ( $pos_qs!==false ) $url = substr($url,0,$pos_qs);который находит в URL запроса символ вопроса (?) и в случае его наличии оставляет только то, что идёт до него.
Недостатки предложенного метода и способы их устранения
Понятно, что такой метод имеет свой существенный недостаток. Так как удаляет не только переменные проверки, но и те которые необходимы для нормальной работы сайта. В этом случае, вы можете получить либо «сквозные ссылки», либо (что более вероятно) вообще отсутствие каких-либо ссылок.
Для решения данной проблемы можно попробовать усложнить алгоритм, оставляя необходимые для работы сайта переменные. Но гораздо проще и выгодней позаботится о ЧПУ, т.е. статичных адресах страниц (без переменных), на которых будут размещаться ссылки. Впрочем, возможно, можно придумать и что-то ещё.
На этом всё. Спасибо за внимание.