Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

RSS iMasters

[Resolvido] Classe PHP para o PageRank do Google

Recommended Posts

Enquanto desenvolvedores edesigners podem debater sobre a importância de diferentes estratégias para aotimização dos mecanismos de busca, uma métrica que simplesmente não pode serdiscutida é o PageRank de uma página, ou sua importância em gerar tráfegopara o site. Atingir um PageRank melhor foi uma das considerações ao refazermoso design do nosso blog. Podemos discutir como alcançar um PageRank melhor em outra ocasião, mas este artigo irá focar em como você pode recuperar o PageRank de uma página usando umapequena classe PHP que criei.

 

 

OPHP

As funções básicas dentro dessa classe foram criadas porJamieScott ? todo ocrédito das funções básicas vão para ele. Eu simplesmente coloquei afuncionalidade dentro do formato da classe PHP para facilitar o uso e para atualizaro código para que ele fosse um pouco mais transparente. No que diz respeito àsclasses PHP, esta é bem pequena:

 

// Declare the class

class GooglePageRankChecker {

 

// Track the instance

private static $instance;

 

// Constructor

function getRank($page) {

// Create the instance, if one isn't created yet

if(!isset(self::$instance)) {

self::$instance = new self();

}

// Return the result

return self::$instance->check($page);

}

 

 

// Convert string to a number

function stringToNumber($string,$check,$magic) {

$int32 = 4294967296; // 2^32

$length = strlen($string);

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 >= $int32) {

$check = ($check - $int32 * (int) ($check / $int32));

//if the check less than -2^31

$check = ($check < -($int32 / 2)) ? ($check + $int32) : $check;

}

$check += ord($string{$i});

}

return $check;

}

 

// Create a url hash

function createHash($string) {

$check1 = $this->stringToNumber($string, 0x1505, 0x21);

$check2 = $this->stringToNumber($string, 0, 0x1003F);

 

$factor = 4;

$halfFactor = $factor/2;

 

$check1 >>= $halfFactor;

$check1 = (($check1 >> $factor) & 0x3FFFFC0 ) | ($check1 & 0x3F);

$check1 = (($check1 >> $factor) & 0x3FFC00 ) | ($check1 & 0x3FF);

$check1 = (($check1 >> $factor) & 0x3C000 ) | ($check1 & 0x3FFF);

 

$calc1 = (((($check1 & 0x3C0) << $factor) | ($check1 & 0x3C)) << $halfFactor ) | ($check2 & 0xF0F );

$calc2 = (((($check1 & 0xFFFFC000) << $factor) | ($check1 & 0x3C00)) << 0xA) | ($check2 & 0xF0F0000 );

 

return ($calc1 | $calc2);

}

 

// Create checksum for hash

function checkHash($hashNumber)

{

$check = 0;

$flag = 0;

 

$hashString = sprintf('%u', $hashNumber) ;

$length = strlen($hashString);

 

for ($i = $length - 1; $i >= 0; $i --) {

$r = $hashString{$i};

if(1 === ($flag % 2)) {

$r += $r;

$r = (int)($r / 10) + ($r % 10);

}

$check += $r;

$flag ++;

}

 

$check %= 10;

if(0 !== $check) {

$check = 10 - $check;

if(1 === ($flag % 2) ) {

if(1 === ($check % 2)) {

$check += 9;

}

$check >>= 1;

}

}

 

return '7'.$check.$hashString;

}

 

function check($page) {

 

// Open a socket to the toolbarqueries address, used by Google Toolbar

$socket = fsockopen("toolbarqueries.google.com", 80, $errno, $errstr, 30);

 

// If a connection can be established

if($socket) {

// Prep socket headers

$out = "GET /search?client=navclient-auto&ch=".$this->checkHash($this->createHash($page))."&features=Rank&q=info:".$page."&num=100&filter=0 HTTP/1.1rn";

$out .= "Host: toolbarqueries.google.comrn";

$out .= "User-Agent: Mozilla/4.0 (compatible; GoogleToolbar 2.0.114-big; Windows XP 5.1)rn";

$out .= "Connection: Closernrn";

 

// Write settings to the socket

fwrite($socket, $out);

 

// When a response is received...

$result = "";

while(!feof($socket)) {

$data = fgets($socket, 128);

$pos = strpos($data, "Rank_");

if($pos !== false){

$pagerank = substr($data, $pos + 9);

$result += $pagerank;

}

}

// Close the connection

fclose($socket);

 

// Return the rank!

return $result;

}

}

}Os métodos createHash echeckHash geram as operações matemáticas profundas. Uma vez que elas estiveremfora do caminho, o método check se conecta ao servidor da barra de ferramentasdo Google, disfarçando-se como uma barra de ferramenta através do cabeçalho User-Agent,para chegar ao PageRank da página. Um padrão único é usado, uma vez que criarinstâncias individuais não é importante:

 

$rank = GooglePageRankChecker::getRank("davidwalsh.name"); // returns "5"O número fornecido representa o PageRank para a URL fornecida! Essa classe PHP pode ser usadasozinha, mas eu criei um script comandado pelo MooTools para recuperar oendereço do PageRank através de um simples AJAX.

 

 

OMooTools JavaScript

Este script quick inline doMooTools responde ao clique de um botão, gerando um chamado AJAX para um scriptPHP que executa a classe fornecida acima:

 

// When the DOM is ready

window.addEvent("domready",function() {

 

// When the form is submitted...

var form = document.id("rankForm"), request, display, domain;

form.addEvent("submit",function(e) {

// Stop the event

if(e) e.stop();

 

// Create request, if not already created

if(!request) {

domain = document.id("domain");

display = document.id("rankerDisplay");

request = new Request({

url: "pagerank-checker.php",

method: "post",

onComplete: function(response) {

display.setStyle("display","block").set("text","Page rank for " + domainValue + " is: " + response);

}

});

}

 

// Get the value fo the URL

domainValue = domain.get("value");

 

// Send the request

request.send({ data: { domain: domainValue } });

});

 

});Utilizando este pedaço de Javascript como no exemplo, você pode facilmente adicionar um verificador javascript para o Google PageRank com o framework que você escolher.

 

?

 

Texto original em disponível em http://davidwalsh.name/google-pagerank

 

 

 

http://imasters.com.br/artigo/21022/php/classe-php-para-o-pagerank-do-google

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.