Link to home
Start Free TrialLog in
Avatar of rares_dumitrescu
rares_dumitrescu

asked on

Google page rank script

I have the next page rank script:

It worked fine, but after a while i get:

<html> <head> <title>403 Forbidden</title> <style> body {font-family: Arial, sans-serif;}</style></head><body bgcolor="#ffffff" text="#000000" link="#0000cc" vlink="#551a8b" alink="#ff0000"> <table cellpadding="0" cellspacing="0" border="0"><tr><td><b><font face=times color=#0039b6 size=10>G</font><font face=times color=#c41200 size=10>o</font><font face=times color=#f3c518 size=10>o</font><font face=times color=#0039b6 size=10>g</font><font face=times color=#30a72f size=10>l</font><font face=times color=#c41200 size=10>e</font></b></td><td valign=middle width="100%" style="padding-left: 10px"><table bgcolor="#e5ecf9" width="100%" cellpadding="0" cellspacing="0" border="0" style="border-top: 1px solid #3366cc"><tr><td><font size="+1">&nbsp;<b>Error</b></font></td><td align="right" nowrap><font size="-1">&nbsp;</font></td></tr></table></td></tr></table><blockquote><h1>We're sorry...</h1><p>... but your query looks similar to automated requests from a computer virus or spyware application.  To protect our users, we can't process your request right now.</p> <p>We'll restore your access as quickly as possible, so try again soon. In the meantime, if you suspect that your computer or network has been infected, you might want to run a <a href="http://www.download.com/Antivirus/3150-2239-0.html"> virus checker</a> or <a href="http://www.download.com/sort/3150-8022-0-1-4.html">spyware remover</a> to make sure that your systems are free of viruses and other spurious software.</p><p>We apologize for the inconvenience, and hope we'll see you again on Google. </blockquote><br><table width=100% cellpadding=0 cellspacing=0><tr><td bgcolor=#3366cc><img alt="" width=1 height=3></td></tr></table></body></html>


<?php
/******************
 * PageRankXor32 class created by MagicBeanDip
 * PageRank class was created by others
 * Look for updates at http://v1.magicbeandip.com/mbd-file/PageRankReport.php
 * This code is released into the Public Domain
 *
 * Sample use:
 * include('PageRankXor32.php');
 * $oPR=new PageRankXor32();
 * echo $oPR->getRank('http://www.amazon.com');
 *
 ******************/
 
 
function isUrlValid($Url) {
        return (strpos(strtolower($Url),'http://')===0);
   }
 
function pageRankImage($Url)
{
   if (isUrlValid($Url))
   {
    $oPR=new PageRankXor32();
    $PageRank=$oPR->getRank($Url);
   }
   else
   {
   $PageRank="";
   }
 
   if($PageRank>=0  && $PageRank!="")
   {
   $prImage = "/images/pr/pr" . $PageRank . ".gif";
   }
   else if($PageRank == -1)
   {
   $prImage = "/images/pr/blank.gif";
   }
   else
   {
   $prImage = "/images/pr/blank.gif";
   }
return $PageRank;
}
 
define('GOOGLE_MAGIC', 0x00000000E6359A60);
 
// Use this class if your server is having problems with bitwise operations
class PageRankXor32 extends PageRank {
        function xor32($a, $b) {
                return $this->int32($a) ^ $this->int32($b);
        }
        //return least significant 32 bits
        //works by telling unserialize to create an integer even though we provide a double value
        function int32($x) {
                return unserialize("i:$x;");
                //return intval($x); // This line doesn't work on all servers.
        }
 
        function mix($a,$b,$c) {
                $a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,13));
                $b -= $c; $b -= $a; $b = $this->xor32($b,$a<<8);
                $c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,13));
                $a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,12));
                $b -= $c; $b -= $a; $b = $this->xor32($b,$a<<16);
                $c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,5));
                $a -= $b; $a -= $c; $a = $this->xor32($a,$this->zeroFill($c,3));
                $b -= $c; $b -= $a; $b = $this->xor32($b,$a<<10);
                $c -= $a; $c -= $b; $c = $this->xor32($c,$this->zeroFill($b,15));
                return array($a,$b,$c);
        }
}
 
//This class should work on most servers
class PageRank {
        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);
                        /* 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]);
                }
                $mix = $this->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;
                }
 
        //returns -1 if no page rank was found
        function getRank($url){
                $ch = "6".$this->GoogleCH($this->strord("info:" . $url));
                
                $pagerank=-1;
                $fp = fsockopen("www.google.com", 80, $errno, $errstr, 30);
                if (!$fp) {
                        echo "$errstr ($errno)<br />\n";
                } else {
                        $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 = trim(substr($data, $pos + 9));
                                }
                        }
                        fclose($fp);
                }
                return $pagerank;
        }
}
?>

Open in new window

Avatar of hielo
hielo
Flag of Wallis and Futuna image

So, what's your question. From what you posted, it seems the remote system is tracking how much request you make on a given period of time and blocks you after you exceed that limit. This is something you would need to address with the resource provider.
Avatar of rares_dumitrescu
rares_dumitrescu

ASKER

This message i get from google
ASKER CERTIFIED SOLUTION
Avatar of hielo
hielo
Flag of Wallis and Futuna image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial