Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 06/07/06 в 09:30 |
|
|
|
|
С нами с 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);
?> |
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 07/07/06 в 09:34 |
Cпасибо, сегодня попробую.
Надеюсь это оно
|
|
|
|
mafiozo
С нами с 17.02.06
Сообщения: 1392
Рейтинг: 240
|
Добавлено: 07/07/06 в 10:13 |
у меня не работает...
добавлено: а вот это работает...
|
|
|
|
Самый добрый бегемот
С нами с 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
попробую проверить скрипт первого ответившего
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 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);
}
}
|
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 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";
|
|
|
|
|
Самый добрый бегемот
С нами с 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
может класс надо было где-то прописать до этого?
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 08/07/06 в 00:39 |
Ау. Есть идея как скрипт Пентарха заставить работать?
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 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;
}
}
|
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 08/07/06 в 23:01 |
Огромное спасибо, только все-равно не работает
PR for ''http://www.google.com'' is -1
попробую покапаться, может сам чего найду
рейтинг проставил
|
|
|
|
XXX-Server.biz
С нами с 15.02.03
Сообщения: 9411
Рейтинг: 6676
|
Добавлено: 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");
?>
|
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 09/07/06 в 11:15 |
atrius писал: | Огромное спасибо, только все-равно не работает
PR for ''http://www.google.com'' is -1
попробую покапаться, может сам чего найду
рейтинг проставил |
У тебя сокет эррор идет. Попробуй
Код: |
$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"; |
|
|
|
|
Самый добрый бегемот
С нами с 24.06.03
Сообщения: 954
Рейтинг: 574
|
Добавлено: 09/07/06 в 12:14 |
не устаю проставлять тебе рейтинг
вот ответ скрипта
Error: non-200 response or empty response
есть какие идеи?
|
|
|
|
С нами с 19.11.03
Сообщения: 3973
Рейтинг: 2362
|
Добавлено: 09/07/06 в 16:35 |
это руки...воспользуйся уже готовыми чекалками коих сейчас целые кучи и научись пользоваться поиском.
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 09/07/06 в 16:49 |
xreload писал: | это руки... |
не, это сервер по ходу. или чето с сокетами или его сетка гуглом побанена на запрос ПР
|
|
|
|
+ + +
Человек-оркестр
С нами с 19.11.02
Сообщения: 4755
Рейтинг: 1027
|
Добавлено: 09/07/06 в 19:42 |
Pentarh писал: | не, это сервер по ходу. или чето с сокетами или его сетка гуглом побанена на запрос ПР |
пошли лучше вотку пить.......
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 10/07/06 в 03:48 |
Colin Drury писал: | пошли лучше вотку пить....... |
эххх.. с вами свяжешься... )) НЕ ПЬЮ Я! НЕ ПЬЮ!
Якщо людина не п'э то вона або хвора або падлюка. Я - падлюка
|
|
|
|
С нами с 21.06.05
Сообщения: 1788
Рейтинг: 1579
|
Добавлено: 23/08/06 в 23:23 |
В ходе испытаний выяснилось, что функция GoogleCH выдаёт разные результаты на виндовом и линуксовом серваках. Это лечится изменением функции или правкой конфигов?
|
|
|
|
Криптопохуист
С нами с 05.04.03
Сообщения: 17158
Рейтинг: 6019
|
Добавлено: 23/08/06 в 23:27 |
если это вопрос ко мне, то я никогда не юзаю виндовых серверов. Даже в ходе разработки и теста.
|
|
|
|
С нами с 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>
|
|
|
|
|
С нами с 08.05.05
Сообщения: 463
Рейтинг: 195
|
Добавлено: 24/08/06 в 09:03 |
эти скрипты работают если чекать массово PageRank,?
|
|
|
|
Текстовая реклама в форме ответа Заголовок и до четырех строчек текста Длина текста до 350 символов Купить рекламу в этом месте! |
|
Спонсор раздела
|