Помощник
|
О контрольной сумме Google |
Adm
|
Сообщение
#1
|
|
Люди!
Объясните мне - кто такая Google CheckSum (только не надо писать, что "это то, что стоит после 'ch=' в адресе...") и как ее вычислить, зная URL? -------------------- |
|
|
Oshparenniy |
24.1.2008, 11:34;
Ответить: Oshparenniy
Сообщение
#2
|
||
|
|
||
|
|||
Adm
|
Сообщение
#3
|
|
Цитата(Oshparenniy) Ой, а где ето явление можно понабдюдать? куда заходить то?
Наблюдать можно в скриптах для подсчета PR. У меня даже есть такой скриптик, но в пхп разбираюсь как свинья - в апельсинах и перевести то, что там написано, не могу -------------------- |
|
|
Oshparenniy |
24.1.2008, 14:17;
Ответить: Oshparenniy
Сообщение
#4
|
|
Цитата(Adm) Наблюдать можно в скриптах для подсчета PR. У меня даже есть такой скриптик, но в пхп разбираюсь как свинья - в апельсинах и перевести то, что там написано, не могу
Так елки-моталки, кидай этот скриптик сюда... |
|
|
Adm
|
Сообщение
#5
|
|
Цитата(Oshparenniy) Так елки-моталки, кидай этот скриптик сюда...
if ($action == "exec") { // Определяем константу GOOGLE_MAGIC define('GOOGLE_MAGIC', 0xE6359A60); // Удаляем "www." из $url $url = str_replace("www.", "", $_REQUEST['url']); /* 1. Функции для определения ТИЦ */ // // Функция, определяющая значение тематического индекса цитирования (ТИЦ) Яндекса // // Входные данные: // $url - адрес страницы, ТИЦ которой требуется определить // // Выходные данные: // $ci[1] - значение ТИЦ для страницы $url // function getCI($url) { $url = str_replace("www.", "", $url); $ci_url = "http://bar-navig.yandex.ru/u?ver=2&show=32&url=http://www.".$url."/"; $ci_data = implode("", file("$ci_url")); preg_match("/value="(.d*)"/", $ci_data, $ci); if ($ci[1] == "") return 0; // Если не смогли определить ТИЦ... else return $ci[1]; // Вот оно счастье... } /* 2. Функции для определения PR */ // // Функция, выполняющая беззнаковый сдвиг вправо // // Входные данные: // $a - переменная, подвергаемая сдвигу // $b - величина сдвига // // Выходные данные: // $a - результат выполнения сдвига // function zeroFill($a, $ { $z = hexdec(80000000); if ($z & $a) { $a = ($a >> 1); $a &= (~$z); $a |= 0x40000000; $a = ($a >> ($b - 1)); } else { $a = ($a >> $; } return $a; } // Функция используется при вычислении Google Checksum (см. ниже) 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); } // // Функция, вычисляющая Google Checksum (контрольную сумму Google) // // Входные данные: // $url - URL, для которого требуется определить Google Checksum // $length - длина строки $url (по умолчанию - null, вычисляется в функции) // $init - "волшебное" число // // Выходные данные: // $mix[2] - значение Google Checksum для заданного адреса $url // 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); // Первый байт $c зарезервирован для значения $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 = mix($a, $b, $c); return $mix[2]; } // // Функция, преобразующая строку в массив целых чисел, содержащий числовые // значения каждого символа преобразуемой строки // // Входные данные: // $string - преобразуемая строка // // Выходные данные: // $result - массив целых чисел, содержащий числовые значения каждого // символа строки $string // function strord($string) { for ($i = 0; $i < strlen($string); $i++) { $result[$i] = ord($string{$i}); } return $result; } // // Функция, определяющая значение Google PageRank (PR) // // Входные данные: // $url - адрес страницы, PageRank которой требуется определить // $prefix - тип получаемых сведений (в данном примере получаем // сведения Google Toolbar - $prefix = "info:") // $datacenter - сервер, с которого требуется получить сведения (по // умолчанию - www.google.com) // // Выходные данные: // $rank - значение PageRank для страницы $url // function getrank($url, $prefix = "info:", $datacenter = "www.google.com") { $url = $prefix.$url; $ch = GoogleCH(strord($url)); // Вычисляем Google Checksum $file = "http://$datacenter/search?client=navclient-auto&ch=6$ch&features=Rank&q=$url"; // Примечание: для получения детализированного результата запроса (в XML // формате) требуется убрать "&features=Rank"; обработка подобного результата // существенно отличается от рассматриваемой обработки результата запроса // и в данном скрипте не рассматривается $olderrorlevel = error_reporting(0); // Временно приостанавливаем выдачу сообщений об ошибках $data = file($file); error_reporting($olderrorlevel); // Устанавливаем предыдущий уровень сообщений об ошибках // Если $data не содержит данных Google или введен неверный URL // Примечание: здесь функция preg_match выполняет роль простого средства, // проверяющего URL на корректность if (!$data || preg_match("/(.*).(.*)/i", $url) == 0) return "Нет данных"; $rankarray = explode(':', $data[2]); // Две строчки отделяют значение Google PageRank $rank = trim($rankarray[2]); // Удаляем ненужные пробелы и символы новой строки // Если не удалось определить PageRank if ($rank == "") return "Нет данных"; return $rank; // Вот оно счастье... } ?> PageRank: ТИЦ: } ?> Можешь объяснить, что происходит в этих двух функциях? -------------------- |
|
|
mik-a-el |
25.1.2008, 11:46;
Ответить: mik-a-el
Сообщение
#6
|
|
Контрольная сумма используется для получения данных о PageRank страницы.
|
|
|
Adm
|
Сообщение
#7
|
|
Цитата(mik-a-el) Контрольная сумма используется для получения данных о PageRank страницы.
Для чего она используется я знаю. -------------------- |
|
|
Nemo |
25.1.2008, 13:13;
Ответить: Nemo
Сообщение
#8
|
|
Цитата(Adm) и как ее вычислить, зная URL?
http://tumanov.com/projects/scriptlets/goo...ankchecksum.asp |
|
|
Adm
|
Сообщение
#9
|
|
|
Цитата(Nemo)
Спасибо! С этим уже разберусь!
-------------------- |
|
|
||
|
Похожие темы
Тема | Ответов | Автор | Просмотров | Последний ответ | |
---|---|---|---|---|---|
⭐⭐⭐ Google Voice | Gmail - OLD аккаунты "SMS и звонки" ⭐⭐⭐ | 14 | Chekon | 4271 | 10.4.2024, 11:07 автор: Chekon |
|
Если статья не в индексе Google - она уникальна или нет? | 5 | uahomka | 1429 | 3.4.2024, 23:56 автор: Liudmila |
|
Google запускает новый браузер элементами искусственного интеллекта | 38 | arendator | 13467 | 21.3.2024, 18:10 автор: Rebex |
|
Сайт не индексируется в Google без добавления ссылок в адурилку | 4 | Nekit | 1082 | 20.3.2024, 21:44 автор: MorKer |
|
Google adwords показывает дробное количество конверсий | 0 | Megaspryt | 752 | 16.3.2024, 23:19 автор: Megaspryt |
Текстовая версия | Сейчас: 18.4.2024, 5:31 |