Дорвеи под Яндекс, беспаливный редирект, абузоустойчивость, хороший клоакинг

C
На сайте с 10.08.2012
Offline
17
20788

Дисклеймер: Все, написанное ниже, основано только на личных наблюдениях и догадках автора. Возможно (и скорее всего) текст содержит ошибочную, или намеренно искаженную информацию.

Хочу поделиться с вами алгоритмами, которые помогут (см. Дисклеймер) вам улучшить качество

ваших дорвеев.

Вводные параметры: Все, что я расскажу, предназначено для динамических дорвеев под Яндекс, основанных на парсинге выдачи. Для выполнения некоторых условий необходим php или asp.net. Может и perl, я с этим зверем не знаком. Пару правил:

1. Дорвеи не живут вечно. Вообще вечно ничего не живет, но дорвеи уж точно. Поэтому правило номер 1 – не жалейте дорвеи. Все равно попадут в бан, рано или поздно, поэтому выжимайте из них максмум. Но:

2. За что банят дорвеи? За то, что и все другие «говносайты»

a. Чужой контент.

b. Сайты, которые не содержат никакой информации, а только предназначены для показа партнерских программ.

c. Ссылочный спам

d. Скрытый текст.

e. Клоакинг

f. Бессмысленное текстовое содержание.

g. По «стуку».

Пункты b,d,e– вот с этими причинами мы и будем бороться, что бы максимально продлить жизнь дорвея. Именно эти узкие места защитит «правильный» редирект.

Цель любого дорвея – отправить посетителя, зашедшего из поисковой системы, на страницу партнерской программы. (Дорвеи, которые показывают тизеры, и этим живут, я не рассматриваю как «чистый дорвей».) Самые популярные методы - .htaccess и javascript. Считается, что боты - пауки не видят первого и не понимают второго. Это неверно, не такие они и тупые. Оба метода рассчитаны на анализ USER_AGENT.

Приведу пример с одной популярной партнерки:
RewriteEngine on
RewriteCond %{HTTP_USER_AGENT} (android|midp|j2me|symbian|series\ 60|symbos|windows\ mobile|windows\ ce|ppc|smartphone|blackberry|mtk|bada|windows\
phone) [NC]
RewriteCond %{HTTP_USER_AGENT} !(accoona|ia_archiver|antabot|ask\
jeeves|baidu|dcpbot|eltaindexer|feedfetcher|gamespy|gigabot|googlebot|gsa-crawler|grub-client|gulper|slurp|mihalism|msnbot|worldindexer|ooyyo|pagebull|scoote
r|w3c_validator|jigsaw|webalta|yahoofeedseeker|yahoo!\
slurp|mmcrawler|yandexbot|yandeximages|yandexvideo|
yandexmedia|yandexblogs|yandexaddurl|yandexfavicons|
yandexdirect|yandexmetrika|yandexcatalog|yandexnews|
yandeximageresizer) [NC]
RewriteRule (.*) http://site.ru/ref=1 [L,R=302]

Да. Это работает. Но недолго. Яндекс давно научился загонять мобильных ботов на ваши сайты.

http://webmaster.ya.ru/replies.xml?item_no=12778

Причем палиться не само наличие мобильного редиректа, а то, куда он ведет. И ведет он, как правило, на давно известную яндексу партнерку. Бот не обязательно выдаст себя как «Yandex Bot Mobile», или «Google Bot Mobile». Итого: «стандартный» редирект через .htacces уменьшает и без того недолгую жизнь дорвея.

Тоже самое касается и «стандартного» редиректа через javascript.

<script type="text/javascript">
<!--
if(navigator.userAgent.match(/(android|midp|j2me|symbian|series 60|symbos|windows mobile|windows ce|ppc|smartphone|blackberry|mtk|bada|windows

phone)/i)!==null){
window.location = " http://site.ru/ref=1";
}
//-->
</script>

Этот текст скрипта, если он не закодирован. Закодированный скрипт выглядит примерно так:

<SCRIPT LANGUAGE="JavaScript">
<!--
function Decode(){var temp="",i,c=0,out="";var

str="многабукф";l=str.length;while(c<=str.length-1){while(str.charAt(c)!='!')temp=temp+str.charAt(c++);c++;out=out+String.fromCharCode(temp);temp="";}documen

t.write(out);}
//-->
</SCRIPT><SCRIPT LANGUAGE="JavaScript">
<!--
Decode();
//-->
</SCRIPT>

Я, к счастью, не работаю в центре разработки Яндекс или, к несчастью, в Гугл. Но работай я там, я бы за наличие «<SCRIPT LANGUAGE="JavaScript"> function Decode()» в алгоритмах ранжирования как минимум бы сделал (-100), плюс еще бы и внес такой сайт в базу для проверки асессором. Поэтому лично я считаю, что этот способ также приводит к быстрой смерти дорвея.

Немного лирики.

Решение задачи клоакинга сводится к тому, что нужно понять, кто заходит на дорвеи, и представить, как они себя там видут. И все становится сразу просто: на дорвеи приходят: боты, как и по базе «сайтов к индексации, так и по ссылкам с других сайтов, пользователи «корм», и всякие дорвейщики, и прочие вебмастера, с целью "спалить", "настучать", и вообще - ничего хорошего они вам не дадут, назовем их "коллеги" (хотя некоторые еще школу не закончили). Получается, что мы должны предусмотреть три алгоритма поведения дорвея в зависимости от того, кто и откуда на него пришел.
1. Боты должны видеть текстовое содержимое, не видеть редиректов, не видеть баннеров на "стремные" партнерки, не видеть рекламы. Видеть красоту и полезность.
(Это касается и СДЛ. Рекламные скрипты и баннеры элементарно можно и не показывать. Скрыть от бота наличие тизеров, попандеров, и прочей рекламной мути.)
2. Пользователи "корм" должны улетать с дорвея, причем как-то так, что бы всякие Яндекс и Гугл Бары, и браузеры, не передавали поисковым системам отсутствие поведения на сайте.
3. Пользователи "коллеги" должны думать "это не конкурент, и не "тема", а гавно какое-то, не работает.
Закончим лирику.

Что бы все это работало, клоакинг должен быть на стороне сервера. Потому что "боты" и "коллеги" могут анализировать скрипты, подменять USER AGENT, и так далее.

Теперь самое главное в этом топике - алгоритм. Код php, который у меня есть, и работает - не просите. Я не программист :)

1. Используя HTTP referer, определяем, откуда посетитель зашел на сайт. Варианта три: $ЭтоСайтПоисковаяСистема, $ЭтоСайтНеПоисковаяСистема, $ПрямойВход

2. Использую USER AGENT определяем тип посетиля. Вариантов много, но я упростил себе задачу: $YaBrowser $ОстальныеБраузеры $МобильныеНеiOs $МобильныеiOS $БраузерНеизвестен, $бот

3. Используя данные из HTTP referer, в случае если переход из поисковой системы - определяем поисковый запрос. Варианта два: $ПоисковыйЗапросКорм, $ПоисковыйЗапросКоллеги (содержит, например, вхождения "site=test.ru" или "host:test.ru | host:www.test.ru". Так не ищут "полезные пользователи". Всякие сервисы, которые показывают количество в индексе, используют запрос к Яндекс.Аpi, и следовательно, не содержат USER AGENT.

Теперь условия:

Нет редиректа:

1. Если IPЗабанен() - ошибка 500.

2. Если $bot - показываем текстовое содержимое сайта. Не показываем рекламные блоки, не показываем javascript партнерских или рекламных программ - только текст и картинки.

3. Если $YaBrowser - показываем сайт, но без "стремного содержимого". Это режим "panic", но пользователей с этим браузером, по моей статистике, меньше процента. Пусть поведенические факторы накручивает. Вообще, если честно - единичные случаи. Да, возможно мы теряем часть потенциального конверта, но эта часть мизерна.

4. Если ($ЭтоСайтНеПоисковаяСистема) и ($YaBrowser или $ОстальныеБраузеры) - показать страницу 500. Это или асессор, или коллега. Пусть думают, что сайт в дауне, и идут дальше. Асессор отложит принятие решения о ручном бане, а "коллега" затупит. IP сразу в бан, потому что упорный асессор или коллега могут и вручную адресочек вбить. Боты, которые перейдут по ссылке с других сайтов, referer не содержат, поэтому бояться забанить случайно IP бота не следует.

5. Если $ЭтоСайтНеПоисковаяСистема, кто бы там не был - показать страницу 500, вызвать функцию ЗабанитьIP(). Варианты, что на ваш дорвей зайдут пользователи по ссылкам, которые вы спамили в профилях хрумером, или там в сапе покупали, или еще где - ничтожен, и конвертить его не стоит. Бот, который возможно перейдет по ссылке с чужого (или вашего другого дорвея), не содержит referer.

6. Если $ПоисковыйЗапросКоллеги - показать страницу 500, вызвать функцию ЗабанитьIP()

7. Если $ЭтоСайтПоисковаяСистема и $БраузерНеизвестен - показываем сайт, но без "стремного содержимого". Это режим "panic" также, потом в логах разберемся, кто это.

Есть редирект. Используется php header('Location: http://www.нужныйадрес.com/');

8. Если $ЭтоСайтПоисковаяСистема и ($ОстальныеБраузеры или $МобильныеiOS) и не IPЗабанен() - редирект на прокладку, или страницу партнерки, или на свой СДЛ.

9. Если $ЭтоСайтПоисковаяСистема и $МобильныеНеiOs и не IPЗабанен() - редирект на мобильную партнерку, или на прокладку. (я лично в этом случае считаю, что прокладку под это условие ставить нет смысла. Могу ошибаться).

Пару дополнительных функций:

ЗабанитьIP()

Функция банит потенциально опасные для нас IP, полученные из п.п. 4,5,6. Нечего им делать на наших сайтах. База забаненных IP - общая для всех дорвеев. У меня она растет не сильно, и время от времени я анализирую, кого же я забанил. База содержит IP,HTTP referer,USER AGENT. Если вдруг поймете, что забанили какого-то бота - удаляйте IP, разбирайтесь, в результате чего он туда попал, оптимизируйте алгоритм.

IPЗабанен() - если IP в базе - ну его, даем ошибку 500.

ЗаписатьПользователя() - вызывается всегда. Дело в том, что стандартные счетчики на javascript не сработают, потому что многие посетители не дойдут до их загрузки, а предоставляемый многими хостингами WebStat не содержит удобную информацию, поэтому я записываю в базу сам всю нужную информацию:

Дата входа, IP, поисковая система, поисковый запрос, полный referer(если это не поисковая система), станица входы, страница куда ушел. Вообще анализ этой базы полезен весьма, заставляет задуматься, можно понять, когда и в результате чего появляются боты, и так далее.

Остается небольшая часть посетителей, которые не удалось отправить на партнерку, у меня около 10% посетителей ходят по сайтам, среднее "страниц на посетителя" на данный момент 2,4. Опять таки - пусть ПФ мне раскачивают.

А что, тут принято давать реф. ссылки на всякую чушь?
C
На сайте с 10.08.2012
Offline
17
#1

Ого. Превысил 10000 символов.

В общем, пока все. Если заметите ошибки - пишите, исправлю. Надеюсь, что начинающим дорвейщикам эта информация окажется полезной, или хотя бы натолкнет на мысли, а у опытных - все равно нет времени это читать, они же "пашут", или "скучно". С удовольствием подискутирую с дорвейщиками, может сам еще до чего додумаюсь. И, как говориться, "хорошего конверта".

22Striker22
На сайте с 13.04.2008
Offline
143
#2

Допустим, что все, что тут написано - правда. Как тогда разобраться с яндекс.барами и гуглхромами, которые замечательно палят редиректы юзеров?

TrueMediaPartner.com (https://truemediapartner.com/signup.php?id=4884). Download ПП + CPA. Более 10.000 офферов и никакого холда. Выплаты в баксах!
respekto
На сайте с 15.01.2011
Offline
286
#3

Никаких редиректов йопта

Нужны аки адсенс - грузия, молдова, ирландия, литва, британия, стучите в скайп у кого есть на продажу. Bul li ku ta одним словом
garsuk
На сайте с 25.09.2012
Offline
2
#4
respekto:
Никаких редиректов йопта

Что значит без редиректов, хедер локешенал и будет счастье (не факт что владельцу доров, но конкурентам точно), автор все правильно написал.🍿

p.s статья громадная получилось, хватило только что бы выделенное прочитать.

Интересует SeO, Дорвеии, арбитраж, другие виды добычи трафика? Присоединяйся к нам (http://garsuk.ru/forum/) Все в одном месте и без воды, разложено по полкам (уроки, софт, мануалы)
exarh
На сайте с 28.03.2010
Offline
503
#5
chesbeiner:
Код php, который у меня есть, и работает - не просите.

Статья без конкретики - это "вода" и фантазия. Не понравилось!

То,что написано, понятно любому, маломыслящему дорвейщику. Так зачем писать банальщину?

А вот реализовать это, не любой дорвейщик способен. А реализации как раз и нет :(

Монетизируй (https://publishers.propellerads.com/#/pub/auth/signUp?ref_id=tnE) свой сайт с выгодой
C
На сайте с 10.08.2012
Offline
17
#6
22Striker22:
Допустим, что все, что тут написано - правда. Как тогда разобраться с яндекс.барами и гуглхромами, которые замечательно палят редиректы юзеров?

На данный момент я думаю, что на стороне сервера это нереально.

На стороне клиента - возможно.

Вот вам пища для ума:

Проверка на наличие Яндекс.Бара в chrome

<script type="text/javascript">
var img = new Image();
img.src = 'chrome-extension://fhagbjmiadepmhoglihibbpjhleaglhg/bar/options/images/tab/icons/demo.png';
img.onload = function(){alert('Yaba detected!!!')};
img.onerror = function(){alert('Yaba not detected!!!')};
</script>

Вместо алертов можно много чего сделать. Например, если Yaba detected - на безопасную страницу, или не делать редирект. Только чисто серверным редиректом тут уже не обойдешься, придется так:

Серверный редирект на страницу клиентского редиректа (javascript) - проверка на Yaba - если есть Yaba - вернем пользователя на страницу дорвея, пусть там ходит, или дадим ему ошибку 500. Если нет Yaba - пусть идет дальше.

А насчет гуглхрома? Пусть делает что хочет, я про Яндекс. Я не умею делать дорвеи под Гугл.

---------- Добавлено 06.11.2012 в 15:23 ----------

exarh:
Статья без конкретики - это "вода" и фантазия. Не понравилось!

То,что написано, понятно любому, маломыслящему дорвейщику. Так зачем писать банальщину?
А вот реализовать это, не любой дорвейщик способен. А реализации как раз и нет :(

Мне кажется, что реализацию если выложить в паблик, то количество школьников, использующих эти алгоритмы, вырастет раз в тысячу. А это - потенциальные конкуренты, да и поисковые системы постоянно развиваются. Да и реализация у меня - индусский говнокод, потому что я не программист :)

W
На сайте с 10.05.2009
Offline
114
#7

вобщето стоит собрать ип ботов и первую проверку делать по ним, и отдавать нормальное содержимое даже если подписан не как бот, так можно обмануть хитроботов, которые палят клоакинг

C
На сайте с 10.08.2012
Offline
17
#8
wolfston:
вобщето стоит собрать ип ботов и первую проверку делать по ним, и отдавать нормальное содержимое даже если подписан не как бот, так можно обмануть хитроботов, которые палят клоакинг

"хитроботы" не заходят с IP Yandex.Bot 3.0. Единственный способ - это при наличии большого количества доров с общим логом отслеживать и анализировать IP. Кто то заходит на ваши дорвеи с одним и тем же IP и Юзерагентом? В бан, от греха подальше.

Еще вариант - прописывать Куку всем пользователям, которые заходят на сайт. Ну, а дальше так:

<?php
// Проверяем, был ли уже установлен Cookie 'i_love_your_doorways',
// Если да, то читаем его значение,
// И увеличиваем значение счетчика обращений к странице:
if (isset($_COOKIE['Mortal'])) $cnt=$_COOKIE['i_love_your_doorways']+1;
else $cnt=0;
// Устанавливаем Cookie 'i_love_your_doorways' на лет 15
setcookie("i_love_your_doorways",$cnt,0x6FFFFFFF);
echo "<p>Ты был уже на моих дорвеях<b>".@$_COOKIE['i_love_your_doorways']."</b> раз</p>";
header("Location: http://www.site.com/500.html");
exit; //Я кончил
?>

А что касается Yandex.Бара - давно уже пора сделать партнерку, "обновление Яндекс.Бар" с псевдоподписками, и всех, у кого он стоит - на нее. Ибо нех.

zennomen
На сайте с 24.12.2011
Offline
26
#9
chesbeiner:
1. Используя HTTP referer, определяем, откуда посетитель зашел на сайт. Варианта три: $ЭтоСайтПоисковаяСистема, $ЭтоСайтНеПоисковаяСистема, $ПрямойВход
2. Использую USER AGENT определяем тип посетиля. Вариантов много, но я упростил себе задачу: $YaBrowser $ОстальныеБраузеры $МобильныеНеiOs $МобильныеiOS $БраузерНеизвестен, $бот

Дальше можно не читать...

p/s самые легко подменяемые параметры ;)

АПАЧ МНОГОПОТОЧЕН НА МОЕМ АТЛОНЕ! Не знаю пэХАпэ...
C
На сайте с 10.08.2012
Offline
17
#10
zennomen:
Дальше можно не читать...

p/s самые легко подменяемые параметры ;)

Не читай. Пиши.

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий