PDA

View Full Version : سوال: رنکینگ گوگل



tehro0n
چهارشنبه 13 مرداد 1389, 11:45 صبح
من سورسی برای نمایش عدد رنکینگ گوگل پیدا کردم، اما همان طور که در توضیحات این کد نوشته شده بود برخی ip ها هستند که توسط گوگل مسدود شده اند، مثل ایران!
این ip ها همواره عدد رنکینگ را -1 می بینند.. الان این مشکل برای این سورس وجود دارد کاری نمیشه کرد؟
اگه سورس دیگه ای دارید که این ip رو دور میزنه یا.. ممنون میشم بذارید.

این فایلی است که باید به نام pagerank.php ایجاد شود.

<?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\r\n";
$out .= "Host: www.google.com\r\n";
$out .= "Connection: Close\r\n\r\n";
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;
}

?>و اینم برای اجرا و گرفتن عدد.. این کد در localhost کار می کنه..


include('pagerank.php');
$pr = getPageRank("http://www.{$_DOMAIN}");
echo $pr;

LORD AELX
چهارشنبه 13 مرداد 1389, 11:48 صبح
اگر این اسکریپت را روی یک سرور واقعی قرار بدهید، باز هم همین مشکل وجود دارد؟ :متفکر:

tehro0n
چهارشنبه 13 مرداد 1389, 12:15 عصر
اگر این اسکریپت را روی یک سرور واقعی قرار بدهید، باز هم همین مشکل وجود دارد؟ :متفکر:

بله مسئله همینه دیگه.. ولی لوکال هاست کامم درست کار می کنه. چون همیشه با ip 127.0.0.1 ذخیره میشه و ژاپنه..

kabotareazad
چهارشنبه 13 مرداد 1389, 14:57 عصر
من که امتحان کردم تو localhost هم 1- می ده؟!!!

yasgig
پنج شنبه 14 مرداد 1389, 22:02 عصر
دوست عزیز خودتو اذیت نکن.یه سایت پیدا کنم که خدمات پیج رنک میده بعدش با کرل اطلاعات رتبه رو از اون سایت بگیر.اگه یه موقعی هم عبارت منظمش به هم خورد سایت های زیادی هستند که این امکانات رو میدن.می تونی ازشون استفاده کنی.

parselearn
جمعه 15 مرداد 1389, 00:22 صبح
اينو من روي سايتم گذاشتم
و مشكلي نداره


//--> for google pagerank
/*
* Genearate a hash for a url
*/
function StrToNum($Str, $Check, $Magic)
{
$Int32Unit = 4294967296; // 2^32

$length = strlen($Str);
for ($i = 0; $i < $length; $i++) {
$Check *= $Magic;
//If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
// the result of converting to integer is undefined
// refer to http://www.php.net/manual/en/language.types.integer.php
if ($Check >= $Int32Unit) {
$Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
//if the check less than -2^31
$Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
}
$Check += ord($Str{$i});
}
return $Check;
}

function HashURL($String)
{
$Check1 = StrToNum($String, 0x1505, 0x21);
$Check2 = StrToNum($String, 0, 0x1003F);

$Check1 >>= 2;
$Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
$Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
$Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);

$T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
$T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

return ($T1 | $T2);
}

//--> for google pagerank
/*
* genearate a checksum for the hash string
*/
function CheckHash($Hashnum)
{
$CheckByte = 0;
$Flag = 0;

$HashStr = sprintf('%u', $Hashnum) ;
$length = strlen($HashStr);

for ($i = $length - 1; $i >= 0; $i --) {
$Re = $HashStr{$i};
if (1 === ($Flag % 2)) {
$Re += $Re;
$Re = (int)($Re / 10) + ($Re % 10);
}
$CheckByte += $Re;
$Flag ++;
}

$CheckByte %= 10;
if (0 !== $CheckByte) {
$CheckByte = 10 - $CheckByte;
if (1 === ($Flag % 2) ) {
if (1 === ($CheckByte % 2)) {
$CheckByte += 9;
}
$CheckByte >>= 1;
}
}

return '7'.$CheckByte.$HashStr;
}

// Check Google Pagerank
function googlePR($url = ''){
$gpr = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=".CheckHash(HashURL($url))."&features=Rank&q=info:".$url;
$getit = @file_get_contents($gpr);
$pr = substr($getit, 9);
if($pr != "") { return $pr; } else { return "اتصال به گوگل نداريم."; }
}

tehro0n
جمعه 15 مرداد 1389, 13:05 عصر
اينو من روي سايتم گذاشتم
و مشكلي نداره


من این رو به این صورت نوشتم

pagerank.php

<?php

//--> for google pagerank
/*
* Genearate a hash for a url
*/
function StrToNum($Str, $Check, $Magic)
{
$Int32Unit = 4294967296; // 2^32

$length = strlen($Str);
for ($i = 0; $i < $length; $i++) {
$Check *= $Magic;
//If the float is beyond the boundaries of integer (usually +/- 2.15e+9 = 2^31),
// the result of converting to integer is undefined
// refer to http://www.php.net/manual/en/language.types.integer.php
if ($Check >= $Int32Unit) {
$Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
//if the check less than -2^31
$Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
}
$Check += ord($Str{$i});
}
return $Check;
}

function HashURL($String)
{
$Check1 = StrToNum($String, 0x1505, 0x21);
$Check2 = StrToNum($String, 0, 0x1003F);

$Check1 >>= 2;
$Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
$Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
$Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);

$T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
$T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );

return ($T1 | $T2);
}

//--> for google pagerank
/*
* genearate a checksum for the hash string
*/
function CheckHash($Hashnum)
{
$CheckByte = 0;
$Flag = 0;

$HashStr = sprintf('%u', $Hashnum) ;
$length = strlen($HashStr);

for ($i = $length - 1; $i >= 0; $i --) {
$Re = $HashStr{$i};
if (1 === ($Flag % 2)) {
$Re += $Re;
$Re = (int)($Re / 10) + ($Re % 10);
}
$CheckByte += $Re;
$Flag ++;
}

$CheckByte %= 10;
if (0 !== $CheckByte) {
$CheckByte = 10 - $CheckByte;
if (1 === ($Flag % 2) ) {
if (1 === ($CheckByte % 2)) {
$CheckByte += 9;
}
$CheckByte >>= 1;
}
}

return '7'.$CheckByte.$HashStr;
}

// Check Google Pagerank
function googlePR($url = ''){
$gpr = "http://toolbarqueries.google.com/search?client=navclient-auto&ch=".CheckHash(HashURL($url))."&features=Rank &q=info:".$url;
$getit = @file_get_contents($gpr);
$pr = substr($getit, 9);
if($pr != "") { return $pr; } else { return "اتصال به گوگل نداريم."; }
}

?>

و برای صدا زند هم به همان صورت قبلی..

include('pagerank.php');
$pr = getPageRank("http://www.{$_DOMAIN}");
echo $pr;
اما اتصال به گوگل نداريم. را بر می گرداند :ناراحت:

parselearn
جمعه 15 مرداد 1389, 16:42 عصر
اينو امتحان كنيد...

tehro0n
چهارشنبه 04 آبان 1390, 19:51 عصر
بعد از یکسال که این پکیج به خوبی کار می کرد دیگه کار نمی کنه :( خیلی از سایت های دیگه که سرویس پیج رنک می دن هم دیدم که خراب شده به جز awp.ir