Собственно, недавно писал скрипт для массовой проверки PR, в действии его можно посмотреть тут — массовая проверка PR. Но в один прекрасный момент он у меня перестал работать, так что смотреть там собственно и нечего
(upd: уже сделал, можно проверить работоспособность скрипта) Ну и, теперь мы напишем простенький, но быстрый скрипт массовой проверки PR страниц.
Скрипт массовой проверки PR на php
Приступим. Для начала определимся как и что у нас будет, а будет у нас 2 файла: lala.php и getpr.php
Скрипт в lala.php будет непосредственно взаимодействовать с пользователем — показывать результат проверки и т.п., то есть там основная начинка. Скрипт getpr.php как можно судить из названия будет обрабатывать данные которые идут с lala.php, то есть его задача это получить значение PR той или иной страницы, которая пришла от lala.php.
Всё это дело мы реализуем с помочью библы jQuery. Теперь перейдём непосредственно к рассмотрению/написаю кода. Для начала определимся с пользовательским интерфейсом, состоять он будет из текстового поля (textarea), кнопки которая будет приводить всё в действие (вызов функции lala, которая будет отправлять урлы в файл getpr.php), ну и таблица где будут отображаться данные.
Файл lala.php:
<textarea id='urls' cols='80' rows='15' wrap='off'> http://wooden-stool.ru http://google.ru </textarea><br/> <input type="button" onclick=lala() value="Проверить"><br><br> <table id="pr" /></table>
Теперь сама функция lala:
<script>
function lala() {
// производим очистку нашего текстового поля
document.getElementById('pr').innerHTML = "";
// помещаем данные из текстареа в переменную urllist
urllist=document.getElementById('urls').value;
arr=urllist.split('\n'); //
counturl = arr.length -1;
// простенький цикл, 1 повторение - 1 отработанная страница
for(var i=0;i<=counturl;i++){
if (arr[i].length<5) continue; // если кол-во знаков меньше 5 то, переходим к другой странице
var url = trim(arr[i]); // удаляем переносы, пробелы (функция trim чуть ниже)
// Собственно, отправляем данные скрипту getpr.php
$.ajax({
async: "false",
data: { url: url },
type: "GET",
dataType: "text",
url: "getpr.php",
success: function(xml) {
$(xml).find("prdata").each(
function () {
// помещаем значение pr в переменную pr
var pr = $(this).find('pr').text();
// помещаем url страницы в переменную url
var url = $(this).find('urlxml').text();
url = url.slice(0, 60) + '...'; // обрезаем длинные урлы до 60 знаков
// добавляем полученные данные (пр страницы и собственно урл страницы) в таблицу 'pr'
jQuery('<tr><td>'+pr+'</td><td>'+url+'<td></tr>').appendTo('#pr');
});}});}
//функция trim
function trim(str) {
var newstr=str.replace(/\ \;/g,"\xa0");
newstr=newstr.replace(/^\s+|\s+$/g,"");
return newstr;
}}
</script>
Не забудьте подключить jQuery. Если что не понятно — спрашивайте.
Теперь следующая простыня — файл getpr.php, скрипт будет определять PR страниц сайта:
<?PHP
$url = $_GET['url']; // принимаем на url
// создаём XML куда пихаем пр и адрес текущей, проверяемой, страницы
$dom = new DomDocument('1.0');
$getpr = $dom->appendChild($dom->createElement('getpr'));
$prdata = $getpr->appendChild($dom->createElement('prdata'));
$pr = $prdata->appendChild($dom->createElement('pr'));
$urlxml = $prdata->appendChild($dom->createElement('urlxml'));
$pr->appendChild($dom->createTextNode(getpagerank($url)));
$urlxml->appendChild($dom->createTextNode($url));
echo $dom->saveXML();
// Функции для определения PR
function StrToNum($Str, $Check, $Magic)
{
$Int32Unit = 4294967296;
$length = strlen($Str);
for ($i = 0; $i < $length; $i++)
{
$Check *= $Magic;
if ($Check >= $Int32Unit)
{
$Check = ($Check - $Int32Unit * (int) ($Check / $Int32Unit));
$Check = ($Check < -2147483648) ? ($Check + $Int32Unit) : $Check;
}
$Check += ord($Str{$i});
}
return $Check;
}
function HashURL($String)
{
$Check1 = StrToNum($String, 0x1505, 0x21);
$Check2 = StrToNum($String, 0, 0x1003F);
$Check1 >>= 2;
$Check1 = (($Check1 >> 4) & 0x3FFFFC0 ) | ($Check1 & 0x3F);
$Check1 = (($Check1 >> 4) & 0x3FFC00 ) | ($Check1 & 0x3FF);
$Check1 = (($Check1 >> 4) & 0x3C000 ) | ($Check1 & 0x3FFF);
$T1 = (((($Check1 & 0x3C0) << 4) | ($Check1 & 0x3C)) <<2 ) | ($Check2 & 0xF0F );
$T2 = (((($Check1 & 0xFFFFC000) << 4) | ($Check1 & 0x3C00)) << 0xA) | ($Check2 & 0xF0F0000 );
return ($T1 | $T2);
}
function CheckHash($Hashnum)
{
$CheckByte = 0;
$Flag = 0;
$HashStr = sprintf('%u', $Hashnum) ;
$length = strlen($HashStr);
for ($i = $length - 1; $i >= 0; $i --)
{
$Re = $HashStr{$i};
if (1 === ($Flag % 2))
{
$Re += $Re;
$Re = (int)($Re / 10) + ($Re % 10);
}
$CheckByte += $Re;
$Flag ++;
}
$CheckByte %= 10;
if (0 !== $CheckByte)
{
$CheckByte = 10 - $CheckByte;
if (1 === ($Flag % 2) )
{
if (1 === ($CheckByte % 2))
{
$CheckByte += 9;
}
$CheckByte >>= 1;
}
}
return '7'.$CheckByte.$HashStr;
}
function getpagerank($url)
{
$fp = fsockopen("toolbarqueries.google.com", 80, $errno, $errstr, 30);
if (!$fp)
{
}
else
{
$out = "GET /tbr?client=navclient-auto&ch=".CheckHash(HashURL($url))
."&features=Rank&q=info:".$url."&num=100&filter=0 HTTP/1.1\r\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);
while (!feof($fp))
{
$data = fgets($fp, 128);
$pos = strpos($data, "Rank_");
if($pos === false)
{
}
else
{
$pagerank = substr($data, $pos + 9);
}
}
fclose($fp);
}
$pagerank = (strlen($pagerank) > 0) ? $pagerank : -1;
$pagerank = intval($pagerank);
if ($pagerank == -1)
{
$pagerank = 'n/a';
}
$dataz = $pagerank;
$pagerank = 0;
return $dataz;
}
?>
Вот в принципе и всё, данный скрипт без проблем работает на моём сервисе и по сей день без проблем, правда сейчас он куда более проопгрейденный, так сказать
К слову говоря, если вас беспокоит здоровье вашего новорождённого малыша и вы не уверены в своих силах, что сможете оказать, например, первую медицинскую помощь или же просто вам нужна помощь то, советую обратится к няне, вы можете узнать какая должна быть Лучшая няня к грудничку в Москве. Ведь с грудниками нужно обращаться осторожно и знать о них очень многое, в этом вам и поможет няня. На этом у меня всё, удачи.