گوگل بوز چگونه پستهایی را که شما کامنت گذاشتید پیدا میکند؟



وقتی هنوز گوگل ریدر امکان پیگیری کامنت هایی که گذاشتید و اینکه چه بلایی سرشون میاد رو نداشت، تصمیم گرفتم یه برنامه برای این کار بنویسم ولی وقت نکردم تا گوگل خودش زحمتش رو کشید. خوب من هم کنجکاو شدم چطوری این کار رو انجام میده. حدود 3-4 ساعت زمان برد تا بتونم با یه کم مهندسی معکوس بفهمم چه خبره:

http://www.google.com/profiles/[YOUR USER NAME]#buzz

در این آدرس می توانید کامنت های خودتون رو ببینید.
با بررسی سورس صفحه به کمک ابزارهای توکار Google Chrome متوجه شدم فایل حاوی اسکریپت اصلی برای دریافت پست های حاوی کامنت ها ونمایش اونها اینجاست:

http://www.google.com/profiles/c/ProfileView/resources/8DD8A9CA65685284110C3E0B62857BAE.cache.js

البته با توجه به اسم اسکریپت میشه فهمید که همیشه اسم اون فایل این نخواهد بود.
به کمک سایت http://jsbeautifier.org/ کدها رو قالببندی کردم تا بشه خوندشون. 25487 خط کد !
با جست و جوی عبارت هایی مثل comment، comm، buzz comment، ... متوجه شدم بلوک مهمی از کدها از خط 25312 شروع میشه:
function (a) {
    if (!this.$w) {
        a = a[H];
        for (var b = this.m.a("buzz-header"); !a.id && bi(a, b) == b;) a = a[K];
        a: {
            switch (a.id) {
            case "buzz-posted":
                b = "USER_POSTED";
                break a;
            case "buzz-liked":
                b = "USER_LIKED";
                break a;
            case "buzz-com":
                b = "USER_COMMENTED_ON";
                break a
            }
            b = void 0
        }
        if (b && b != this.wo) {
            di(a, "Loading...");
            Nn(new Mn(this.qk.sc.Lk + "/bz/data", {
                type: "GETVIEW",
                viewType: b,
                ownerId: this.Pm
            }, P(this.RH, this, b)));
            this.$w = h
        }
    }
};
کار سختی نیست که از منطق کاری این قطعه کد سر دربیاریم. ابتدا نوع درخواست کاربر که یکی از سه نوع زیر است:
Posts by You
 Comments by you
 Likes by you
به کمک یک switch تعیین میشه، بعد از تعیین نوع درخواست یک URL ساخته میشه ( پارامترهای Mn رو نگاه کنید ) و اطلاعات از URL ساخته شده به عنوان اسکریپت سمت سرور برای پاسخ گویی استفاده میشود.
با کمک FireBug در FireFox و تریس کدها متوجه شدم مقادیری که برای پارامتر استفاده میشن در زمان اجرا  یه صورت زیر هستن:
A= "/profiles/c/bz/data"
B= Object { type="GETVIEW",  viewType="USER_POSTED",  ownerId="1037523253500993253XX"}

بعد با کمی تجربه و حدس و سعی و خطا آدرس اسکریپت سمت سرور و پارامترهاشو پیدا کردم:

http://www.google.com/profiles/c/bz/data?type=GETVIEW&viewType=USER_COMMENTED_ON&ownerId=1037523253500993253XX

مشخصه که چطوری از پارامترهای A و B برای ساخت URL استفاده کردم.
خوب خروجی یک ساختار شبه xml داره که باید تفسیر بشه.
چندتا بخش داره و اگر وقت کنم سعی می کنم ببینم ساختارش چطوریه.