написал скриптик который мониторит сайты по ключевым фразам результат работы: Код (Text): php.net Yandex php ggggg php.net Google php gg php.net Rambler php gg php.ru Yandex php gg php.ru Google php gggg php.ru Rambler php gg phpclub.ru Yandex php gg phpclub.ru Google php gg phpclub.ru Rambler php gg php.spb.ru Yandex php gg php.spb.ru Google php gggggg php.spb.ru Rambler php gggggg php.su Yandex php gg php.su Google php gg php.su Rambler php gg Фраза Yandex Google Rambler php.net php 40 2 1 php.ru php 7 22 11 phpclub.ru php 3 4 3 php.spb.ru php 2 0 42 php.su php 4 7 15 кому интересно могу выложить
Горбунов Олег основа не моя... просто причесал, потестил... Код (PHP): <?php /** * * 2008 (с) 440hz * * распространяется бесплатно на любых условиях. * =) * */ require_once('./tools.inc'); // список сайтов для мониторинга $sites = array(); $sites[] = 'php.net'; $sites[] = 'php.ru'; $sites[] = 'phpclub.ru'; //$sites[] = 'www.phpconf.ru'; //$sites[] = 'www.phpworld.ru'; //$sites[] = 'www.phpinside.ru'; $sites[] = 'php.spb.ru'; $sites[] = 'php.su'; //$sites[] = 'phpc.ru'; //$sites[] = 'php-ru.info'; //$sites[] = 'php.yar.ru'; //$sites[] = 'php.com.ua'; //$sites[] = 'www.phpforum.ru'; //$sites[] = 'www.php-mail.ru'; // список ключевых фраз $words = array(); $words[] = 'php'; //$words[] = 'mysql'; //$words[] = 'apache'; //$words[] = 'установка php mysql apache'; //$words[] = 'отправка почты на php'; //$words[] = 'cms на php'; //$words[] = 'cmf на php'; //$words[] = 'скрипты на php'; //$words[] = 'классы на php'; // глубина поиска в страницах $depth = 5; // сбор результатов $tab = array(); // список поисковиков для вывода результатов $se = array(); foreach($sites as $site) { reset($words); foreach($words as $word) { $pos = MYandex($site,$word,$depth); list($s,$w,$n,$u) = $pos; $se[$s] = true; $tab[$site][$w][$s] = $n; $pos = MGoogle($site,$word,$depth); list($s,$w,$n,$u) = $pos; $se[$s] = true; $tab[$site][$w][$s] = $n; $pos = MRambler($site,$word,$depth); list($s,$w,$n,$u) = $pos; $se[$s] = true; $tab[$site][$w][$s] = $n; } } // размер колонки фраз $tablen1 = 40; // размер колонки данных $tablen2 = 8; print("\n\n\n"); print(OOPSStr2Txt('фраза',$tablen1,0)); foreach($se as $sk => $sv) { print(OOPSStr2Txt($sk,8,2)); } print("\n"); foreach($tab as $sitek => $sitev) { print(OOPSStr2Txt($sitek,$tablen1+$tablen2*3,2)); reset($sitev); foreach($sitev as $wk => $wv) { print("\n"); print(OOPSStr2Txt($wk,$tablen1)); reset($wv); foreach($wv as $vk => $vv) { print(OOPSStr2Txt($vv, ($tablen2-2),1).' '); } } print("\n"); } print("\n"); ?>[/php] tools.inc [php]<?php /** * Запрос страницы с информацией */ function GetPage($url,&$refer='',&$agent='',&$cookies='',$alive='',$ip='') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_COOKIE, $cookies); $result = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); // все ок if($info['http_code'] == 200) { Progress('g'); return $result; } /* // редирект. перейдем туда.... if($info['http_code'] == 302) { if(preg_match("/Location:\s*(.*)/i",$result,$rs)) { Progress('l'); $refer = $url; $result = GetPage($rs[1],$refer,$agent,$cookies,$alive,$ip); print $result; exit(); } } */ print_r($info); print_r($result); exit(); } /** * Получение статистки с Яндекса */ function MYandex($site,$word,$depth=10) { $search = 'Yandex'; Notify($search,$site,$word); $agent = GetAgent(); $refer = ''; $cookies = ''; $alive = ''; $target = GetPage('http://www.yandex.ru',$refer,$agent,$cookies,$alive); $pos = array($search,$word,0,''); for($p=0;$p<$depth;$p++) { // Progress($p); // sleep(rand(0,10)); $result = GetPage ( "http://www.yandex.ru/yandsearch?p=".$p."&text=".urlencode($word)."&rpt=rad", $refer,$agent,$cookies,$alive ); $ret = GetYandexResult($site,$result,$word,$p); if($ret) { list($num,$url) = $ret; $pos = array($search,$word,$num,$url); break; } } return $pos; } /** * Получение данных со страницы Яндекса */ function GetYandexResult($site,&$cnt,$key,$p) { preg_match("/<ol class=\"results\".*?>(.*?)<\/ol>/is",$cnt,$rs); if(strlen($rs[1])<1) return false; preg_match_all("/<a tabindex=\"\d+\" onclick=\".*?\" href=\"(.*?)\".*?>/is",$rs[1],$res); if(sizeof($res[1])<1) return false; reset($res[1]); while(list($i,$vl)=each($res[1])){ if(strstr($vl,$site)) { return array(($i+1)+($p*10),$vl); } } return false; } /** * Запрос страницы с информацией с Гугла */ function MGoogle($site,$word,$depth=1) { $search = 'Google'; Notify($search,$site,$word); $agent = GetAgent(); $refer = ''; $cookies = ''; $alive = ''; $target = GetPage('http://www.google.ru',$refer,$agent,$cookies,$alive); $pos = array($search,$word,0,''); for($p=0;$p<$depth;$p++) { // Progress($p); // sleep(rand(0,10)); $result = GetPage ( "http://www.google.ru/search?hl=ru&q=".urlencode($word)."&complete=1&hl=ru&lr=&newwindow=1&start=".(10*$p)."&sa=N", $refer,$agent,$cookies,$alive ); $ret = GetGoogleResult($site,$result,$word,$p); if($ret) { list($num,$url) = $ret; $pos = array($search,$word,$num,$url); break; } } return $pos; } /** * Получение данных о страницы Гугла */ function GetGoogleResult($site,&$cnt,$key,$p){ preg_match_all("/<h2 class=r><a href=\"http:\/\/(.*?)\" target=_blank class=l([^>]*)>/is",$cnt,$res); if(sizeof($res[1])<1) return false; reset($res[1]); while(list($i,$vl)=each($res[1])){ if(strstr($vl,$site)) { return array(($i+1)+($p*10),$vl); } } return false; } /** * Запрос страницы с информацией с Рамблера */ function MRambler($site,$word,$depth=1) { $search = 'Rambler'; Notify($search,$site,$word); $agent = GetAgent(); $refer = ''; $cookies = ''; $alive = ''; $target = GetPage('http://www.rambler.ru',$refer,$agent,$cookies,$alive); $pos = array($search,$word,0,''); for($p=0;$p<$depth;$p++) { // Progress($p); // sleep(rand(0,10)); $result = GetPage ( "http://www.rambler.ru/srch?oe=1251&set=www&words=".urlencode($word)."&start=".(15*$p), $refer,$agent,$cookies,$alive ); $ret = GetRamblerResult($site,$result,$word,$p); if($ret) { list($num,$url) = $ret; $pos = array($search,$word,$num,$url); break; } } return $pos; } /** * Получение данных со страницы Рамблера */ function GetRamblerResult($site,&$cnt,$key,$p){ preg_match_all("/<div\s*class=\".*?\"><a onclick=\"R\(.*?\)\" href=\"(.*?)\".*?>/is",$cnt,$res); if(sizeof($res[1])<1) return false; reset($res[1]); while(list($i,$vl)=each($res[1])){ if(strstr($vl,$site)) { return array(($i+1)+($p*10),$vl); } } return false; } /** * Форматирование текста на выводе */ function OOPSStr2Txt($str,$len,$align=0) { $spacer = ' '; if(strlen($str) > $len) { return substr($str,0,$len); } else { switch($align) { // вправо case 1: return str_repeat($spacer,$len-strlen($str)).$str; // центр case 2: $d1 = intval(($len-strlen($str))/2); if($d1 != ($len-strlen($str))/2 AND $d1 != 0) $d1--; $d2 = $len - ($d1 + strlen($str) ); $ret = ''; if($d1) $ret = $ret.str_repeat($spacer,$d1); $ret = $ret.$str; if($d2) $ret = $ret.str_repeat($spacer,$d2); return $ret; // влево default: return $str.str_repeat($spacer,$len-strlen($str)); } } } /** * Получить агента от которого работаем */ function GetAgent() { static $agent = false; $agents = array( 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.1) Gecko', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon 2.0', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.54', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET)', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1a2) Gecko', 'Opera/8.54 (Windows NT 5.1; U; ru)', 'Opera/9.00 (Windows NT 5.1; U; ru)', 'Opera/9.00 (Windows NT 5.2; U; ru)' ); if(!$agent) $agent = $agents[array_rand($agents,1)]; return $agent; } /** * Вывод процесса работы */ function Notify($search,$site,$word) { print("\n".OOPSStr2txt($site,20)." ".OOPSStr2txt($search,8)." ".OOPSStr2txt($word,30)." "); } function Progress($p='') { // print($p.' '); print($p); } ?> вот еще прогнал. переводить тока не стал в коировки. Код (Text): C:\wwwroot\monitoring.440hz.ru\check>php index.php php.ru Yandex php gg php.ru Google php gggg php.ru Rambler php gg php.ru Yandex mysql gggggg php.ru Google mysql gggggg php.ru Rambler mysql gggggg php.ru Yandex apache ggggg php.ru Google apache ggggg php.ru Rambler apache gggggg php.ru Yandex єёЄрэютър php mysql apache gg php.ru Google єёЄрэютър php mysql apache ggg php.ru Rambler єёЄрэютър php mysql apache ggggg ЇЁрчр Yandex Google Rambler php.ru php 7 23 11 mysql 0 0 0 apache 32 38 0 єёЄрэютър php mysql apache 1 12 35
Афигеть... Почему бы так не сделать: PHP: <?php function GetAgent() { static $agents; if (!isset($agents)) $agents = array( 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.1) Gecko', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon 2.0', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; ru) Opera 8.54', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET)', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.0.4) Gecko', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MyIE2', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; en) Opera', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)', 'Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.2; en) Opera', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.7.12) Gecko', 'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1a2) Gecko', 'Opera/8.54 (Windows NT 5.1; U; ru)', 'Opera/9.00 (Windows NT 5.1; U; ru)', 'Opera/9.00 (Windows NT 5.2; U; ru)' ); return $agents[array_rand($agents)]; } ?>
сеошники тебя за такие вопросы убьют! =) это же их хлеб что б народу впаривать, мол топ10 Яндекса - это почетно! p.s. в общем все мы любим членами мерятся... они на этом и играют. p.p.s. вот этот скрипт и меряет длину члена. Код (Text): C:\wwwroot\monitoring.440hz.ru\check>php index.php 440hz.ru Yandex 440hz gg 440hz.ru Google 440hz gggggg 440hz.ru Rambler 440hz gg Фраза Yandex Google Rambler 440hz.ru 440hz 1 0 3 вот по яндексу у меня самый болшой. гугл на меня забил, а рамблер меня за человека не считает. сеошник по этим цифрам может срубить около 1000$.
о как интересно Код (Text): C:\wwwroot\monitoring.440hz.ru\check>php index.php 440hz.ru Yandex 440hz gg 440hz.ru Google 440hz gg 440hz.ru Rambler 440hz gg ЇЁрчр Yandex Google Rambler 440hz.ru 440hz 1 2 3 а теперь я в гугле на 2-ом... однко все меняется...
440Hz, топ10 яндекса это не только почётно, но и прибыльно. А СЕОшники не столько впаривают свои услуги, сколько пытаются понять как лучше получить требуемый результат не зная на 100% алгоритма работы поисковика.
да. по определенным фразам... =) просто меня задолбали прость такого рода скрипты. вот я и выложил... заодно потренировался.
440Hz, талантливый маркетолог извлечёт прибыть из любой фразы Потренировался в чём? В расстановке отступов и комментариев?
Спасибо за скрипт! ) По прямому назначению он мне пока врядли понадобиться, но изучать готовые и НЕ БОЛЬШИЕ скрипты для новичка, это самое оно!
Вас сервер перенаправляет на тот же урл, только без www. Обратите внимание, это - ваш запрос Код (Text): [url] => http://www.yandex.ru/yandsearch?p=0&text=php&rpt=rad А вот сюда вас сервер отправил: Код (Text): Location: http://yandex.ru/yandsearch?p=0&text=php&rpt=rad 301 ответ сервера означает постоянное перенаправление.
Получается, что кто-то типа Yandex поменял алгоритм своей работы. Вот и все. У поисковиков это частенько бывает.
на счет 301 там просто закоменчено. посмотрите код внимательнее. не будьте дебилами? PHP: <? function GetPage($url,&$refer='',&$agent='',&$cookies='',$alive='',$ip='') { $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_HEADER, 1); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); curl_setopt($ch, CURLOPT_REFERER, $refer); curl_setopt($ch, CURLOPT_USERAGENT, $agent); curl_setopt($ch, CURLOPT_COOKIE, $cookies); $result = curl_exec($ch); $info = curl_getinfo($ch); curl_close($ch); // все ок if($info['http_code'] == 200) { Progress('g'); return $result; } // редирект. перейдем туда.... if($info['http_code'] == 302 OR $info['http_code'] == 301) { if(preg_match("/Location:\s*(.*)/i",$result,$rs)) { Progress('l'); $refer = $url; $result = GetPage($rs[1],$refer,$agent,$cookies,$alive,$ip); return $result; exit(); } } print_r($info); print_r($result); exit(); } ?>
толко что прогнал с раскоменченным куском hosting(440hz):~/monitor$>php index.php Код (Text): php.net Yandex php glg php.net Google php gggggg php.net Rambler php gg php.ru Yandex php glg php.ru Google php gggggg php.ru Rambler php gg phpclub.ru Yandex php glg phpclub.ru Google php gggggg phpclub.ru Rambler php gg фраза Yandex Google Rambler php.net php 2 0 1 php.ru php 3 0 10 phpclub.ru php 6 0 5