۱۳۸۸ مهر ۲۳, پنجشنبه

GreaseMonkey

می‌دونین GreaseMonkey چیه؟ من می‌دونستم ولی تا امروز (در واقع دیروز، چهارشنبه!) ازش استفاده نکرده بودم. اما امروز ازش استفاده کردم و کلی بهم مزه داد!

جریان از این‌جا شروع شد که یکی از مهم‌ترین مواردی که من از ویندوز استفاده می‌کردم، خرید بلیط رفت یا برگشت بود، اون‌هم به دلیل این که سایت مربوطه برای این کار از خدمات بانک اقتصاد نوین استفاده می‌کنه که متاسفانه سایتش فقط توی IE کار می‌کنه (مثل خیلی دیگه از سایت‌های غیراستاندارد ایرانی!). (یه زمانی خیلی عجیب نبود که یه سایت فقط توی IE کار کنه و نمیشد خیلی هم غر زد، هر چند همون موقع هم لای هر کتاب آموزش برنامه‌نویسی وب رو باز می کردی نوشته بود که اصولا یه وب‌سایت باید حداقل روی ۲ مرورگر پراستفاده آزمایش بشه و کار کنه. اما الان دیگه این‌طور نیست. اولا استانداردها خیلی قوی‌تر و مهم تر شدن و ثانیا فایرفاکس خیلی فراگیر شده و دیگه نمیشه به راحتی ندیدش گرفت. در ضمن مرورگرهای دیگه مثل اپرا و Chrome هم هستند. الان دیگه واقعا میشه گفت که اگه یه سایت فقط توی IE کار کنه، میشه یه سایت داغون(از نظر کیفیت برنامه‌نویسی و طراحی) غیراستاندارد! مثل سایت کتابخونه‌ی امیرکبیر! سال پیش یه نامه الکترونیکی فرستادم بهشون که این سایتو درستش کنید، کلی بهش برخورد که سایت خوبیه! بعدم گفت داریم درستش میکنیم! الان ۱سال از اون قضیه میگذره، به جای درست کردنش لطف می‌کنن اگه توی فایرفاکس باشی میگن بیا IETab رو نصب کن!! مسخرست!)

خلاصه! تا حالا برای خرید مجبور بودم ریست کنم برم توی ویندوز، که واقعا اذیت میکنه مخصوصا وقتی مشغول کار باشی این‌طرف. سعی کردم راه‌های مختلفی برای حل این مشکل استفاده کنم، مثل نصب IE توی لینوکس (با کمک Wine) یا نصب یه ویندوز مجازی توی لینوکس. روش دوم مناسب نبود چون کلی جای اضافه میگیرفت فقط به خاطر IE! روش اول هم خوب جواب نداد روی این سایت. (اما مثلا تونستم با روش اول از سیستم گلستان دانشگاه صنعتی اصفهان که با ActiveX نوشته شده استفاده کنم! البته برای کسی :) )

اما دیشب یه اتفاقی افتاد! رفتم یه دوتا کتاب به صورت اینترنتی بخرم. اون فروشگاه برای این کار از خدمات بانک سامان استفاده می‌کرد. وقتی وارد صفحه‌ی پرداخت بانک سامان شد کلی حالم گرفته شد! چون کاملا شبیه سایت پرداخت بانک اقتصاد نوین بود. گفتم حتما این‌هم توی فایرفاکس جواب نمیده. ولی با این‌حال شروع کردم و با ناامیدی اطلاعات رو وارد کردم. توی سایت بانک اقتصاد نوین، دکمه‌ی «تایید»ش توی فایرفاکس کار نمی‌کرد، اما توی سایت بانک سامان وقتی دکمه‌ی «تایید» رو زدم دیدم که کار کرد و تونستم خرید رو انجام بدم. این‌جا بود که اوضاع برام جالب شد...

امروز تصمیم گرفتم یه سری به سایت هر دو بانک بزنم و کد اصلی هر دو صفحه رو ذخیره کنم ببینم چرا مال اقتصاد نوین کار نمیکنه. قبلا در مورد یه افزودنی به اسم GreaseMonkey چیزایی خونده بودم و میدونستم که میشه براش اسکریپت‌هایی نوشت که تغییراتی توی صفحه‌ها بده. گفتم شاید بتونم با استفاده از این افزودنی تغییرات سایت بانک سامان رو توی صفحه‌ی بانک اقتصاد نوین بدم (در این لحظه فکر می‌کردم اسکریپتی که موقع زدن «تایید» اجرا میشه مشکل داره و تصمیم داشتم اسکریپت‌های دو صفحه رو مقایسه کنم). بعد از یکم جستجو دیدم که بله، میشه این کارو کرد!

وقتی کد اصلی دو صفحه رو مقایسه کردم و اختلاف‌هاشو درآوردم، متوجه شدم که سایت بانک اقتصاد نوین کپی سایت بانک سامانه. فقط یکمی رنگ‌ها رو عوض کرده بودن و یه جدول رو به صورت توضیح درآورده بودن و با یه جدول ساده جایگزین کرده بودن. برخلاف انتظارم اسکریپت‌ها کاملا یکی بودن. با استفاده از پنجره‌ی خطاهای فایرفاکس، خطایی که وقتی دکمه‌ی تایید بانک اقتصاد نوین رو میزدم میومد نگاه کردم و خلاصه متوجه شدم یه عنصر مخفی از نوع input توی اون جدول که حذف شده هست و اسکریپت‌ها بهش ارجاع میدن. همین ارجاعات باعث میشد این اسکریپت‌ها توی هیچ مرورگری جز IE کارنکنن.

کلی خوشحال شدم! تنها کاری که لازم بود بکنم این بود که موقع بار شدن صفحه‌ی بانک اقتصاد نوین، با استفاده از Grease Monkey اون عنصر input رو به صفحه اضافه کنم. یه اسکریپت کوچولو (جاوا اسکریپت) نوشتم و.... تمام! الان دیگه می‌تونم به‌راحتی با همون فایرفاکس و توی همون لینوکس خرید بلیطمو انجام بدم! نمی‌دونین چقدر ذوق کردم وقتی این اتفاق افتاد!! کلی بهم مزه داد! :)

حالا دارم به کارهای مختلفی که میشه با این افزودنی کرد فکر می‌کنم. با توجه به این که خیلی از سایت ها فقط به‌خاطر یه سری مشکلات جزئی (مثل همین مورد) توی فایرفاکس کار نمی کنن، میشه خیلی از اون‌ها رو با کمک GreaseMonkey و شاید User Agent Switcher (برای این که به سایت الکی بگیم من فایرفاکس نیستم، IE هستم اونم توی ویندوز!) اصلاح کرد. به جز این، یه سری شیرین کاری هم میشه کرد! مثلا این که سایت‌ها بهت سلام کنن یا مثلا عکستو نشون بدن! و البته یه عالمه اسکریپت آماده هم برای GreaseMonkey هست که بعضا کارهای خیلی جالبی میکنن. در واقع با کمک این افزودنی، میشه برنامه نویسی تحت وب سمت کلاینت انجام داد! شخصی کردن سایت‌ها اون طورکه دلت میخواد! جالبه (بعضی از مرورگرهای دیگه هم چیزی مشابه این دارن).

ببینم هنوز داری می‌خونی؟!! واقعا؟!! دستت درد نکنه! :)

۲ نظر: