پنجشنبه ۲۳ اسفند ۱۴۰۳

Thursday, March 13, 2025 GMT +3:30

دریافت و نمایش پیج رنک گوگل با PHP

php-google-page-rank

در فضای رقابتی وب پیج رنک گوگل یا Google Page Rank که به اختصار به آن PR هم می گویند یکی از مهم ترین و جنجال برانگیزترین مباحث بین مدیران سایت ها و وبلاگ های مختلف بوده و در لحظه نگارش این مطلب کماکان هست، تا جایی که برخی به هر روشی که شده سعی می کنند رنک صفحات خود را بالا برده و در این راه متاسفانه به روش های غیرحرفه ای نیز متوصل می شوند! به هر صورت در این مطلب بحث ما در خصوص اینکه چگونه پیج رنک خود را افزایش دهیم یا مسائل از این دست نیست، بلکه می خواهیم ببینیم چگونه می توانیم با زبان برنامه نویسی PHP عدد پیج رنک گوگل سایت یا وبلاگ خود را به دست آوریم، البته نمی خواهیم نحوه ساخت ابزار نمایش پیج رنک گوگل را آموزش دهیم بلکه می خواهیم روش پایه و مبنای اصلی کار برای برنامه نویسان که همان مقادیر عددی است که گوگل برای آدرس سایت ها و وبلاگ های درخواست شده بر می گرداند را با PHP دریافت کنیم، اینکه از این عدد چطور استفاده کنیم بستگی به ایده های ذهنی و سلیقه برنامه نویس دارد.

نکته: با توجه به اعمال تغییرات جدید در سیاست های گوگل در زمینه عدم نمایش عمومی رنک صفحات وب از ماه مارس 2016، متاسفانه تمام روش های دریافت رتبه از کار افتاده اند و به تبع روش ارائه شده در این آموزش نیز تا اطلاع ثانوی عمل نخواهد کرد و کاربردی نخواهد داشت.

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


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

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


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

دریافت پیج رنک گوگل با کدهای PHP


زبان برنامه نویسی PHP این امکان را دارد که با ایجاد شبیه سازی نحوه کار ابزارهای تولبار مرورگرها، به صورت مستقیم آدرس یک لینک را ارسال و عدد برگردانده شده توسط گوگل را دریافت و نمایش دهد (توجه کنیم که گوگل با هدف نمایش پیج رنک در سرویس تولبار خود این امکان را در دسترس عموم قرار داده است و در واقع با PHP به نوعی این تولبار را شبیه سازی می کنیم)، در زیر به درج و بررسی یکی از بهترین کدهایی که تا کنون در این خصوص نوشته شده است می پردازیم، یادآور می شویم چندی پیش گوگل در سرویس تولبار پیج رنک خود تغییراتی اعمال کرد که موجب از کارافتادن برخی از کدهای مشابه شد اما این کد در لحظه نگارش این مطلب با سیستم جدید گوگل تطابق دارد:
<?php
//آدرس لینک جهت دریافت پیج رنک گوگل
$website = 'https://webgoo.ir';

//انتقال به صفحه پیش فرض در صورتی که لینک تنظیم نشده باشد
if(!isset($website)) {
    header("Location: https://webgoo.ir");
    die();
}

//بررسی درج http و https در آدرس
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);
    }

    return false;
}
?>
توضیح:
- کد بالا یک شبیه ساز تولبار گوگل است که پیج رنک URL های درخواستی را نمایش می دهد (به صورت اعداد 0 تا 10).
- آدرس URL (سایت، وبلاگ یا صفحه) خود را باید در متغیر website در قسمت بالای کد تعریف کنیم.
- سپس قسمت مربوط به شرط if بررسی می کند که آیا لینک ما از نظر وجود http و https در ابتدای آن معتبر است یا خیر، اگر لینک با http یا https شروع نشده باشد در ادامه مقادیر پیش فرض http به متغیر website اضافه خواهد شد تا لینک به صورت استاندارد درآید.
- در گام بعدی تنظیمات مربوط به اتصال به سرور گوگل در آدرس toolbarqueries.google.com با یک واسط کاربری (UserAgent) فرضی اعمال می شود.
- قسمت های مربوط به توابع strToNum، hashURL و checkHash به طور ساده فرمول و الگوریتمی است برای ایجاد مقادیر عددی مطابق با آدرس لینک درخواستی، این مقادیر توسط گوگل با آدرس لینک مورد نظر تطبیق داده می شود و اگر صحیح باشد عدد پیج رنک را برمی گرداند.
- در تابع getPR اتصال به سوکت با fsockopen و پورت 80 انجام می شود و نهایتا نتیجه به صورت عددی از 0 تا 10 به عنوان پیج رنک برگردانده می شود.

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


تابع بالا را به صورت زیر می توانیم فراخوانی کنیم تا نتیجه درخواست به صورت عددی بین 0 تا 10 نمایش داده شود (برای صفحاتی که هنوز نمره ای دریافت نکرده اند، هیچ چیز نشان داده نخواهد شد).
<?php
//فراخوانی تابع و نمایش عدد پیج رنک گوگل
$pr = getPR("$website");
echo $pr;
?>
از این عدد می توان به شیوه های مختلف استفاده کرد، به طور مثال به صورت داینامیک پارامترهای دیگری به آن اضافه کرده و به شکل یک ابزار نمایش پیج رنک گوگل مورد استفاده قرار داد، یا به فرض برای آگاهی از رنک سایت یا وبلاگ شخصی خود از آن بهره برد، در دنیای برنامه نویسی وب مهم این است بتوانیم نتیجه را در سمت سرور به صورت عددی (بین 0 تا 10) دریافت کنیم، نحوه استفاده از این مقدار در سمت کاربر بستگی به ذوق، سلیقه و ایده های خودمان دارد.
دسته بندی: آموزش کاربردی » PHP
related مطالب بیشتر:
ساخت فید خوان آر اس اس (RSS Feed Reader) با PHP
نمایش آمار بازدیدها با PHP بدون استفاده از دیتابیس
محدود کردن لینک دانلود مستقیم فایل ها با PHP و htaccess
نمایش قسمتی از متن و پاراگراف با PHP
ارسال ایمیل با PHP و کلاس PHPMailer
دیدگاه
more ۱۷ دیدگاه برای این مطلب ارسال شده است.
more چینش دیدگاه ها به ترتیب از جدیدترین به قدیمی ترین است.
۱۴:۴۶ ۱۳۹۵/۰۲/۱۵
روش ساخت RSS را نمیدانم کسی میتونه راهنمایی کنه یا بسازه
لطفا عبارت "نحوه ساخت RSS" را در وب جستجو کنید!
امین
۱۴:۲۶ ۱۳۹۴/۰۹/۱۶
آیا برای نمایش پرچم کشورها بر اساس آی پی کلاسی داری
من سرچ زیاد کردم متاسفانه اکثرا یا درست کار نمیکنن یا از خود سایت لینک میکن.
من خود کلاسشو میخوام.
کدها و روش های زیادی برای این منظور در وب وجود دارد، دو نمونه آدرس زیر، آموزش نمایش اطلاعات مکانی کاربر بدون دیتابیس آفلاین و با استفاده از API سایت های دیگر است:
http://stackoverflow.com/questions/12553160/getting-visitors-country-from-their-ip

http://roshanbh.com.np/2008/07/getting-country-city-name-from-ip-address-in-php.html
آدرس زیر نیز یک بانک آفلاین IP است که هر چند ماه یکبار به روز می شود و در برنامه ها به راحتی قابل استفاده است (برای داشتن آخرین تغییرات، باید بانک را به صورت دستی به روز کنید):
http://www.phptutorial.info/iptocountry/the_script.html
احسان
۰۰:۵۵ ۱۳۹۴/۰۷/۲۶
تست کردم بدون مشکل کار میکنن ممنون
احسان
۱۱:۰۳ ۱۳۹۴/۰۷/۲۴
سلام واسه به دست اوردن بک لینک و ایندکس گوگل باید به چه روشی عمل کرد؟
نمونه کدی دارید مثل بالا
ظاهرا نمونه کدهای آماده برای این کار وجود دارد (تست نشده!):
http://99webtools.com/blog/php-script-to-count-google-backlinks-and-indexed-pages/
zahra
۱۷:۰۷ ۱۳۹۳/۱۰/۲۳
دمتون گرم
زنده و شاد و سربلند باشید
خدا خیرتون بده واقعا سایت تون کمک بزرگی بود برام
ممنووووووووووووووووووووووووووون
۰۴:۴۷ ۱۳۹۳/۱۰/۱۸
خیلی ممنونم بابت پاسختون استفاده کردم
۰۲:۴۶ ۱۳۹۳/۱۰/۱۵
سلام خسته نباشید یه سوال دارم
من رتبه وبلاگ قبلیم رو تو پیج رنک میزنم ولی به جای عدد این رو نشون میده: NA میشه بگید معنیش چیه؟ ممنون
N/A مخفف عبارت Not Available یا No Answer است!
- ممکن است آدرس را اشتباه وارد کرده باشید.
- ممکن است برنامه برررسی پیج رنک مشکلی داشته باشد.
- در کل این علامت یعنی هنوز هیچ رتبه ای به آن آدرس اختصاص داده نشده.
amin
۲۰:۵۶ ۱۳۹۳/۰۶/۱۰
ممنون از پاسختون
بله تابع رو فراخوانی میکنم
برای انجام این کار ویژگی خاصی باید روی هاست فعال باشه؟
مشکل می تواند از عدم پشتیبانی از fsockopen در سرور (پشتیبانی از Sockets باید فعال باشد) یا فعال نبودن Open SSL باشد که باید با پشتیبانی هاستتان موضوع را مطرح کنید تا از طریق تنظیمات PHP فعال شوند، همچنین امکان مسدود شدن IP سرور شما در سرور تولبار گوگل نیز وجود دارد که این مورد خیلی محتمل نیست.
amin
۰۱:۳۰ ۱۳۹۳/۰۶/۱۰
سلام با تشکر بخاطر اموزشی که گذاشتید
نمیدونم کجای کار رو اشتباه انجام میدم
چک کردن رتبه الکسا رو از جایی دیگه خودنم راحت اجرا میشد ولی این کد هیچی نشون نمیده رو ادرس وبگو تست کردم هیچی نشون نمیده لطفا تستش کنید
قسمت مربوط به فراخوانی تابع را اجرا می کنید؟!، یعنی قسمت زیر را در همان صفحه استفاده کرده اید؟!
//فراخوانی تابع و نمایش عدد پیج رنک گوگل
$pr = getpr("$website");
echo $pr;
کد مشکلی ندارد و تست شده!
۰۰:۵۹ ۱۳۹۲/۱۱/۰۲
عالی
مثل همیشه
۱۴:۳۶ ۱۳۹۲/۱۰/۱۹
سایت تون حرف نداره فقط یه آیتم کم داره اونم جی کوئری هستش .چرا تو سایت تون نیست؟
جی کئوری کتابخانه ی جاوا اسکریپتی حجیم و مخصوص موارد خاص است که بیشتر آموزش های آن به نحوه استفاده از کدهای آماده محدود می شود!
بد یا خوب توصیه ما معمولا به استفاده از زبان های ساده (Pure) یا فریم ورک های شخصی است.
۰۲:۵۹ ۱۳۹۲/۰۶/۰۶
سلام ممنون از مطلب بسیار خوبتون.
اگر میشه محاسبه و نمایش رتبه الکسا رو هم توضیح بدبد ممنون میشم.
ممنون از پیشنهاد خوب شما، در مطالب آینده و در فرصتی مناسب به آن خواهیم پرداخت.
۰۲:۵۹ ۱۳۹۲/۰۱/۱۷
سلام و سپاس از مطلب ارزشمندتون.
آیا خود گوگل فرمولی رو برای این امتیاز بندی ارائه کرده؟ یعنی قواعد و قوانینی که عمل به اون ها باعث بالارفتن رنک یک سایت میشه؟
سپاسگذارم
قواعد گوگل همان قواعد کلی بهینه سازی وب برای موتورهای جستجو یا (SEO) است، البته در مورد پیج رنک تکیه اصلی بر روی لینک های ورودی به یک سایت و ارزش آنها است، فرمول هر موتور جستجو برای محاسبه پیج رنک مخفی و محرمانه است، اما با رعایت اصول وب و داشتن سایتی پویا می توانید به افزایش پیج رنک خود امیدوار باشید.
۲۳:۱۶ ۱۳۹۱/۱۲/۱۸
سلام.ببخشید که انقدر طولانی شد حرفام. باید ببخشید.
این لینک رو نگاه کنید
http://tools.themeviews.ir/pr_checker
حق با شماست این مشکل بخاطر تنظیمات هاست نیست. من برای چند ساعت باز دیدم دیروز درست کار کنه. اما باز از کار افتاد. تو لوکال هاست همیشه درست کار میکنه.
راهکاری ندارید که باید چیکار کنم درست بشه؟ سایت های دیگه خیلیاشون هر زمان درست کار میکنه
راهکار در پاسخ قبلی گفته شد! Syntax خروجی شما چون در تگ های جاوا اسکریپت استفاده می شود، باید مطابق با استاندارد آن باشد تا کد اجرا شود، مشکل کد شما این است که علامت های "" (در خروجی کدهای PHP) بدون بک اسلش (\) چاپ می شوند.
حسین
۱۹:۵۲ ۱۳۹۱/۱۲/۱۶
سلام. آره گوگل خیلی وقت ها تو ایران در دسترس نیست اما من هر زمان که در لوکال امتحان میکنم اصلا محاله که این مشکل باشه. هر اسکریپتی هم که باشه. اما رو سایت مشکل داره.
گفتید امکان داره از هاست باشه. میشه دقیق تر بگید و اگه مشکل از هاست باشه باید چیکار کنم؟
راستی بابت همه کمک هاتون ممنون.
به احتمال زیاد مشکل از روشن بودن 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 آنها اطمینان حاصل کنید.
more لطفا پیش از ارسال دیدگاه نکات زیر را مد نظر داشته باشید:
- به سوالات کلی، زمانبر، مبهم و مشکلاتی که تلاشی برای رفع آنها نکرده باشید پاسخ مختصر داده شده یا به بخش برنامه نویسی اختصاصی ارجاع داده می شوند.
- کدها و اسکریپت های طولانی را ترجیحا در یک صفحه وب آنلاین یا به صورت حساب موقت و آزمایشی قرار دهید تا امکان بررسی دقیق مشکل و خطایابی میسر باشد.
- تمام دیدگاه های ارسالی خوانده شده و برای هر کاربر مدت زمان لازم جهت پاسخگویی در نظر گرفته می شود، لطفا از طرح سوالات متعدد در بازه زمانی کوتاه خودداری کنید.



 refresh
10 × 10
9 × 5
20 × 20
=
آخرین دیدگاه ها
more برای دسترسی سریع به یادداشت مربوطه می توانید از لینک مطلب در کادر زیر استفاده کنید.

عبدی
سلام سایت من توی لوکال هاست اوکیه ولی بارگذاری میکنم تو هاست نمایش درستی به من نمیده چه کنم لطفا راهنمایی کنید
۱۴۰۳/۱۱/۱۴

بیست شو
سلام وقتتون بخیر. ابتدا لازمه که از مطالب مفید و سایت خوبتون تشکر کنم. در این مقاله کد نهایی پیشنهادی تعداد زیادی ایکون...
۱۴۰۳/۱۱/۱۳

رقیه موسوی
سلام سایت منم بررسی میکنین کلن بهم ریختگی دارم در گوشی و سیستم
۱۴۰۳/۱۱/۰۳

سیدعباسی
با سلام و خسته نباشید این کد رو نگاه کنید شروع می شن رو حذف کنم و فقط متن لینک باقی بمونه ولی...
۱۴۰۳/۱۱/۰۲

امیرحسین
سلام وقت بخیر بنده میخوام با کمک curl دیتابیس پنل رو دانلود کنم و در یک فایل ذخیره کنم با دستور file_get_contents و ارسال...
۱۴۰۳/۱۰/۲۹

عباسی
با سلام و خسته نباشید چطوری می تونم با یک الگو متن داخل کد زیر رو پیدا کنم: با تشکر
۱۴۰۳/۱۰/۲۸

شریفی
اینجا هم یه سری توضیحات داده خیلی سر در نیاوردم
۱۴۰۳/۱۰/۲۴

شریفی
سلام وقت بخیر این نمونه هست که البته فقط توضیحاتش رو خوندم و خودم اسکریپت رو تست نکردم. فقط برام جالبه که...
۱۴۰۳/۱۰/۲۴
  در انتظار بررسی: ۰
 پاسخگویی به سوالات ممکن است تا ۲۴ ساعت زمان ببرد.