Реклама на сайте Advertise with us

Скрипт для определения ПР на пхп

Расширенный поиск по форуму
 
Новая тема Новая тема   
Автор
Поиск в теме:

Самый добрый бегемот

С нами с 24.06.03
Сообщения: 954
Рейтинг: 574

Ссылка на сообщениеДобавлено: 06/07/06 в 09:30       Ответить с цитатойцитата 

А никто не богат таким чудесным скриптом? А что что-то все старые варианты, использующие доступ к http://www.google.com/search?client=navclient-auto&ch=6-1346677…domainname теперь почему-то не работает и говорит 403 Forbidden icon_sad.gif

0
 



С нами с 28.09.05
Сообщения: 98
Рейтинг: 56

Ссылка на сообщениеДобавлено: 06/07/06 в 13:42       Ответить с цитатойцитата 

Код:
<?php
header("Content-Type: text/plain; charset=utf-8");
define('GOOGLE_MAGIC', 0xE6359A60);

//unsigned shift right
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)              /* all the case statements fall through */
   {
       case 11: $c+=($url[$k+10]<<24);
       case 10: $c+=($url[$k+9]<<16);
       case 9 : $c+=($url[$k+8]<<8);
         /* the first byte of c is reserved for the length */
       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]);
        /* case 0: nothing left to add */
   }
   $mix = mix($a,$b,$c);
   /*-------------------------------------------- report the result */
   return $mix[2];
}

//converts a string into an array of integers containing the numeric value of the char
function strord($string) {
   for($i=0;$i<strlen($string);$i++) {
       $result[$i] = ord($string{$i});
   }
   return $result;
}


// converts an array of 32 bit integers into an array with 8 bit values. Equivalent to (BYTE *)arr32

function c32to8bit($arr32) {
   for($i=0;$i<count($arr32);$i++) {
       for ($bitOrder=$i*4;$bitOrder<=$i*4+3;$bitOrder++) {
           $arr8[$bitOrder]=$arr32[$i]&255;
           $arr32[$i]=zeroFill($arr32[$i], 8);
       }     
   }
   return $arr8;
}


// http://www.example.com/ - Checksum: 6540747202
$url = 'info:'.$_GET['url'];
print("url:\t{$_GET['url']}\n");
$ch = GoogleCH(strord($url));
printf("Checksum <2.0.114:\t6%u\n",$ch);

$ch=sprintf("%u", $ch);
// new since Toolbar 2.0.114

$ch = ((($ch/7) << 2) | (((int)fmod($ch,13))&7));

$prbuf = array();
$prbuf[0] = $ch;
for($i = 1; $i < 20; $i++) {
     $prbuf[$i] = $prbuf[$i-1]-9;
}
$ch = GoogleCH(c32to8bit($prbuf), 80);
//

printf("Checksum >=2.0.114:\t6%u\n",$ch);
?>

3
 

Самый добрый бегемот

С нами с 24.06.03
Сообщения: 954
Рейтинг: 574

Ссылка на сообщениеДобавлено: 07/07/06 в 09:34       Ответить с цитатойцитата 

Cпасибо, сегодня попробую.
Надеюсь это оно icon_smile.gif

0
 

mafiozo

С нами с 17.02.06
Сообщения: 1392
Рейтинг: 240

Ссылка на сообщениеДобавлено: 07/07/06 в 10:13       Ответить с цитатойцитата 

у меня не работает...

добавлено: а вот это работает...

0
 

Самый добрый бегемот

С нами с 24.06.03
Сообщения: 954
Рейтинг: 574

Ссылка на сообщениеДобавлено: 07/07/06 в 12:24       Ответить с цитатойцитата 

solidus писал:
у меня не работает...
добавлено: а вот это работает...

твой у меня не заработал
пишет
Warning: fopen(http://www.google.com/search?client=navclient-auto&ch=62762689587&features=Rank&q=info:http://www.domain.com): failed to open stream: HTTP request failed! HTTP/1.0 403 Forbidden in /pr1.php on line 99

попробую проверить скрипт первого ответившего icon_smile.gif

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 07/07/06 в 12:25       Ответить с цитатойцитата 

скромные наработки
Код:

class genericSEO
{
   var $proxy = array();
   var $use_proxy = false;
   var $sockets = null;
   var $socket_error = '';

   function setProxies($proxies=array())
   {
      if (is_array($proxies))
      {
         if (count($proxies)>0)
         {
            $this->use_proxy=true;
            $this->proxy=$proxies;
         }
      }
      return;
   }
   
   function getProxy()
   {
      return $this->proxy[rand(0,count($this->proxy)-1)];
   }
   
   function prepareProxy()
   {
      if ($this->use_proxy)
      {
         $proxy=$this->getProxy();
         $proxy=explode(':',$proxy,2);
         if ($proxy[0]!='')
         {
            $proxy[1]=$proxy[1]>0?$proxy[1]:80;
            $this->sockets->setProxy($proxy[0],$proxy[1]);
         }
      }
      return;
   }
}


class Google extends genericSEO
{
   var $url_query = "http://www.google.com/search?client=navclient-auto&ch=6%u&features=Rank&q=%s";
   
   function Google()
   {
      $this->sockets=new clsURL();   
   }
   
   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 ^= ($this->zeroFill($c,13));
       $b -= $c; $b -= $a; $b ^= ($a<<8);
       $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,13));
       $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,12));
       $b -= $c; $b -= $a; $b ^= ($a<<16);
       $c -= $a; $c -= $b; $c ^= ($this->zeroFill($b,5));
       $a -= $b; $a -= $c; $a ^= ($this->zeroFill($c,3));
       $b -= $c; $b -= $a; $b ^= ($a<<10);
       $c -= $a; $c -= $b; $c ^= ($this->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 = $this->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 = $this->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 get_pr($url)
   {
       $result=array("",-1);

       if(($url.""!="")&&($url.""!="http://")):
           if(substr(strtolower($url),0,7)!="http://"):
               $url="http://".$url;
           endif;

           $url="info:".$url;
           $checksum=$this->GoogleCH($this->strord($url));
           // url to get from google
           $google_url=sprintf($this->url_query,$checksum,$url);

           $contents="";
         $this->prepareProxy();
         $this->sockets->resetRedir();
           $res=$this->sockets->Grab($google_url,'',5);
           if ($res['ERROR']!='')
           {
              $this->socket_error=$res['ERROR'];
              return false;
           }
           $contents=$res['CONTENT'];
/*           $handle = fopen($google_url, "rb");
           $contents = '';
           while(!feof($handle))
           {
               $contents.= fread($handle, 8192);
           }
           fclose($handle);*/
           $p=explode(":",$contents);
           if(isset($p[2])):
               $result[1]=$p[2];
           endif;
       endif;
       return $result;
   }

   function detectPRwww($url)
   {
       if(eregi('^http://www\.',$url))
       {
           $url_www = str_replace('http://www\.','http://',$url);
       }
       else
       {
           $url_www = str_replace('http://','http://www\.',$url);
       }
       $pr=$this->get_pr($url);
       if ($pr === false)
      {
         return -1;
      }
       $output=$pr[0];
       $pagerank=$pr[1];
       sleep(1);
       $pr=$this->get_pr($url_www);
       if ($pr === false)
      {
         return -1;
      }
       $output_www=$pr[0];
       $pagerank_www=$pr[1];
       if($pagerank<$pagerank_www)
       {
           $pagerank=$pagerank_www;
       }
       if ($pagerank==-1)
       {
           $pagerank=0;
       }
       return intval($pagerank);
   }
   
   function detectPR($url)
   {
      $url=trim($url);
      $pr=$this->get_pr($url);
      if ($pr === false)
      {
         return -1;
      }
      $pagerank=$pr[1];
       if ($pagerank==-1)
       {
           $pagerank=0;
       }
       return intval($pagerank);      
   }
}

3
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 07/07/06 в 12:30       Ответить с цитатойцитата 

А... ну и поюзать как
Код:

$google=new Google();
$url="'http://all-sex-links.com/'";
$pr=$google->detectPR($url);
echo " PR for '$url' is $pr";

0
 

Самый добрый бегемот

С нами с 24.06.03
Сообщения: 954
Рейтинг: 574

Ссылка на сообщениеДобавлено: 07/07/06 в 12:57       Ответить с цитатойцитата 

Pentarh писал:
А... ну и поюзать как
Код:

$google=new Google();
$url="'http://all-sex-links.com/'";
$pr=$google->detectPR($url);
echo " PR for '$url' is $pr";


такой красивый скриптик.
вопрос: что вот это такое: $this->sockets=new clsURL();
ругается на нее вот так
Fatal error: Cannot instantiate non-existent class: clsurl in /pr3.php on line 50
может класс надо было где-то прописать до этого?

0
 

Самый добрый бегемот

С нами с 24.06.03
Сообщения: 954
Рейтинг: 574

Ссылка на сообщениеДобавлено: 08/07/06 в 00:39       Ответить с цитатойцитата 

Ау. Есть идея как скрипт Пентарха заставить работать?

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 08/07/06 в 12:14       Ответить с цитатойцитата 

Код:
class clsURL
{
   var $myHeaders = array();  //Дополнительные хэадеры при запросе
   var $myProxy_host = '';
   var $myProxy_port = '';
   var $useProxy   = false;
   var $redir_times = 0;
   var $redir_max = 0;

   function clsURL()
   {

   }
   
   function setProxy($host,$port)
   {
      if ($host!='' && $port > 0)
      {
         $this->myProxy_host=$host;
         $this->myProxy_port=$port;
         $this->useProxy=true;
      }
      return;
   }
   
   function setUseProxy($flag)
   {
      if ($flag)
      {
         $this->useProxy=true;
         return;
      }
      $this->useProxy=false;
      return;
   }

   function AddHeader($name, $val)
   {
      if (!ereg("^[\r\n\t ]*$",$name) && !ereg("^[\r\n\t ]*$",$val))
         $this->myHeaders[$name]=$val;
   }

   function RemoveHeader($name)
   {
      if (!ereg("^[\r\n\t ]*$",$name) && isset($this->myHeaders[$name]))
         unset($this->myHeaders[$name]);
   }

   function ClearHeaders()
   {
      $this->myHeaders=array();
   }

   function ParseHeaders($headers)
   {
      //Get the result
      $headers_1=explode("\r\n",$headers,2);
      $result=false;
      if (is_array($headers_1))
      {
         $result=array();
         $result['cookies']=array();
         $cookies=0;
         $res=trim($headers_1[0]);
         $headers=trim($headers_1[1]);
         if (eregi('^HTTP/1\.[01]{1}[ ]+([0-9]+)[ ]+(.*)$',$res,$regs))
         {
            $result["HTTP_RESULT"]=$regs[1];
            $result["HTTP_RESULT_MESSAGE"]=$regs[2];
            $headers_1=explode("\r\n",$headers);
            if (is_array($headers_1))
            {
               reset($headers_1);
               while (list(,$v)=each($headers_1))
               {
                  $res=explode(":",$v,2);
                  if (is_array($res))
                  {
                     if (strtolower($res[0])!='set-cookie')
                     {
                        $result[strtolower(trim($res[0]))]=trim($res[1]);
                     }
                     else
                     {
                        $cookie=explode(';',trim($res[1]));
                        $cookie_name='';
                        for (reset($cookie); list($cookie_key,$cookie_part)=each($cookie);)
                        {
                           if ($cookie_key==0)
                           {
                              $tmp=explode('=',$cookie_part,2);
                              $cookie_name=trim($tmp[0]);
                              $result['cookies'][$cookie_name]=array('value'=>trim($tmp[1]));
                           }
                           else
                           {
                              $tmp=explode('=',$cookie_part,2);
                              $result['cookies'][$cookie_name][trim(strtolower($tmp[0]))]=trim($tmp[1]);
                           }
                        }
                     }
                  }
               }
            }
         }
      }
      return $result;
   }

   function ParseResponse($response)
   {
      $result=false;
      $response_1=explode("\r\n\r\n",$response,2);
      if (is_array($response_1))
      {
         $response=$response_1[1];
         $headers=trim($response_1[0]);
         unset($response_1);
         $result=array();
         $result["HEADERS"]=$this->ParseHeaders($headers);
         if (!is_array($result["HEADERS"]))
            return false;
         if ($result["HEADERS"]["HTTP_RESULT"]=="200")
         {
            if (eregi("chunked",$result["HEADERS"]["transfer-encoding"]))
            {
               $result["CONTENT"]="";
               do
               {
                  $response_1=explode("\r\n",$response,2);
                  $response=$response_1[1];
                  $chunk=$response_1[0];
                  unset($response_1);
                  if (eregi('^([0-9a-fA-F]+)',$chunk,$regs))
                  {
                     $chunk=$regs[1];
                     eval("\$chunk_size=0x{$chunk};");
                     if ($chunk_size<=0) break;
                     $result["CONTENT"].=substr($response,0,$chunk_size);
                     $response=substr($response,$chunk_size+2);
                  } else break;
               }while (true);
            }
            else
            {
               $result["CONTENT"]=$response;
            }
         }
         else
         {
            $result["CONTENT"]="";
         }
      }
      return $result;
   }

   function LocateDocument($base,$document)
   {
      //Преобразовывает отностительный путь в абсолютный
      //Ссылки типа /folder/../document преобразует в http://domain.com/folder/../document, а не в http://domain.com/document (хотя по сути одно и то же)
      //Base should be with trailing slash
      $document=trim($document);
      $base=trim($base);
      if (ereg("^(http|https|ftp)://",$document))
         return $document;
      $base_1=parse_url($base);
      $path=($base_1["path"]=="")?"/":$base_1["path"];

      $path=preg_replace('#/[^/.]+\.[^/]*$#','/',$path);

      if (substr($path,-1)!="/") $path.="/";
      if (substr($document,0,1)=="/")
         return $base_1["scheme"].'://'.$base_1["host"].($base_1["port"]!=""?":".$base_1["port"]:"").$document;
      return $base_1["scheme"].'://'.$base_1["host"].($base_1["port"]!=""?":".$base_1["port"]:"").$path.$document;
   }

   function DocBelongs($server,$doc)
   {
      //Проверяет принадлежность документа серверу
      $doc=trim($doc);
      $server=trim($server);
      $i_server=parse_url($server);
      if (!ereg("^(http|https)://",$doc))
         return true;
      $i_doc=parse_url($doc);
      $port1=($i_server["port"]=="")?"80":$i_server["port"];
      $port2=($i_doc["port"]=="")?"80":$i_doc["port"];
      $host1=eregi_replace("^www\\.","",$i_server["host"]);
      $host2=eregi_replace("^www\\.","",$i_doc["host"]);
      return ($host1==$host2 && $port1==$port2);
   }

   function DoConnect($domain,$port,$query)
   {
      $res["RESULT"]=false;
      $res["RESPONSE"]="";
           
      $f=@fsockopen($domain,$port,$errno,$errstr);
      if (!$f)
      {
         $res["RESPONSE"]="Can't open socket. Error code \"$errno\". Error: $errstr.";
         return $res;
      }
       
      if (@fputs($f,$query)==-1)
      {
         @fclose($f);
         $res["RESPONSE"]="Can't send query!";
         return $res;
      }

      while (!feof($f))
         $res["RESPONSE"].=fread($f,4096);

      @fclose($f);
      $res["RESULT"]=true;
      return $res;
   }

   function CreateParameters($url,$method,$body="")
   {
      $method=strtoupper($method);

      if (!$this->useProxy)
      {
         $this->AddHeader("Accept","*/*");
         $this->AddHeader("Accept-Language","en-us");
         $this->AddHeader("Connection","close");
         $this->AddHeader("Cache-Control","max-age=0");
         $this->AddHeader("Accept-Charset", "ISO-8859-1, utf-8;q=0.66, *;q=0.66");
         $this->AddHeader("Accept", "text/xml,application/xml,application/xhtml+xml,text/html;q=0.9,text/plain;q=0.8,video/x-mng,image/png,image/jpeg,image/gif;q=0.2,text/css,*/*;q=0.1");   
      }

      if ($method=='POST')
      {
         $this->AddHeader("Content-Type","application/x-www-form-urlencoded");
         $this->AddHeader("Content-Length",strlen($body));
      }

      $result["url_parts"]=array();
      $result["domain"]="";
      $result["script"]="";
      $result["port"]="";
      $result["folder"]="";
      $result["full_folder"]="";
      $result["query"]="";
       
      if (!eregi("^http://([^/]+)/?(.*)",$url))
         return "Invalid URL: ".$url;
       
      $result["url_parts"]=parse_url($url);
       
      $result["domain"]=$result["url_parts"]["host"];
       
      $result["script"]=$result["url_parts"]["path"]==""?"/":$result["url_parts"]["path"];
       
      $result["script"].=$result["url_parts"]["query"]==""?"":"?".$result["url_parts"]["query"];
       
      $result["port"]=$result["url_parts"]["port"]==""?80:$result["url_parts"]["port"];
       
      $pos=strrpos($result["script"],"/");
      if ($pos===false)
         $result["folder"]="";
      else
         $result["folder"]=substr($result["script"],0,$pos);
       
      if (substr($result["folder"],-1)!="/") $result["folder"].="/";
       
      $pos=strrpos($url,"/");
      if ($pos===false)
         $result["full_folder"]="";
      else
         $result["full_folder"]=substr($url,0,$pos);
       
      if (substr($result["full_folder"],-1)!="/") $result["full_folder"].="/";

      $addheaders='';
   
      if (is_array($this->myHeaders))
      {
         reset($this->myHeaders);
         while (list($k,$v)=each($this->myHeaders))
            $addheaders.="{$k}: {$v}\r\n";
      }
      if (!$this->useProxy)
      {
         $result["query"]="$method ".$result["script"]." HTTP/1.1\r\nHost: ".$result["domain"]."\r\n{$addheaders}\r\n{$body}";
      }
      else
      {
         $result["query"]="$method ".$url." HTTP/1.0\r\nHost: ".$result["domain"]."\r\n{$addheaders}\r\n{$body}";
      }
      
      return $result;
   }
   
   function resetRedir()
   {
      $this->redir_times=0;
      return ;
   }

   function Grab($url,$referer='',$redir_max=0)
   {
      if ($redir_max>0)
      {
         $this->redir_max=$redir_max;
      }
      if ($this->redir_times > $this->redir_max && $this->redir_max > 0)
      {
         return array("ERROR"=>'Max redirects reached');
      }
      
      $out=array();
       
      if ($referer!='')
      {
         $this->AddHeader("Referer",$referer);
      }
      $this->AddHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4)");
      $result=$this->CreateParameters($url,"get","");
       
      if (!is_array($result))
      {
         $out['ERROR']=$result;
         return $out;
      }
       
      //print_r($result);
      if (!$this->useProxy)
      {
         $server_res=$this->DoConnect($result['domain'],$result['port'],$result['query']);
      }
      else
      {
         $server_res=$this->DoConnect($this->myProxy_host,$this->myProxy_port,$result['query']);
      }
       
      if ($server_res["RESULT"]===false)
      {
         $out['ERROR']=$server_res["RESPONSE"];
         return $out;
      }
       
      $response=$this->ParseResponse($server_res["RESPONSE"]);
       
      if ($response['HEADERS']['location']!='')
      {
         if ($this->redir_max>0)
         {
            $this->redir_times++;
            return $this->Grab($url,$referer,$redir_max);
         }
         $out['ERROR']='redir to '.$this->LocateDocument($url,$response['HEADERS']['location']);
         $out['HEADERS']=$response['HEADERS'];         
         $out['URL']=$this->LocateDocument($url,$response['HEADERS']['location']);
         return $out;
      }
       
      if (intval($response['HEADERS']['HTTP_RESULT'])!=200 || trim($response['CONTENT'])=='')
      {
         $out['ERROR']='non-200 response or empty response';
         $out['HEADERS']=$response['HEADERS'];
         return $out;
      }
       
      $out['CONTENT']=trim($response['CONTENT']);
      $out['HEADERS']=$response['HEADERS'];
      $out['ERROR']='';
      return $out;
   }

   function GrabPOST($url,$referer='',$body)
   {
      $out=array();
       
      if ($referer!='')
      {
         $this->AddHeader("Referer",$referer);
      }
      $this->AddHeader("User-Agent","Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 4)");
      $result=$this->CreateParameters($url,"POST",$body);
       
      if (!is_array($result))
      {
         $out['ERROR']=$result;
         return $out;
      }
       
      if (!$this->useProxy)
      {
         $server_res=$this->DoConnect($result['domain'],$result['port'],$result['query']);
      }
      else
      {
         $server_res=$this->DoConnect($this->myProxy_host,$this->myProxy_port,$result['query']);
      }
       
      if ($server_res["RESULT"]===false)
      {
         $out['ERROR']=$server_res["RESPONSE"];
         return $out;
      }
       
      $response=$this->ParseResponse($server_res["RESPONSE"]);
       
      if ($response['HEADERS']['location']!='')
      {
         if ($this->redir_max>0)
         {
            $this->redir_times++;
            return $this->Grab($url,$referer,$redir_max);
         }
         $out['ERROR']='redir to '.$this->LocateDocument($url,$response['HEADERS']['location']);
         $out['HEADERS']=$response['HEADERS'];         
         $out['URL']=$this->LocateDocument($url,$response['HEADERS']['location']);
         return $out;
      }
       
      if (intval($response['HEADERS']['HTTP_RESULT'])!=200 || trim($response['CONTENT'])=='')
      {
         $out['ERROR']='non-200 response or empty response';
         $out['HEADERS']=$response['HEADERS'];
         return $out;
      }
       
      $out['CONTENT']=trim($response['CONTENT']);
      $out['HEADERS']=$response['HEADERS'];
      $out['ERROR']='';
      return $out;
   }
}

3
 

Самый добрый бегемот

С нами с 24.06.03
Сообщения: 954
Рейтинг: 574

Ссылка на сообщениеДобавлено: 08/07/06 в 23:01       Ответить с цитатойцитата 

Огромное спасибо, только все-равно не работает icon_smile.gif
PR for ''http://www.google.com'' is -1
попробую покапаться, может сам чего найду
рейтинг проставил icon_smile.gif

0
 

XXX-Server.biz

С нами с 15.02.03
Сообщения: 9410
Рейтинг: 6676


Передовик Master-X (16.01.2008)
Ссылка на сообщениеДобавлено: 08/07/06 в 23:54       Ответить с цитатойцитата 

Код:
<?php

define('GMAG', 0xE6359A60);

//unsigned shift right
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 GCH($url, $length=null, $init=GMAG) {
    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)              /* all the case statements fall through */
    {
        case 11: $c+=($url[$k+10]<<24);
        case 10: $c+=($url[$k+9]<<16);
        case 9 : $c+=($url[$k+8]<<8);
          /* the first byte of c is reserved for the length */
        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]);
         /* case 0: nothing left to add */
    }
    $mix = mix($a,$b,$c);
    /*-------------------------------------------- report the result */
    return $mix[2];
}

//converts a string into an array of integers containing the numeric value of the char
function strord($string) {
    for($i=0;$i<strlen($string);$i++) {
        $result[$i] = ord($string{$i});
    }
    return $result;
}

function getPR($_url) {
    $url = 'info:'.$_url;
    $ch = GCH(strord($url));
    $url='info:'.urlencode($_url);
    $pr = file("http://www.google.com/search?client=navclient-auto&ch=6$ch&ie=UTF-8&oe=UTF-8&features=Rank&q=$url");
    $pr_str = implode("", $pr);
    return substr($pr_str,strrpos($pr_str, ":")+1);
}


echo "The PR of my website is: ".getPR("https://www.master-x.com");

?>

Хостинг от $0.05/Gb, VDS от 9$, Dedicated Servers от $49
Домены от 4.99$

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 09/07/06 в 11:15       Ответить с цитатойцитата 

atrius писал:
Огромное спасибо, только все-равно не работает icon_smile.gif
PR for ''http://www.google.com'' is -1
попробую покапаться, может сам чего найду
рейтинг проставил icon_smile.gif

У тебя сокет эррор идет. Попробуй

Код:

$google=new Google();
$url="'http://all-sex-links.com/'";
$pr=$google->detectPR($url);
if ($pr==-1)
echo "Error: ".$google->socket_error;
else
echo " PR for '$url' is $pr";

3
 

Самый добрый бегемот

С нами с 24.06.03
Сообщения: 954
Рейтинг: 574

Ссылка на сообщениеДобавлено: 09/07/06 в 12:14       Ответить с цитатойцитата 

не устаю проставлять тебе рейтинг icon_smile.gif
вот ответ скрипта
Error: non-200 response or empty response
есть какие идеи?

0
 



С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362

Ссылка на сообщениеДобавлено: 09/07/06 в 16:35       Ответить с цитатойцитата 



это руки...воспользуйся уже готовыми чекалками коих сейчас целые кучи и научись пользоваться поиском.

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 09/07/06 в 16:49       Ответить с цитатойцитата 

xreload писал:
это руки...

не, это сервер по ходу. или чето с сокетами или его сетка гуглом побанена на запрос ПР

0
 
+ + +
Человек-оркестр

С нами с 19.11.02
Сообщения: 4755
Рейтинг: 1027

Ссылка на сообщениеДобавлено: 09/07/06 в 19:42       Ответить с цитатойцитата 

Pentarh писал:
не, это сервер по ходу. или чето с сокетами или его сетка гуглом побанена на запрос ПР

пошли лучше вотку пить.......

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 10/07/06 в 03:48       Ответить с цитатойцитата 

Colin Drury писал:
пошли лучше вотку пить.......

эххх.. с вами свяжешься... )) НЕ ПЬЮ Я! НЕ ПЬЮ! icon_smile.gif
Якщо людина не п'э то вона або хвора або падлюка. Я - падлюка icon_smile.gif

0
 



С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579

Ссылка на сообщениеДобавлено: 23/08/06 в 23:23       Ответить с цитатойцитата 

В ходе испытаний выяснилось, что функция GoogleCH выдаёт разные результаты на виндовом и линуксовом серваках. Это лечится изменением функции или правкой конфигов?

ВОСТОРГ ЗНАЧИТ BMW

0
 

Криптопохуист

С нами с 05.04.03
Сообщения: 17156
Рейтинг: 6019

Ссылка на сообщениеДобавлено: 23/08/06 в 23:27       Ответить с цитатойцитата 


если это вопрос ко мне, то я никогда не юзаю виндовых серверов. Даже в ходе разработки и теста.

0
 



С нами с 21.04.01
Сообщения: 666
Рейтинг: 436

Ссылка на сообщениеДобавлено: 23/08/06 в 23:36       Ответить с цитатойцитата 

вот вам на жаваскрипт, не работает в ИЕ.
Код:

<html>
<head>
<script>
var gXMLHttpRequest;
var url, urls, reqgr, reqgre, gch, querystring;
var t;
var j = 0;
function load() {
   t = window.open('','res','width=500,height=500,resizable=1');
   t.document.open();
   t.document.write("<table>");
   urls = document.getElementsByTagName("A");
   getReq();
}
function getReq() {
   if (j >= urls.length) {
      t.document.write("</table>");
      t.document.close();
      return;
   }
   url = urls[j].href;
   reqgr = "info:" + url;
   reqgre = "info:" + URLencode(url);
   gch = "6" + GoogleCH(strord(reqgr));
   querystring = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=" + gch + "&ie=UTF-8&oe=UTF-8&features=Rank&q=" + reqgre;
   netscape.security.PrivilegeManager.enablePrivilege('UniversalBrowserRead');
   gXMLHttpRequest = new XMLHttpRequest();
   gXMLHttpRequest.onload = dwrite;
   gXMLHttpRequest.open("GET", querystring);
   gXMLHttpRequest.send(null);
}
function dwrite() {
   var temp = gXMLHttpRequest.responseText;
   var foo = temp.split(":");
   var pr = foo[2];
   var fpr = pr.split("\n");
   t.document.write("<tr>");
   t.document.write("<td>" + url + "</td>");
   t.document.write("<td>" + fpr[0] + "</td>");
   t.document.write("</tr>");
   j += 1;
   getReq();
}
function URLencode(sStr) {
   return escape(sStr).replace(/\+/g, '%2B').replace(/[ ]/g,'+').replace(/\//g,'%2F');
}
function strord(string) {
   var result = new Array();
   for(i = 0; i < string.length; i++) {
      result[i] = string[i].charCodeAt(0);
   }
   return result;
}
function GoogleCH(url) {
   var init = 0xE6359A60;
   var length = url.length;

   var a = 0x9E3779B9;
   var b = 0x9E3779B9;
   var c = 0xE6359A60;
   var k = 0;
   var len = length;
   var mixo = new Array();
   
   
   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));
      mixo = mix(a,b,c);
      a = mixo[0]; b = mixo[1]; c = mixo[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]);
   }
   mixo = mix(a,b,c);
   if (mixo[2] < 0)
      return (0x100000000 + mixo[2]);
   else
      return mixo[2];
}
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));
   
   var ret = new Array((a),(b),(c));
   
   return ret;
}
function zeroFill(a,b) {
   var z = hexdec(80000000);
   if (z & a) {
      a = a>>1;
      a &= ~z;
      a |= 0x40000000;
      a = a>>(b-1);
   } else {
      a = a >> b;
   }
   return (a);
}
function hexdec(str) {
   return parseInt(str,16);
}
</script>
</head>

<body>
<input type="Submit" onclick="load();">
<!-- список ссылок для проверки -->

<a href="http://www.google.com">##</a>
<a href="http://www.msn.com">##</a>
<a href="http://www.yahoo.com">##</a>


      

.....
</body>
</html>

Линк Лист Omega Porn Links SexPornOnline ждут ваши фрихи.

0
 



С нами с 08.05.05
Сообщения: 463
Рейтинг: 195

Ссылка на сообщениеДобавлено: 24/08/06 в 09:03       Ответить с цитатойцитата 

эти скрипты работают если чекать массово PageRank,?

0
 
Новая тема Новая тема   

Текстовая реклама в форме ответа
Заголовок и до четырех строчек текста
Длина текста до 350 символов
Купить рекламу в этом месте!


Перейти:  



Спонсор раздела Стань спонсором этого раздела!

Реклама на сайте Advertise with us

Опросы

Рецепт новогоднего блюда 2022



Обсудите на форуме обсудить (11)
все опросы »