Долго искал процедуру получаения PR у сайта
Долго искал процедуру получаения PR у сайта. Нашел на ресурсе почившем, а именно в вебархиве. Итак – процесс получения PR состоит из 2 этапов – нужно подсчитать хэш код URL и дерзуть гугловский запрос: Код вычисляющий хеш: #!/usr/bin/env python “”" Google Toolbar 3.0.x/4.0.x Pagerank Checksum Algorithm Author’s webpage: http://pagerank. gamesaga. net/ “”" def IntStr(String, Integer, Factor): for i in range(len(String)) : Integer *= Factor Integer &= 0xFFFFFFFF Integer += ord(String[i]) return Integer def HashURL(Str): C1 = IntStr(Str, 0×1505, 0×21) C2 = IntStr(Str, 0, 0×1003F) C1 >>= 2 C1 = ((C1 >> 4) & 0×3FFFFC0) | (C1 & 0×3F) C1 = ((C1 >> 4) & 0×3FFC00) | (C1 & 0×3FF) C1 = ((C1 >> 4) & 0×3C000) | (C1 & 0×3FFF) T1 = (C1 & 0×3C0) T1 |= C1 & 0×3C T1 = (T1 T2 = (C1 & 0xFFFFC000) T2 |= C1 & 0×3C00 T2 = (T2 return (T1 | T2) def CheckHash(HashInt): HashStr = “%u” % (HashInt) Flag = 0 CheckByte = 0 i = len(HashStr) – 1 while i >= 0: Byte = int(HashStr[i]) if 1 == (Flag % 2): Byte *= 2; Byte = Byte / 10 + Byte % 10 CheckByte += Byte Flag += 1 i -= 1 CheckByte %= 10 if 0 != CheckByte: CheckByte = 10 – CheckByte if 1 == Flag % 2: if 1 == CheckByte % 2: CheckByte += 9 CheckByte >>= 1 return ‘7′ + str(CheckByte) + HashStr if __name__ == ‘__main__’: import sys if len(sys. argv) print ‘No URL specified.’ sys. exit() print CheckHash(HashURL(sys. argv[1])); Запрос к google: function GooglePagerank($url) { $fp = fsockopen(“toolbarqueries. google. com”, 80, $errno, $errstr, 30); if (!$fp) { return ‘Service not available’; } else { $out = “GET /search? client=navclient-auto&ch=”.Checkhash(hashURL($url)).”&features=Rank&q=info:”.$url.”&num=100&filter=0 HTTP/1.1\r\n”; print($out.”\n”); $out.= “Host: toolbarqueries. google. com\r\n”; $out.= “User-Agent: Mozilla/4.0 (compatible; googleToolbar 2.0.114-big; Windows XP 5.1)\r\n”; $out.= “Connection: Close\r\n\r\n”; fwrite($fp, $out); $data = ”; while (!feof($fp)) { $data.= fgets($fp, 128); } fclose($fp); $pos1 = strrpos($data, ‘:’); if ($pos1 !== false) { if (($pos2 = strpos($data, ‘ ‘, $pos1))===false) { $pos2 = 2; } $pagerank = trim(substr($data, $pos1+1, $pos2)); return $pagerank; } } return ‘unranked’; } Тоесть перый хеш считает, второй запрос делает к google. Код женить не стал, мне на будущее нада будет – щас не до этого. Популярность: 61%