понедельник, 28 июля 2008 г.

Как заработать на траффике или конвертируем китайцев и дойчландеров в монету.

Как заработать на траффике или конвертируем китайцев и дойчландеров в монету.

На самом деле все началось с того, что начальство решило посмотреть что же такое
счетчик посещений, незнаю на какие ресурсы оно решило сходить (хотя на самом
деле знаю =)) и заявило: "мне интересно знать с каких компьютеров заходят
пользователи", будучи сильно ленивым, спросил, вам нужны характеристики компьтеров?
их частота процессора? видеокарта и объем памяти? =)). Естественно получил,
странно вразумительный ответ: "Из каких городов к нам приходят на сайт? По каким
поисковым запросам нас находят?". Тут у меня настало шоковое состояние, как-то
не охото в пятницу вечером что ли бо делать, да и вообще делать на ПК - ДОСТАЛО
В КОНЕЦ.

До конца рабочего дня шефа оставалось минут 30, пришлось искать методы быстрого
решения "проблеммы". Зайдя в Гугл по запросу: "базы IP по городам России", найдены
были какие-то странно дешевые, аля работающие! и востребованные базы сомнительного
содержания, не раз приходилось покупать в инете дешевые, от производителя,
китайские корпуса для сотовых телефонов....

Благо в интернете существуют места где люди всетаки как-то общаются на адекватные
темы, было найдено 2 каталога IP адресов, один по странам, другой по городам России.
По городам России http://ip2city.ru/ , не знаю на сколько адекватные, но сравнивать
не счем было. Прикрутил к 2ух месячной статистике, построил круговую диаграмму
Шефа сразу обрадовалась... и потом ничего не говорила....

Увидев существования Базы по странам (http://ip-to-country.webhosting.info/)
в душу заползло что-то не понятное, тыкая
сонно в чуже блоги обнаружил на одном из них Добрую Контору, клавиша демо
меня порадовала. Полез смотреть статистику,
какой же очередной алень решил отправить заявление о том как же мы не правильно
работаем. Оказалось что это не алень а китаец =). Чего тебе надобно страче...

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

Мысль мгновенно пролетала и оставила веселый осадок, денежный банный лист - просто
замечательно, китайцам явно нечего делать на русском гос. сервере. В понедельник
уже используя базу ip-to-country и ключевые porno, lesbos англицкие слова, для Yahoo,
соорудил забавный бан лист, для всех инакоязычных Ip адрессов, Yahoo довольно кушал
бан контент, а вот посетителей ждал сюрприз при движении мышкой над данным листом
(вспоминая дыры БК). Контора хорошая, если попал
к ним, то держит крепко на сколько возможно. И китайцы рады и мне забавно.

Ближе к делу.

Сначало нам ведь надо понять действительно ли человек пришел не из россии или
хотябы СНГ, ну т.е понять понимает ли он буковки на кириллице,
для этого надо определить его местонахождение по IP адресу, естественно что
если он пришел через прокси, то его тоже направит туда же куда мы захотим,
но подумав и ответив на вопрос: зачем человек заходит на сайт через прокси сервер?
нормальный человек не будет шифроваться и скрывать свой IP ну незачем ему это,
для него главная цель - найти инормацию или просто посмотреть веселые картинки.

Ну да ладно.

0,95 ШАГ .для этого регистрируемся в Конторе

1 ШАГ.

Нужно взять более менне свежие базы IP адресов, а то окажется что соседа по
дому слил добрым дядькам =)... идем и качаем CVS файл .

2 ШАГ. если хостинГ или это

позволяет использовать PHP + MySQL, то создаем там таблицу вида
(это для файлика all_networks.csv) качать с сайта: http://ip2city.ru/

CREATE TABLE `ip2city_networks` (
`CountryCode` char(2) NOT NULL default '',
`CityID` int(5) NOT NULL default '0',
`IPFrom` double NOT NULL default '0',
`IPTo` double NOT NULL default '0',
`NetName` varchar(75) NOT NULL default '',
KEY `Code` (`IPFrom`,`IPTo`)
);

3 ШАГ создали? Хорошо. Теперь нужно импоритровать скачанный нами файл в нашу табличку:
выполняем sql запрос:

LOAD DATA INFILE '/home/all_netwoks.csv' INTO TABLE `ip2city_networks`
FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

Краткое описание: /home/all_netwoks.csv - это естественно путь где лежит наш
файл, INTO TABLE `ip2city_networks` - вставить в такую-то таблицу данные,
линии разделяются переносом строки.

можно проэксперемментировать в денвере конечно, там удобно это делать.
вот теперь запросом вида:

$sql = 'SELECT CountryCode, CityID, NetName
FROM `ip2city_networks`
WHERE (`IPFrom` < '.$ip_num.') AND ('.$ip_num.'< `IPTo`)';

можно выковыривать оттуда нужные значения... теперь рассмотрим для крутого справочника значений IP 'Это у нас ip-to-country.csv' для него нужно создать немножко другую базу, чтобы в голове ничего не перепуталось названия значений у таблицы будут примерно одинаковые:

CREATE TABLE `ip2w_n`
( `IPFrom` double NOT NULL default '0',
`IPTo` double NOT NULL default '0',
`CountryCode` char(2) NOT NULL default '',
`CityID` char(5) NOT NULL default '0',
`Gos` varchar(75) NOT NULL default '',
KEY `Code` (`IPFrom`,`IPTo`) );

Так вот теперь у нас получилось, табличка, надо засунуть в нее значения. делаем запрос вида: качать с сайта http://ip-to-country.webhosting.info/:

LOAD DATA INFILE '/home/ip-to-country.csv' INTO TABLE `ip2w_n` FIELDS TERMINATED BY ',' ENCLOSED BY '"' LINES TERMINATED BY '\n';

т.к впринципе оба csv файла одинаково скомпановыны, то импорт тоже похож и запрос в БД впринципе тоже похож...

Получилось, что у нас в БД лежат какие-то цыфры с буквами, не все так страшно как мне кажется =)....

Так, надо наверно это куда-то встроить, и помочь добрым китайцам или великой америке получать немножко добра, они любит всякие такие штуки радостные. Т.к лень двигатель прогресса и в данный момент изучать ничего нового не охото будем встраивать в нюку, если есть пожелания встроить это куда-то в другое место пишите... 2.1 ШАГ.... Создание мега коварного тестового блока по захвату вселенной т.к блок - удобный инструмент.... допустим у вас есть блок с какой-нибудь информацией для посетителей или просто реклама, да на самом деле не важно, можно даже и в тело главно скрипта,пусть даже навигация.... создаем файлик: block-dieUSA.php в него запишем: <?php



if (eregi("block-dieUSA.php",$_SERVER['PHP_SELF'])) {

Header("Location: index.php");

die();

}

global $db;

if($result = $db->sql_query("SELECT Gos FROM `ip2w_n`

WHERE (`IPFrom` <= ".ip2long($_SERVER['REMOTE_ADDR']).")

AND (".ip2long($_SERVER['REMOTE_ADDR'])."<= `IPTo`)"))

{

while ($row = $db->sql_fetchrow($result)) {

$content = $row['Gos']."тут есть какая-то чтука"; //наеюсь понятно куда писать магические коды для системы =)

}$db->sql_freeresult($result);} else {$content = "запрос не удался!";}

?>

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

Так теперь модифицируем код для определения присутствия нужного поискового робота:<?php



if (eregi("block-dieUSA.php",$_SERVER['PHP_SELF'])) {

Header("Location: index.php");

die();

}

global $db;

$userag = online_robots(online_skip($_SERVER['HTTP_USER_AGENT']));

if ($userag =="") {

if($result = $db->sql_query("SELECT Gos FROM `ip2w_n` WHERE

(`IPFrom` <= ".sprintf("%u",ip2long($_SERVER['REMOTE_ADDR'])).") AND

(".sprintf("%u",ip2long($_SERVER['REMOTE_ADDR']))."<= `IPTo`)"))

{

while ($row = $db->sql_fetchrow($result)) {

$content = $row['Gos']."";

}$db->sql_freeresult($result);} else {$content = "запрос не удался!";}

} else {$content ="Какой-нибудь ваш добрый контент для робота";}

function online_robots($useragent) {

global $r_or;

$r_or=false;

$remap_agents = array (

'antabot' => 'antabot (private)',

'aport' => 'Aport',

'Ask Jeeves' => 'Ask Jeeves',

'Asterias' => 'Singingfish Spider',

'Baiduspider' => 'Baidu Spider',

'Feedfetcher-Google'=> 'Feedfetcher-Google',

'GameSpyHTTP' => 'GameSpy HTTP',

'GigaBlast' => 'GigaBlast',

'Gigabot' => 'Gigabot',

'Accoona' => 'Google.com',

'Googlebot-Image' => 'Googlebot-Image',

'Googlebot' => 'Googlebot',

'grub-client' => 'Grub',

'gsa-crawler' => 'Google Search Appliance',

'Slurp' => 'Inktomi Spider',

'slurp@inktomi' => 'Hot Bot',

'lycos' => 'Lycos.com',

'whatuseek' => 'What You Seek',

'ia_archiver' => 'Alexa',

'is_archiver' => 'Archive.org',

'archive_org' => 'Archive.org',

'YandexBlog' => 'YandexBlog',

'YandexSomething' => 'YandexSomething',

'Yandex' => 'Yandex',

'StackRambler' => 'Rambler',

'WebAlta Crawler' => 'WebAlta Crawler',

'igdeSpyder' => 'igdeSpyder',

'Yahoo' => 'Yahoo',

'zyborg@looksmart' => 'WiseNut',

'WebCrawler' => 'Fast',

'Openbot' => 'Openfind',

'TurtleScanner' => 'Turtle',

'libwww' => 'Punto',

'msnbot' => 'MSN',

'MnoGoSearch' => 'mnoGoSearch',

'booch' => 'booch_Bot',

'WebZIP' => 'WebZIP',

'GetSmart' => 'GetSmart',

'NaverBot' => 'NaverBot',

'Vampire' => 'Net_Vampire',

'ZipppBot' => 'ZipppBot',

'Begun' => 'Begun Robot Crawler',

'W3C_Validator' => 'W3C Validator',

'W3C_CSS_Validator' => 'W3C CSS Validator',

);

//Список нужных роботов...

$remap_agents=array_change_key_case($remap_agents, CASE_LOWER);

$pmatch_agents="";

foreach ($remap_agents as $k => $v) {

$pmatch_agents.=$k."|";

}

$pmatch_agents=substr_replace($pmatch_agents, '', strlen($pmatch_agents)-1, 1);

if (preg_match( '/('.$pmatch_agents.')/i', $useragent, $match ))

if (count($match)) {

$r_or = @$remap_agents[strtolower($match[1])];

}

return $r_or;

}

function online_skip($text) {

$text=mysql_escape_string($text);

$text=stripslashes($text);

$text = str_replace("'",'`',$text);

$text = str_replace('"','`',$text);

return $text;

}

?>

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

Подобным планом можно подсовывать забугорным ребятам всё, что угодно.
Если отойти от Базы Данных, то можно приспособить естественно функцию и для того,
чтоб сайты своей компании работали на SAPE и LINKFEED, конечно будет немного
нарушение правила размещения ссылок, но все равно на сайте приличной компании
директор смотрит, что находиться на сайте и не даст их размещать =).

Если у сайта маленький тИЦ и PR, то тоже нет смысла иметь скрытые ссылки,
в моей конторе тИЦ - 1800 - не много конечно,
но моим сайтам почему-то дал прирост в 50 тИЦ не ясно почему так много, не волнуйтесь
эти сайты никуда не выкладывал и не кто не знает кто ими правит =)))

ВЫВОДЫ: Поставленная задача была решина в полном объеме и весь драгоценный
забугорный траффик будет перенаправлен на нужную нам страницу.
В принциепе данным методом можно встроить в любую CMS, главное знать метод
формирования. Ну и собственно можно в блок и не встраивать, а в само тело CMS.
Это уже на ваше усмотрение.

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

Сам процесс выборки довольно весомый, время запроса к БД вырастает в 10 раз,
если сайт размещать на платном хостинге, то это не имеет большого смысла так как
для сервера это не будет большой нагрузкой.

В целях малой оптимизации можно удалить из базы Российские, Казахстанские IP адреса.

Как-то странно получается сайты становяться двуличными как люди.....

2 комментария:

Анонимный комментирует...

Это типа клоакинг получается?
Жаль, что ничего в технических тонкостях не понимаю. Но думаю, что ежели сделать на основе этого плагин для WP, покупаться должен хорошо.

ADRE комментирует...

ну да это ориентированный клоакинг, только для тех кто не нужен, если для WP интересует будем значит лепить -)

Тык Тык UpToLike