parsgreen.com
article

محاسبه و نمایش پیج رنک گوگل با php

php-google-page-rank

پیج رنک گوگل یا google page rank که به اختصار به آن PR هم می گویند، یکی از مهم ترین و جنجال برانگیزترین مباحث بین مدیران وبلاگ ها و سایت های مختلف بوده و کماکان هست، تا جایی که برخی به هر روشی که شده، سعی می کنند پیج رنک خود را بالا ببرند و حتی خیلی چیزهای دیگر را فدای آن می کنند! به هر صورت بحث ما در مورد اینکه چگونه پیج رنک خود را افزایش دهیم یا مسائل از این دست نیست، بلکه می خواهیم ببینیم چگونه می توان با زبان برنامه نویسی PHP، نمره پیج رنک گوگل سایت یا وبلاگ خود را به دست آورد، البته در این مطلب نمی خواهیم نحوه ساخت ابزار نمایش پیج رنک گوگل را آموزش دهیم، بلکه می خواهیم پایه و مبنای اصلی کار برای برنامه نویسان، که همان عددی است که گوگل برای آدرس سایت ها و وبلاگ های درخواست شده بر می گرداند را با PHP دریافت کنیم، اینکه از این عدد چطور استفاده خواهیم کرد، بستگی به ایده های ذهنی و سلیقه خودتان دارد.

پیج رنک گوگل چیست؟


بد نیست قبل از اینکه وارد بحث اصلی شویم، مروری داشته باشیم به اینکه اصلا پیج رنک گوگل چیست؟ جواب این است که پیج رنک الگوریتمی پیچیده برای آنالیز یک لینک (صفحه) از لحاظ میزان ارزشمندی و محبوبیت در وب است، ارزشمندی یک لینک (صفحه) نیز بر اساس میزان و اهمیت صفحاتی است که به آن، لینک خروجی داده اند، به این ترتیب گوگل نمره ای از 0 تا 10 برای هر سایت (و در واقع برای هر لینک) در نظر می گیرد، هر چه این عدد بالاتر باشد، یعنی گوگل برای آن صفحه یا لینک ارزش بیشتری قائل است و اعتبار بیشتری به آن لااقل در تئوری می  دهد، البته در نمایش نتایج جستجو، پیج رنک، تنها یک بُعد کار است، الگوریتم های گوگل آنقدر پیچیده شده اند که بسیاری از عوامل را درهنگام نمایش مطالب سایت ها و وبلاگ ها در لیست نتایج جستجو دخیل می کنند، یا نوع امتیاز دهی گوگل به سایت ها و وبلاگ هایی که به فرض به تعداد زیادی لینک خروجی می دهند با سایت ها یا وبلاگ هایی که تنها به چند عدد لینک بسنده می کنند، فرق دارد، بعضا دیده شده، گوگل حتی رتبه سایتهای تبلیغاتی و پُر از لینک خروجی را به شدت کاهش داده و باعث حیرت همگان شده است.
به لحاظ تجاری عنوان پیج رنک یا page rank توسط گوگل ثبت شده است اما به لحاظ سابقه تاریخی این عنوان ابتدا متعلق به دانشگاه استنفُرد امریکا (Stanford University) بود و امتیاز آن در سال 2005 توسط شرکت گوگل از این دانشگاه خریداری شد، به تدریج با پیروی از گوگل، سایر رقبای جدی آن نیز تا حدودی این معیار را در الگوریتم های جستجوی خود اعمال کرده اند و اکنون تقریبا پیج رنک بالا تر یکی از نشانه های احتمال موفقیت بیشتر در وب است (البته تنها یکی از نشانه ها نه همه چیز!).

پیج رنک گوگل از چه آدرسی قابل دریافت است؟


پیج رنک گوگل را بر روی تولبارهای نمایش پیج رنک که در مرورگرهای مختلف تحت عنوان پلاگین نصب می شوند، می توان دریافت کرد، این تولبار ها با ایجاد درخواست به آدرس toolbarqueries.google.com و با ارسال آدرس صفحه مورد نظر، عددی را در جواب بین 0 تا 10 دریافت می کنند (برای صفحاتی که هنوز رتبه ای ندارند، هیچ چیز دریافت نمی شود) و آن عدد را به اشکال مختلف پردازش کرده و معمولا به صورت گرافیکی نشان می دهند.

محاسبه پیج رنک گوگل با کدهای php


زبان برنامه نویسی php این امکان را دارد که با ایجاد یک شبیه سازی با ابزارهای تولبار مرورگرها، به صورت مستقیم آدرس یک لینک را ارسال و عدد برگردانده شده توسط گوگل را نمایش دهد (توجه کنید که گوگل با هدف نمایش پیج رنک در تولبار خود، این سرویس را در دسترس قرار داده است، در واقع با php به نوعی این تولبار را جعل می کنیم)، در زیر به یکی از قوی ترین کدهایی که تا کنون در این خصوص نوشته شده است اشاره می کنیم؛ یادآور می شویم، چندی پیش گوگل در تولبار پیج رنک خود تغییراتی اعمال کرد که موجب از کارافتادن برخی از کدهای مشابه شد، اما این کد با سیستم جدید گوگل تطابق دارد.
<?php
//آدرس لینک جهت دریافت پیج رنک گوگل
$website = 'http://webgoo.ir';
//انتقال به صفحه پیش فرض در صورتی که لینک تنظیم نشده باشد
if (!isset($website)){
    header("Location: http://webgoo.ir");
    die();
}
if($website){
    if( !strstr($website,"http://") && !strstr($website,"https://") ){
            $website = "http://".$website;
    }
}
//تنظیمات اتصال به سرور گوگل
$googlehost='toolbarqueries.google.com';
//تنظیم واسط کاربری فرضی
$googleua='Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5';
//تبدیل یک رشته به عدد صحیح 32 بیت
function StrToNum($Str, $Check, $Magic) {
    $Int32Unit = 4294967296; // 2^32
    $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 getch($url) { return CheckHash(HashURL($url)); }
//دریافت عدد پیج رنک برگردانده شده توسط گوگل
function getpr($url) {
    global $googlehost,$googleua;
    $ch = getch($url);
    $fp = fsockopen($googlehost, 80, $errno, $errstr, 30);
    if ($fp) {
       $out = "GET /tbr?client=navclient-auto&ch=$ch&features=Rank&q=info:$url HTTP/1.1\r\n";
       $out .= "User-Agent: $googleua\r\n";
       $out .= "Host: $googlehost\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{
                $pr=substr($data, $pos + 9);
                $pr=trim($pr);
                $pr=str_replace("n",'',$pr);
                return $pr;
            }
       }
       fclose($fp);
    }
}
?>
توضیح:
- کد بالا یک شبیه ساز تولبار گوگل است که پیج رنک لینک های درخواستی را نمایش می دهد (به صورت اعداد صفر تا 10).
- آدرس لینک (سایت، وبلاگ یا صفحه) خود را باید در متغیر website در بالای کد، تعریف کنید.
- سپس قسمت مربوط به if و http، https بررسی می کند که آیا لینک شما معتبر است یا خیر، اگر لینک با http یا https شروع نشده باشد، در ادامه، مقادیر به متغیر website اضافه خواهند شد تا لینک به صورت استاندارد درآید.
- در گام بعدی، تنظیمات مربوط به اتصال به سرور گوگل در آدرس toolbarqueries.google.com با یک واسط کاربری (UserAgent) فرضی (در واقع جعلی) اعمال می شود.
- قسمت های مربوط به توابع StrToNum، HashURL و CheckHash به طور ساده فرمولی است برای ایجاد کد عددی، مطابق با آدرس لینک درخواستی، این کد توسط گوگل با آدرس لینک مورد نظر تطبیق داده می شود و اگر صحیح باشد عدد پیج رنک را برمی گرداند.
- در تابع getpr، اتصال به سوکت با fsockopen و پورت 80 انجام می شود و نهایتا نتیجه به صورت عددی از 0 تا 10 به عنوان پیج رنک برگردانده می شود.

فراخوانی تابع محاسبه و نمایش پیج رنک گوگل


تابع بالا را به صورت زیر می توان فراخوانی کرد تا نتیجه محاسبه، به صورت یک عدد بین 0 تا 10 نمایش داده شود (برای صفحاتی که هنوز نمره ای دریافت نکرده اند، هیچ چیز نشان داده نخواهد شد).
<?php
//فراخوانی تابع و نمایش عدد پیج رنک گوگل
$pr = getpr("$website");
echo $pr;
?>
از این عدد می توان به صورت های مختلف استفاده کرد، مثلا به صورت داینامیک، پارامترهای دیگری به آن اضافه کرده و به صورت یک ابزار نمایش پیج رنک گوگل مورد استفاده قرار داد، یا می شود برای آگاهی از رنک سایت یا وبلاگ شخصی خود از آن بهره برد، در کل مهم این است که بتوانیم نتیجه را به صورت یک عدد بین 0 تا 10 دریافت کنیم، نحوه استفاده بستگی به ذوق، سلیقه و ایده های خودتان دارد.
sectionدسته بندی: آموزش کاربردی » PHP
related مطالب بیشتر:
» نمایش قسمتی از متن و پاراگراف با php
» آموزش ساخت نقشه سایت (Sitemap) با php و xml
» محدود کردن لینک دانلود مستقیم فایل ها با PHP و htaccess
» ساخت فید خوان آر اس اس (RSS Feed Reader) با php
» تبدیل تاریخ میلادی به شمسی، با استفاده از مبدل jdf در php
commentنظرات (۱۷ یادداشت برای این مطلب ارسال شده است)
نویسنده: حسین
زمان: ۲۰:۰۷:۳۹ - تاریخ: ۱۳۹۱/۱۲/۰۸
سلام.من این کدی که دادین رو امتحان کردم.متاسفانه صفحه همین طور تو لودینگ گیر میکنه و بالا نمیاد.
من خودم به شدت این اسکریپت رو نیاز دارم.خودم کد پایین رو دارم.تو localhost-xampp کاملا درس کار میکنه ولی تو سایتم ارور میده thats all we know...
کد:
$url=$_GET['url'];
function GetPageRank($q,$host='toolbarqueries.google.com',$context=NULL) {
$seed = "Mining PageRank is AGAINST GOOGLE'S TERMS OF SERVICE. Yes, I'm talking to you, scammer.";
$result = 0x01020345;
$len = strlen($q);
for ($i=0; $i<$len; $i++) {
$result ^= ord($seed{$i%strlen($seed)}) ^ ord($q{$i});
$result = (($result >> 23) & 0x1ff) | $result << 9;
}
$ch=sprintf('8%x', $result);
$url='http://%s/tbr?client=navclient-auto&ch=%s&features=Rank&q=info:%s';
$url=sprintf($url,$host,$ch,$q);
@$pr=file_get_contents($url,false,$context);
return $pr?substr(strrchr($pr, ':'), 1):false;
}
پاسخ: 
سلام
خیلی ممنون از یادآوری شما، مشکل کد بررسی و رفع شد.
نویسنده: حسین
زمان: ۱۶:۳۰:۲۳ - تاریخ: ۱۳۹۱/۱۲/۱۶
سلام. ببخشید این اسکریپتتون درست کار میکنه ولی باز یک مشکلی دارم.
من هر اسکریپتی رو که روی لوکال امتحان میکنم، کاملا درست کامل میکنه ولی تا رو سایتم کلا مشکل داره (همون کد) نمیدونم چرا اینطور میشه.
فقط رو سایتم مشکل داره. یه کدی بود که برای دو هفته ای کار کرد ولی یک دفعه از کار افتاد. دلیل چیه؟
پاسخ: 
سلام
اگر منظورتان اسکریپت پیج رنک است، از این کد استفاده کنید که طبق آخرین تغییرات سیستم پیج رنگ گوگل به روز شده است و اگر هم مشکلی باشد ممکن است از تنظیمات هاست یا از دسترس خارج شدن گوگل در ایران باشد (به دلایل مختلف) که این حالت موقتی است و پس از مدتی رفع می شود، اما اگر ایراد از هاست باشد (که در این مورد بعید است) در کل نباید حتی یک بار هم کد کار کند.
به هر صورت باید با ریشه یابی، علت خطا را فهمید.
نویسنده: حسین
زمان: ۱۹:۵۲:۴۱ - تاریخ: ۱۳۹۱/۱۲/۱۶
سلام. آره گوگل خیلی وقت ها تو ایران در دسترس نیست اما من هر زمان که در لوکال امتحان میکنم اصلا محاله که این مشکل باشه. هر اسکریپتی هم که باشه. اما رو سایت مشکل داره.
گفتید امکان داره از هاست باشه. میشه دقیق تر بگید و اگه مشکل از هاست باشه باید چیکار کنم؟
راستی بابت همه کمک هاتون ممنون.
پاسخ: 
به احتمال زیاد مشکل از روشن بودن magic_quotes_gpc در لوکال و خاموش بودن آن در هاست است، این قابلیت در هنگام ارسال خروجی، قبل از علامت های "" یک بک اسلش (\) به صورت خودکار اضافه می کند که این مورد در هنگام کار با جاوا اسکریپت نیاز است، در واقع هاست شما مشکلی ندارد و این قابلیت در حالت عادی باید غیر فعال باشد، اما موقع استفاده از document.write دقت کنید که موارد داخل این دستور با یک \ درج شوند، به طور مثال:
document.write('<iframe style=\"border:0px;\" ></iframe>');
بدین منظور می توانید از تابع addslashes استفاده کنید، البته برای اطمینان از روشن نبودن magic_quotes_gpc (و جلوگیری از درج دو بک اسلش) موارد خروجی را از فیلتر تابع زیر نیز عبور دهید:
function CleanGPC($str){
if(get_magic_quotes_gpc()){
$str = stripslashes($str);
}
return $str;
}
نکته: خروجی کدهای خود را از طریق مرورگر فایرفاکس می توانید به صورت دقیق مشاهده کنید و از صحیح بودن syntax آنها اطمینان حاصل کنید.
نویسنده: حسین
زمان: ۲۳:۱۶:۰۳ - تاریخ: ۱۳۹۱/۱۲/۱۸
سلام.ببخشید که انقدر طولانی شد حرفام. باید ببخشید.
این لینک رو نگاه کنید
http://tools.themeviews.ir/pr_checker
حق با شماست این مشکل بخاطر تنظیمات هاست نیست. من برای چند ساعت باز دیدم دیروز درست کار کنه. اما باز از کار افتاد. تو لوکال هاست همیشه درست کار میکنه.
راهکاری ندارید که باید چیکار کنم درست بشه؟ سایت های دیگه خیلیاشون هر زمان درست کار میکنه
پاسخ: 
سلام
راهکار در پاسخ قبلی گفته شد! syntax خروجی شما چون در تگ های جاوا اسکریپت استفاده می شود، باید مطابق با استاندارد آن باشد تا کد اجرا شود، مشکل کد شما این است که علامت های "" (در خروجی کدهای php) بدون بک اسلش (\) چاپ می شوند.
نویسنده: مصطفی
زمان: ۰۲:۵۹:۲۴ - تاریخ: ۱۳۹۲/۰۱/۱۷
سلام و سپاس از مطلب ارزشمندتون.
آیا خود گوگل فرمولی رو برای این امتیاز بندی ارائه کرده؟ یعنی قواعد و قوانینی که عمل به اون ها باعث بالارفتن رنک یک سایت میشه؟
سپاسگذارم
پاسخ: 
سلام
قواعد گوگل، همان قواعد کلی بهینه سازی وب برای موتورهای جستجو یا (SEO) است، البته در مورد پیج رنک تکیه اصلی بر روی لینک های ورودی به یک سایت و ارزش آنها است، فرمول هر موتور جستجو برای محاسبه پیج رنک مخفی و محرمانه است، اما با رعایت اصول وب و داشتن وبی پویا می توانید به افزایش پیج رنک خود امیدوار باشید.
نویسنده: عماد
زمان: ۰۲:۵۹:۳۵ - تاریخ: ۱۳۹۲/۰۶/۰۶
سلام ممنون از مطلب بسیار خوبتون.
اگر میشه محاسبه و نمایش رتبه الکسا رو هم توضیح بدبد ممنون میشم.
پاسخ: 
سلام
ممنون از پیشنهاد خوب شما، در مطالب آینده و در فرصتی مناسب به آن خواهیم پرداخت.
نویسنده: sajad
زمان: ۱۴:۳۶:۱۷ - تاریخ: ۱۳۹۲/۱۰/۱۹
سایت تون حرف نداره فقط یه آیتم کم داره اونم جی کوئری هستش .چرا تو سایت تون نیست؟
پاسخ: 
جی کئوری یک فریم ورک حجیم است که بیشتر آموزش های آن به نحوه استفاده از کدهای آماده محدود می شود!
بد یا خوب، اعتقاد ما همیشه به استفاده از زبان های ساده (pure) یا فریم ورک های شخصی است.
نویسنده: بارز دیتا
زمان: ۰۰:۵۹:۴۴ - تاریخ: ۱۳۹۲/۱۱/۰۲
عالی
مثل همیشه
نویسنده: amin
زمان: ۰۱:۳۰:۵۵ - تاریخ: ۱۳۹۳/۰۶/۱۰
سلام با تشکر بخاطر اموزشی که گذاشتید
نمیدونم کجای کار رو اشتباه انجام میدم
چک کردن رتبه الکسا رو از جایی دیگه خودنم راحت اجرا میشد ولی این کد هیچی نشون نمیده رو ادرس وبگو تست کردم هیچی نشون نمیده لطفا تستش کنید
پاسخ: 
سلام
قسمت مربوط به فراخوانی تابع را اجرا می کنید؟!، یعنی قسمت زیر را در همان صفحه استفاده کرده اید؟!
//فراخوانی تابع و نمایش عدد پیج رنک گوگل
$pr = getpr("$website");
echo $pr;
کد مشکلی ندارد و تست شده!
نویسنده: amin
زمان: ۲۰:۵۶:۲۲ - تاریخ: ۱۳۹۳/۰۶/۱۰
ممنون از پاسختون
بله تابع رو فراخوانی میکنم
برای انجام این کار ویژگی خاصی باید روی هاست فعال باشه؟
پاسخ: 
مشکل می تواند از عدم پشتیبانی از fsockopen در سرور (پشتیبانی از Sockets باید فعال باشد) یا فعال نبودن Open SSL باشد که باید با پشتیبانی هاستتان موضوع را مطرح کنید تا از طریق تنظیمات PHP فعال شوند، همچنین امکان مسدود شدن IP سرور شما در سرور تولبار گوگل نیز وجود دارد که این مورد خیلی محتمل نیست.
نویسنده: شیما
زمان: ۰۲:۴۶:۵۹ - تاریخ: ۱۳۹۳/۱۰/۱۵
سلام خسته نباشید یه سوال دارم
من رتبه وبلاگ قبلیم رو تو پیج رنک میزنم ولی به جای عدد این رو نشون میده: NA میشه بگید معنیش چیه؟ ممنون
پاسخ: 
سلام
N/A مخفف عبارت Not Available یا No Answer است!
- ممکن است آدرس را اشتباه وارد کرده باشید.
- ممکن است برنامه برررسی پیج رنک مشکلی داشته باشد.
- در کل این علامت یعنی هنوز هیچ رتبه ای به آن آدرس اختصاص داده نشده.
نویسنده: شیما
زمان: ۰۴:۴۷:۳۱ - تاریخ: ۱۳۹۳/۱۰/۱۸
خیلی ممنونم بابت پاسختون استفاده کردم
نویسنده: zahra
زمان: ۱۷:۰۷:۱۵ - تاریخ: ۱۳۹۳/۱۰/۲۳
دمتون گرم
زنده و شاد و سربلند باشید
خدا خیرتون بده واقعا سایت تون کمک بزرگی بود برام
ممنووووووووووووووووووووووووووون
نویسنده: احسان
زمان: ۱۱:۰۳:۱۸ - تاریخ: ۱۳۹۴/۰۷/۲۴
سلام واسه به دست اوردن بک لینک و ایندکس گوگل باید به چه روشی عمل کرد؟
نمونه کدی دارید مثل بالا
پاسخ: 
سلام
ظاهرا نمونه کدهای آماده برای این کار وجود دارد (تست نشده!):
http://99webtools.com/blog/php-script-to-count-google-backlinks-and-indexed-pages/
نویسنده: احسان
زمان: ۰۰:۵۵:۲۳ - تاریخ: ۱۳۹۴/۰۷/۲۶
تست کردم بدون مشکل کار میکنن ممنون
paged صفحه 1 از 2




more لطفا دقت کنید که یادداشت های زیر منتشر نشده و حذف خواهند شد:
- یادداشت های خارج از موضوع این مطلب.
- سوالات کلی، غیر ضروری و مشکلاتی که هیچ تلاشی برای رفع آن نکرده باشید.
- نظرات حاوی کدها و اسکریپت های خیلی طولانی (به طور مثال کد کامل قالب وبلاگ).

9 × 6
 refresh
آگهی
seonab.com
طراحی نرم افزار اندروید
رنگین کمان عکس
Ranginkamaan.com

آرشیو عکس های باکیفیت با موضوعات متنوع...