Resultat 1 till 18 av 18

Google Pagerank PHP script

  1. #1
    Martin Lindhes avatar
    Martin Lindhe Martin Lindhe är inte uppkopplad SEO-proffs
    Reg.datum
    okt 2006
    Ort
    Stockholm
    Inlägg
    16
    Här är ett PHP script för att genomföra en google pagerank lookup. Den genomför motsvarande vad Google Toolbar gör för att visa aktuell sidas PR.

    Koden är baserad på http://www.tapouillo.com/firefox_ext...sourcecode.txt, men omskriven av mig. Så här enkelt tar du reda på en sidas PR:

    PHP-kod:
    $url 'http://www.seo-forum.se/';
        
    $pr GetGooglePR($url);

    echo 
    'Sidans PR är: '.$pr
    Viktigt!!!
    Om du har tänkt att använda detta för att automatiskt kolla upp en större mängd sidors PR så bör du överväga att bygga in ett cache i din applikation, eftersom det finns risk för att google åtminstonde tillfälligt kommer att blockera PR requests från ditt IP. Att skicka några tusen requests om dagen verkar gå fint, men jag misstänker att tiotusentals requests kan innebära en IP-ban.


    Här kommer all kod:

    PHP-kod:
    <?
        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);
            /* 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);

        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;
    }

    function GoogleCH2($url)
    {
        $url = 'info:'.$url;

        $ch = GoogleCH(strord($url));
        $ch = sprintf("%u", $ch);

        $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);

        $ch2 = sprintf("6%u", $ch);
        //echo 'Checksum >=2.0.114: '. $ch2.'<br>';
        
        return $ch2;
    }

    function GetGooglePR($url)
    {
        $host = 'toolbarqueries.google.com';
        $port = 80;

        $header  = "GET /search?client=navclient-auto&ch=".GoogleCH2($url)."&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=info:".urlencode($url)." HTTP/1.1\r\n";
        $header .= "Host: ".$host."\r\n";
        $header .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)\r\n";
        $header .= "Connection: close\r\n\r\n";

        $fp = fsockopen($host, $port, $errno, $errstr, 30);

        if (!$fp) {
            echo "$errstr ($errno)<br />\n";
            return '';
        }

        $result = '';

        fwrite($fp, $header);
        while (!feof($fp)) {
            $result .= fgets($fp, 128);
        }
        fclose($fp);
        
        //strip header
        $result = trim(substr($result, strpos($result, "\r\n\r\n")));
        
        //Content now looks like: e\n\nRank_1:1:3\n\n0
        
        $result = str_replace("\r", "\n", $result);
        $result = str_replace("\n\n", "\n", $result);
        
        //Remove leading "e\n\n":
        if (substr($result, 0, 2) == "e\n") {
            $result = substr($result, 2);
        } else {
            echo 'Unexpected format!!!!';
            return '';
        }
        
        //Remove trailing "\n\n0":
        if (substr($result, -2) == "\n0") {
            $result = substr($result, 0, -2);
        } else {
            echo 'Unexpected format!!!!';
            return '';
        }
        
        $result = trim($result);

        //Content now looks like: Rank_1:1:3
        if (substr($result, 0, 9) == 'Rank_1:1:') {
            $result = substr($result, 9);
        } else {
            echo 'Unexpected format!!!!';
            return '';
        }

        return $result;
    }
    ?>
    Senast redigerat av Martin Lindhe den 2006-10-09 klockan 14:40.

  2. #2
    Jim Westergrens avatar
    Jim Westergren Jim Westergren är inte uppkopplad SEO-proffs: utökad profil
    Administratör
    Reg.datum
    feb 2006
    Ort
    Täby
    Inlägg
    2 725
    Skitbra! + på rykte.
    Bor nu i Marbella, Spanien
    Kolla in mitt SEO verktyg Domainstats

  3. #3
    Patrik Berggrens avatar
    Patrik Berggren Patrik Berggren är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    mar 2006
    Ort
    Tärnö Gård, Västerås
    Inlägg
    1 383
    aha, synd man inte håller på med PHP ... har försökt fixa detta för asp.net, men inte lyckats. Får inte till "checksum:en"

    Men, denna är ju klart användbar och kan ju exekveras från asp.net appar oxå, men optimalt blir det ju inte

    cya,
    /PatrikB

  4. #4
    byllas avatar
    bylla bylla är inte uppkopplad Ej godkänd
    Reg.datum
    nov 2006
    Inlägg
    1
    Scriptet fungerar ju inte. Jag får följande fel:
    HTML-kod:
    Warning: file(http://www.google.com/search?client=navclient-auto&ch=6-1653105305&features=Rank&q=info:www.google.com) [function.file]: failed to open stream: HTTP request failed! HTTP/1.0 403

  5. #5
    Magnus-SEOs avatar
    Magnus-SEO Magnus-SEO är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    maj 2006
    Ort
    Stockholm
    Inlägg
    227

  6. #6
    Martin Lindhes avatar
    Martin Lindhe Martin Lindhe är inte uppkopplad SEO-proffs
    Reg.datum
    okt 2006
    Ort
    Stockholm
    Inlägg
    16
    Citat Ursprungligen postat av bylla
    Scriptet fungerar ju inte. Jag får följande fel:
    HTML-kod:
    Warning: file(http://www.google.com/search?client=navclient-auto&ch=6-1653105305&features=Rank&q=info:www.google.com) [function.file]: failed to open stream: HTTP request failed! HTTP/1.0 403
    Scriptet fungerar som det ska. Du anropar scriptet fel, se mitt första inlägg.

  7. #7
    Daniels avatar
    Daniel Daniel är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    jul 2006
    Ort
    Göteborg
    Inlägg
    147
    Citat Ursprungligen postat av MrWize
    aha, synd man inte håller på med PHP ... har försökt fixa detta för asp.net, men inte lyckats. Får inte till "checksum:en"

    Men, denna är ju klart användbar och kan ju exekveras från asp.net appar oxå, men optimalt blir det ju inte

    cya,
    /PatrikB
    Visst går det att göra precis samma sak i .NET. Ett exempel på hur du bygger en liten .NET assembly för att hämta PR som jag vet fungerar(som jag själv utgått ifrån) hittar du bla här: http://chrison.net/GooglePageRankAsANETAssembly.aspx

  8. #8
    Princips avatar
    Princip Princip är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    feb 2006
    Inlägg
    192
    Sitter någon på något motsvarande till Classic ASP?

  9. #9
    terLags avatar
    terLag terLag är inte uppkopplad Lär mig SEO
    Reg.datum
    okt 2006
    Ort
    Malmö
    Inlägg
    19
    Men bryter inte detta mot Google användaravtal? att man inte får göra automatiska frågor mot Google.com

  10. #10
    Martin Lindhes avatar
    Martin Lindhe Martin Lindhe är inte uppkopplad SEO-proffs
    Reg.datum
    okt 2006
    Ort
    Stockholm
    Inlägg
    16
    Citat Ursprungligen postat av terLag
    Men bryter inte detta mot Google användaravtal? att man inte får göra automatiska frågor mot Google.com
    Finns ett sånt användaravtal?

    Google har en mängd tjänster för automatiska frågor mot deras servrar, t.ex Google API

    http://code.google.com/apis.html

  11. #11
    terLags avatar
    terLag terLag är inte uppkopplad Lär mig SEO
    Reg.datum
    okt 2006
    Ort
    Malmö
    Inlägg
    19
    http://www.google.se/accounts/TOS

    Ingen automatisk förfrågan
    Du kan inte skicka en automatisk förfrågan till Google utan att anhålla om tillstånd i förväg från Google. Notera att "automatiska förfrågningar" inkluderar mjukvara som sänder förfrågningar till Google för att fastställa hur en webbsida rankas vid olika förfrågningar.

  12. #12
    Martin Lindhes avatar
    Martin Lindhe Martin Lindhe är inte uppkopplad SEO-proffs
    Reg.datum
    okt 2006
    Ort
    Stockholm
    Inlägg
    16
    Hm, innehåller deras Google Toolbar användaravtal någon sorts undantag då?
    Koden i orginalposten är baserad på deras google toolbar

  13. #13
    Princips avatar
    Princip Princip är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    feb 2006
    Inlägg
    192
    Ska man hårddra det får man väl egentligen inte göra de frågorna. Men Google verkar tillåta det, eller i alla fall agerar inte på det just nu...

  14. #14
    terLags avatar
    terLag terLag är inte uppkopplad Lär mig SEO
    Reg.datum
    okt 2006
    Ort
    Malmö
    Inlägg
    19
    Det farliga är ju att Google kanske vill stoppa detta sedan och spärrar IPnummer som gör frågor mot dom. Och då blir det problem.

  15. #15
    Princips avatar
    Princip Princip är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    feb 2006
    Inlägg
    192
    Många spärrade IP-adresser skulle det bli då...

    Varför ska de agera? De tjänar ju på att knyta användare närmare sig. Det handlar ju inte heller om att lura Google på pengar. Skulle Google göra något åt saken gissar jag att de ändrar sitt system och alla PR-script slutar att fungera.

  16. #16
    kleins avatar
    klein klein är inte uppkopplad Kan SEO rätt bra
    Reg.datum
    apr 2007
    Ort
    Stockholm
    Inlägg
    31
    Jag får följande fel :

    Your client does not have permission to get URL /search?client=navclient-auto&ch=62768934392&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=info:http%3A%2F%2Fwww.aftonb ladet.se%2F from this server. (Client IP address: 213.65.xx.xxx)

    Verka som google aktivt hindra såna här script.

  17. #17
    Trådlösts avatar
    Trådlöst Trådlöst är inte uppkopplad Lär mig SEO
    Reg.datum
    apr 2007
    Ort
    Cyberspace
    Inlägg
    23
    Citat Ursprungligen postat av klein
    Jag får följande fel :

    Your client does not have permission to get URL /search?client=navclient-auto&ch=62768934392&ie=UTF-8&oe=UTF-8&features=Rank:FVN&q=info:http%3A%2F%2Fwww.aftonb ladet.se%2F from this server. (Client IP address: 213.65.xx.xxx)

    Verka som google aktivt hindra såna här script.
    Det verkar vara smartare att låtsas att man är en normal browser så första steget är att byta bort navclient-auto mot Firefox! Jag ska skriva en stealthversion om jag får tid.

  18. #18
    Reg.datum
    maj 2006
    Ort
    Lund
    Inlägg
    386
    Man kan ju fråga sig om det moraliskt rätt av Google att påstå att man inte får lov att utnyttja program som jobbar mot deras sidor, för att exempelvis kolla SERP eller PageRank när hela deras verksamhet bygger på det

    En hel del ip-serier är blockerad för åtkomst av PageRank. Min erfarenhet är dock att det är ip-nummer som tilldelas serverparker, ala The Planet. Har provat från min server där och den har 3 olika class-c nät och ingen fungerar.
    Köp länkar - Säljer permanenta länkar

Ämnesinformation

Användare som tittar på det här ämnet

Det är för närvarande 1 användare som tittar på det här ämnet. (0 medlemmar och 1 gäster)

Liknande ämnen

  1. Svar: 6
    Senaste inlägg: 2008-11-15, 11:11
  2. Svar: 12
    Senaste inlägg: 2006-11-30, 00:08
  3. Westberg´s pagerank tool tråd!
    Av Marcus Westberg i forum PageRank
    Svar: 4
    Senaste inlägg: 2006-05-09, 18:11
  4. PageRank uppdateras
    Av Jim Westergren i forum PageRank
    Svar: 26
    Senaste inlägg: 2006-03-13, 02:07