парсинг cy-pr

Discussion in 'PHP' started by huntercs16, 23 Jan 2014.

  1. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    Тиц и 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
     
    #1 huntercs16, 23 Jan 2014
    Last edited: 23 Jan 2014
  2. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Возможно полят что ты не хаваешь JS ведь парсер банальный на php. А вообще тебе стоит почитать про xml yandex и google developers под это всё уже миллион лет как есть либы.
     
    _________________________
  3. qaz

    qaz Elder - Старейшина

    Joined:
    12 Jul 2010
    Messages:
    1,546
    Likes Received:
    173
    Reputations:
    75
  4. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    Ну гугл и яндекс по моему не очень любят отдавать количество страниц, который они проиндексировали. ТИЦ и ПР получается без проблем, проблема возникла именно с количеством страниц в индексе.
    Если есть способ получить кол-во страниц в индексе и не получить миллион капч кроме парсинга cy-pr - скажи как. У тебя пока не о чем необоснованное оскорбление моего г-кода.
    Там не так все просто, проверят получение js с определенного айпи как то стремно, потому что параллельно с браузера я все js получал...
     
    #4 huntercs16, 23 Jan 2014
    Last edited: 23 Jan 2014
  5. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    пикча: http://gyazo.com/ed956477d9aeceb2f68f91c7f6be6c4b.png
    всё предельно елементарно, без гавнопарсингов разных сервисов которые сами парсят непонятно что и где.

    [​IMG]
     
    _________________________
  6. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    У меня тоже на Yii сделано, но я не понял как достать страницы, проиндексированные гуглом. Что читать надо?
     
  7. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Свиду не скажешь что это Yii у тебя. Вот почитай:
    http://code.google.com/p/seostats/

    PHP:
        protected function beforeSave()
        {
            
                    
    $this->date time();
                    
                    
                    
    $domain parse_url($this->domainPHP_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;
                    
            }
     
    _________________________
  8. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    b3
    Спасибо, вроде разобрался.
    xml.yandex.ru - отсюда Яндекс считывать? там вроде в стандартную комплектацию не входит ya.ru
     
  9. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    Там сейчас ограничение сделали, лучше парси через яндекс.бар
     
    _________________________
  10. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    b3
    Как это?
     
  11. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    снифай запросы, там через специльный юзерагент можно к яше нашару без капчи обращаться
     
    _________________________
  12. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    b3
    Ещё бы знать как правильно отправить запросы с ya бара в сниффер
     
  13. b3

    b3 Moderator

    Joined:
    5 Dec 2004
    Messages:
    2,041
    Likes Received:
    933
    Reputations:
    199
    жги еще...

    http://ru.wikipedia.org/wiki/Анализатор_трафика
     
    _________________________
  14. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    b3
    Там пакеты хотя бы на 80 порт идут?
     
  15. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    Через яндекс бар пробую проверить сайт
    http://bar-navig.yandex.ru/u?ver=2&url=http://lostfilm.tv&show=1
    Отсюда можно достать:
    1)ТИЦ
    2)Yaca
    3)PR
    Как определить кол-во стран в индексе?
     
  16. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Там нет Google PR.
     
  17. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    <tcy rang="5" value="950"/>
     
  18. BigBear

    BigBear Escrow Service
    Staff Member Гарант - Escrow Service

    Joined:
    4 Dec 2008
    Messages:
    1,770
    Likes Received:
    881
    Reputations:
    859
    Это не PR.
     
    _________________________
  19. huntercs16

    huntercs16 Member

    Joined:
    7 Oct 2013
    Messages:
    140
    Likes Received:
    10
    Reputations:
    6
    Значение rang = значению pr на 5 произвольных сайтах, даже сайт мегафона корректно определяется.
     
  20. VY_CMa

    VY_CMa Green member

    Joined:
    6 Jan 2012
    Messages:
    913
    Likes Received:
    480
    Reputations:
    724
    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 
    $c += ($url[$k 8] << 8);
          case 
    $b += ($url[$k 7] << 24);
          case 
    $b += ($url[$k 6] << 16);
          case 
    $b += ($url[$k 5] << 8);
          case 
    $b += ($url[$k 4]);
          case 
    $a += ($url[$k 3] << 24);
          case 
    $a += ($url[$k 2] << 16);
          case 
    $a += ($url[$k 1] << 8);
          case 
    $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$errstr30);
        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($fp128);
            
    $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
     
    _________________________
    2 people like this.