Тиц и PR сайта парсятся без проблем. Проблемы возникают когда нужно достать количество проиндексированных страниц yandex и google. PHP: $s=new Snoopy(); $s->agent="Mozilla/5.0 (Windows NT 6.1; rv:25.0) Gecko/20100101 Firefox/25.0"; $url="http://www.cy-pr.com/auth/"; $post=array(); $post['AUTH_FORM']='Y'; $post['TYPE']='AUTH'; $post['USER_LOGIN']='login'; $post['USER_PASSWORD']='password'; $post['backurl']='/analysis/novafilm.tv'; $s->submit($url,$post); $s->setcookies(); $res=$s->results; preg_match("#<input.*?name=\"sig\".*?value=\"(.*?)\".*?>#", $res,$match); $sig=$match[1]; $url="http://www.cy-pr.com/analysis/c.php"; $post=array(); $post['sig']=$sig; $post['domain']="novafilm.tv"; $s->submit($url,$post); $res=$s->results; //Тут работает $url="http://www.cy-pr.com/analysis/w.php"; $post=array(); $post['sig']=$sig; $post['domain']="novafilm.tv"; $s->submit($url,$post); $res=$s->results; //Тут работает $url="http://www.cy-pr.com/analysis/b.php"; $post=array(); $post['sig']=$sig; $post['domain']="novafilm.tv"; $s->submit($url,$post); $res=$s->results; //Тут наотрез отказывается. Возвращает пустую строку, хотя ему и куки и юзер агент передаются. Даже и не знаю как он ботов проверяет. Делаю и авторизацию , и куки ставлю, и юзер агент меняю, а все равно разные ответы от такой штуки и браузера. CY и PR получаются без проблем в первом же результате. Проблема исключительно в том что нет возможности получить количество проиндексированных страниц yandex и google. Не понимаю как он палит в скрипте b.php
Возможно полят что ты не хаваешь JS ведь парсер банальный на php. А вообще тебе стоит почитать про xml yandex и google developers под это всё уже миллион лет как есть либы.
ТС, зачем такой гемор? на http://mh-proxy.ru/blog/index.php?mod=read&id=43 можешь так юзать, если хочешь свое то читай исходник и пили под себя
Ну гугл и яндекс по моему не очень любят отдавать количество страниц, который они проиндексировали. ТИЦ и ПР получается без проблем, проблема возникла именно с количеством страниц в индексе. Если есть способ получить кол-во страниц в индексе и не получить миллион капч кроме парсинга cy-pr - скажи как. У тебя пока не о чем необоснованное оскорбление моего г-кода. Там не так все просто, проверят получение js с определенного айпи как то стремно, потому что параллельно с браузера я все js получал...
пикча: http://gyazo.com/ed956477d9aeceb2f68f91c7f6be6c4b.png всё предельно елементарно, без гавнопарсингов разных сервисов которые сами парсят непонятно что и где.
У меня тоже на Yii сделано, но я не понял как достать страницы, проиндексированные гуглом. Что читать надо?
Свиду не скажешь что это Yii у тебя. Вот почитай: http://code.google.com/p/seostats/ PHP: protected function beforeSave() { $this->date = time(); $domain = parse_url($this->domain, PHP_URL_HOST); if(!empty($domain)) { $this->domain = $domain; $this->domain = str_replace('www.', '', $domain); } include_once Yii::app()->basePath.'/extensions/seo/alexa/alexa.php'; include_once Yii::app()->basePath.'/extensions/seo/yandex/yap.php'; include_once Yii::app()->basePath.'/extensions/seo/yandex/cy.php'; include_once Yii::app()->basePath.'/extensions/seo/google/seostats.php'; include_once Yii::app()->basePath.'/extensions/geoip/geoip.inc'; if(empty($this->country)) { $gi = geoip_open(Yii::app()->basePath."/extensions/geoip/GeoIP.dat",GEOIP_STANDARD); $this->country = geoip_country_code_by_name($gi, $this->domain); geoip_close($gi); } if(empty($this->alexa)){ $this->alexa = seo_alexa($this->domain); } if(empty($this->cy)){ $this->cy = seo_yandex_cy($this->domain); } if(empty($this->yapages)){ //$this->yapages = seo_yandex_yap($this->domain); } if(empty($this->pr) | empty($this->gopages)){ $seostats = new SEOstats($this->domain); $google = $seostats->Google(); $this->pr = $google->getPageRank(); $this->gopages = $google->getSiteindexTotal(); } return true; }
b3 Спасибо, вроде разобрался. xml.yandex.ru - отсюда Яндекс считывать? там вроде в стандартную комплектацию не входит ya.ru
Через яндекс бар пробую проверить сайт http://bar-navig.yandex.ru/u?ver=2&url=http://lostfilm.tv&show=1 Отсюда можно достать: 1)ТИЦ 2)Yaca 3)PR Как определить кол-во стран в индексе?
https://github.com/eyecatchup/SEOstats OR PHP: define('GOOGLE_MAGIC', 0xE6359A60); function _zeroFill($a, $b){ $z = hexdec(80000000); if ($z & $a){ $a = ($a>>1); $a &= (~$z); $a |= 0x40000000; $a = ($a>>($b-1)); }else $a = ($a>>$b); return $a; } function _mix($a,$b,$c){ $a -= $b; $a -= $c; $a ^= (_zeroFill($c,13)); $b -= $c; $b -= $a; $b ^= ($a<<8); $c -= $a; $c -= $b; $c ^= (_zeroFill($b,13)); $a -= $b; $a -= $c; $a ^= (_zeroFill($c,12)); $b -= $c; $b -= $a; $b ^= ($a<<16); $c -= $a; $c -= $b; $c ^= (_zeroFill($b,5)); $a -= $b; $a -= $c; $a ^= (_zeroFill($c,3)); $b -= $c; $b -= $a; $b ^= ($a<<10); $c -= $a; $c -= $b; $c ^= (_zeroFill($b,15)); return array($a,$b,$c); } function _GoogleCH($url, $length=null, $init=GOOGLE_MAGIC){ if(is_null($length)) $length = sizeof($url); $a = $b = 0x9E3779B9; $c = $init; $k = 0; $len = $length; while($len >= 12){ $a += ($url[$k + 0] + ($url[$k + 1] << 8) + ($url[$k + 2] << 16) + ($url[$k + 3] << 24)); $b += ($url[$k + 4] + ($url[$k + 5] << 8) + ($url[$k + 6] << 16) + ($url[$k + 7] << 24)); $c += ($url[$k + 8] + ($url[$k + 9] << 8) + ($url[$k + 10] << 16) + ($url[$k + 11] << 24)); $_mix = _mix($a,$b,$c); $a = $_mix[0]; $b = $_mix[1]; $c = $_mix[2]; $k += 12; $len -= 12; } $c += $length; switch($len){ case 11: $c += ($url[$k + 10] << 24); case 10: $c += ($url[$k + 9] << 16); case 9 : $c += ($url[$k + 8] << 8); case 8 : $b += ($url[$k + 7] << 24); case 7 : $b += ($url[$k + 6] << 16); case 6 : $b += ($url[$k + 5] << 8); case 5 : $b += ($url[$k + 4]); case 4 : $a += ($url[$k + 3] << 24); case 3 : $a += ($url[$k + 2] << 16); case 2 : $a += ($url[$k + 1] << 8); case 1 : $a += ($url[$k + 0]); } $_mix = _mix($a,$b,$c); return $_mix[2]; } function _strord($string){ for($i = 0;$i < strlen($string);$i++) $result[$i] = ord($string{$i}); return $result; } function getPageRank($url){ $pagerank = -1; $ch = "6"._GoogleCH(_strord("info:" . $url)); $fp = fsockopen("www.google.com", 80, $errno, $errstr, 30); if($fp){ $out = "GET /search?client=navclient-auto&ch=" . $ch . "&features=Rank&q=info:" . $url . " HTTP/1.1 "; $out .= "Host: www.google.com "; $out .= "Connection: Close "; fwrite($fp, $out); while (!feof($fp)){ $data = fgets($fp, 128); $pos = strpos($data, "Rank_"); if($pos === false){ }else $pagerank = substr($data, $pos + 9); } fclose($fp); } return $pagerank; } VIA: http://stackoverflow.com/questions/7802875/how-can-we-get-the-google-pagerank-through-php-without-third-party-api