ساخت روبات یاهو مسنجر – قسمت اول

توجه

در صورتی که قصد دانستن جزئیات پروتوکل یاهو! مسنجر را ندارید و هدف شما تنها آنلاین کردن یک بات در یاهو! مسنجر می باشد، می توانید به اینجا مراجعه کرده و سورس کد یک بات پایه یاهو! مسنجررا به زبان Visual Basic دریافت نمایید.

جلسه اول

در این سری از نوشته ها ما می خوایم یاد بگیریم که چطوری یه روبات (bot) یاهو مسنجر بسازیم.
بذارید اول چند تا از دانش پژوهان رو معرفی کنم:

Question level 2 یه دانش پژوه نرمال که تا حدودی کار با کامپیوتر رو بلده.
Question level 1 یه دانش پژوه گیر که کار با کامپیوتر رو خوب بلده و سر هر چیزی گیر میاد سوال میکنه.
Question level 3 یه دانش پژوه تیز که کار با کامپیوتر رو خیلی خوب بلده اما برنامه نویسی با ویژوال بیسیک رو بلد نیست.
Question level 4 یه دانش پژوه خیلی قوی از نظر کامپیوتر که زبان برنامه نویسی ویژوال بیسیک رو کاملا بلده.
Question level 5 این دانش پژوه کلا چیزی بلد نیست فقط بلده تیکه بپرونه و شیطونی کنه.

روبات یاهو مسنجر چیست؟

خوب حالا باید بدونیم یک ربات یاهو چی هست اصلا! یعنی مثلا چطوری آنلاین می شه و چه فرقی با یه آی دی (ID) معمولی دار.
در اصل آی دی یه روبات یاهو مسنجر هیچ فرقی با آی دی های دیگه نداره فقط نحوه لاگین (Login) کردنش فرق میکنه. یعنی بر عکس من و شما که با یاهو! مسنجر (Yahoo! Messenger) لاگین می کنیم یه روبات با یاهو! مسنجر لاگین نمی کنه و با یه برنامه ی دیگه که بهش اصطلاحا میگن شبیه سازی شده یاهو! مسنجر (Yahoo! Messenger Clone) لاگین می کنه! کار ما هم برای روبات ساختن دقیقا همینه یعنی باید یه یاهو مسنجر کلون بسازیم.

یاهو! مسنجر چگونه لاگین می شود؟

خوب برای اینکه بتونیم یه چیزی عین یاهو! مسنجر بسازیم اول باید ببینیم یاهو! مسنجر وقتی ما دکمه Sign In رو می زنیم چیکارا میکنه…
فعلا یه توضیح مختصر میدم بعدا سعی میکنم هر تیکشو به طور مفصل توضیح بدم:
یاهو! مسنجر اول میاد به سرور یاهو! پیغام میفرسته که میخوام بهت کانکت (Connect) بشم.
سوال دارین بکنین…

Question level 1 ببخشید، سرور چیه؟
Answer ” کلا به هر کامپیوتری که هر نوع سرویسی بده میگن سرور! مثلا توی شبکه داخلی (LAN) به اون کامپیوتری که همه کامپیوترا بهش کانکت میشن رو میگن سرور!
اما تو اینترنت وقتی صحبت از سرور میشه منظور یه کامپیوتره که همیشه آنلاینه! (معنی اصلیش اونیه که بالا گفتما! بعدا نگی این سیاوش همه چیو اشتباه میگه) “
Question level 3  این سرور که یاهو! مسنجر یهش وصل میشه ربطی به همون وب سرور (Web Server) اینا داره که روش سایت می ریزن؟
Answer ” نه عزیز من! این سرورا اصلابرنامه وب سرور (Web Server) روش نصت نیست. بجاش تمام یوزرنیم (Username) ها و پسورد های آی دی های یاهو روی این کامپیوترا ذخیره هستن… روی این سرورا یه برنامه نصب هست که کارش اینه که وقتی یاهو! مسنجر بهش خواست وصل شه اول بهش اجازه وصل شدن بده و بعد یه سری از اطلاعات (مثل یوزرنیم و پسوورد) رو چک کنه و اگه درست نبود ارتباط رو قطع کنه.
دز ضمن تقریبا تمام پی ام (PM) هایی هم که میفرستین اول میاد تو این سرورا و بعد به وسیله همین برنامه از سرور به اون شخصی که قرار بوده پی ام بهش برسه فرستاده میشه! “
Question level 4 ببخشید شما چرا تو جوابتون گفتین سرورا؟ مگه بیشتر از یکین؟
Answer ” آفرین! خوشم میاد تیزی! یک سرور برای این که این همه اطلاعات رو چک کنه و دریافت کنه و بفرسته کمه… یعنی اصلا نمی کشه. در نتیجه یاهو! اومده این کار رو بین کلی کامپیوتر تقسیم کرده. “
Question level 4 پس چرا آخرش گفتین از سرور به اون شخص میفرسته به جای از سرورا؟
Answer ” یه بار گیر دادی ازت تعریف کردم. حالا دیگه گیر ملا لغتی نده. منظورم اون سرور خاص بود که پیغام رو دریافت کرده. “
Question level 4  اونوقت یه سوال دیگه! چرا گفتین تقریبا تمام پی ام ها اول میرن تو سرور بعد از اونجا فرستاده میشن؟ چرا نگفتین همشون؟
Answer ” انگار جو گرفتتا! تو قرار نیست پشت سر هم سوال کنی. آقای Question level 1 قراره اینطوری باشه!
برای این گفتم تقریبا چون بعضی اوقات که یاهو ببینه ترافیک زیاده ارتباط مستقیم (Direct Connection) بر قرار می کنه یعنی پی ام ها دیگه به سرور نمی رن و مستقیم سند (Send) میشن به کسی که قراره بگیردش.
بعضی از برنامه های مسنجر مثل AOL همیشه ارتباط مستقیم بین کاربراشون بر قرار میکنن اینطوری هم سرورا زیاد بارشون سنگین نمیشه هم اگه مثلا اگر لاگ اوت (Logout) کنین خود AOL رو، می تونین به چتتون ادامه بدین چون برای ادامه چت نیازی به سرور نیست. “
Question level 4 ببخشید، ما میتونیم بفهمیم کی ارتباط غیر مستقیمه کی مستقیم؟
Answer ” آره! وقتی تو مسنحر داری چت می کنی بالای هر پنجره چت اسم تو و کسی که داری باهاش چت می کنی رو نوشته و یه – (dash) بینشون گذاشته. اگه به جای یک – دو تا دش ( — ) اومد بینشون یعنی ارتباط مستقیم بر قرار شده.
خوب سوال دیگه بسه … از موضوع اصلی خیلی دور شدیم. داشتیم میگفتیم یاهو! مسنجر اول به یکی از سرور پیغام میفرسته که میخوام کانکت شم. “
Question level 4 ببخشید …
Answer ” بسه دیگه. الان سوال نکن. یه ذره وایسا این تیکرو گفتم دوباره سوال کن. “

خلاصه بعد سرور یاهو! قبول میکنه و کانکت میشن… اینجا باید دقت کنید که منظور از کانکت شدن لاگین شدن نیست. بلکه فقط کانکت شدن که اطلاعات بتونن به هم بفرستن. خوب حالا یاهو! مسنجر یوزرنین (Username) رو میفرسته و سرور بر حسب یوزرنیم و زمان یه اطلاعاتی رو میفرسته که به اون Seed میگن. حالا یاهو! مسنجر با توجه به Seed و یوزرنیم، پسورد رو encrypt میکنه و میفرسته به سرور یاهو!!! این تیکه مشکل ساز ترین قسمت برای ساختن یه یاهو! مسنجر کلون (Clone) هست. چون باید بفهمیم پسورد رو یاهو! مسنجر چطوری با توجه به یوزرنیم و سید، encrypt میکنه. این کار خیلی سخت هست و کار من و شما نیست در نتیجه ما برای این قسمت از یک DLL استفاده می کنیم که عمل encrypt کردن پسورد رو مثل یاهو مسنجر انجام میده (این DLL رو مدیون پروژه گیم (Gaim Project) هستیم! از همینجا از تمام دست اندر کاران این پروژه تشکر میکنم…)
حالا اگر سوالی دارین بپرسین…

Question level 3 ببخشید، من نفهمیدم encrypt چیه اصلا.
Answer ” خوب حق داری. ببین عزیز من معمولا برای امنیت بیشتر پسورد ها و اطلاعاتی که به راحتی نباید درز کنرو رمز میکنن. رمز کردن بطور کلی به دو دسته تقسیم میشه:
دسته اول encrypt یا encode کردن هست. مثل base64 encoding
این دسته همیشه دوطرفه هستن یعنی میشه از رمز شده دوباره به اصلش برگشت.
بعضی encrypt ها هم یک یا چند پارامتر به عنوان key میگیرن. یعنی با توجه به اون اطلاعات encrypt میکنن.
مثلا encrypt کردن کلمه syavash به وسیله الگوریتم Blowfish با کی a1 میشه No0ICOlDP6E= و با کی b2 میشه cu/FsS9kwvg= و مینونیم با داشتن کی (key) دوباره این دو تا رو به syavash برگردوند.
encryption پسورد یاهو! مسنجر هم تقریبا همینطوریه… یعنی چند تا پارامتر مثل Seed و یوزرنیم رو میگیده و پسورد رو encrypt میکنه!
دسته دوم رو hash بهشون میگن. در این مدل رمز کردن، ممکنه رمز برگشت پذیر نباشه چون تابع یک به یک نیست. برای مثال وقتی syavash رو با الگوریتم md5 هش میکنیم این شکلی میشه : ۰۷fcf2ae7ef576f7d31d845e91001097
حالا از همین رمزی که بالا در اومده امکان نداره بشه به syavash رسید. “
Question level 3 یاهو برای چی اصلا Seed رو میفرسته؟ خوب بر حسب یوزرنیم و پسورد این کارو انجام میداد.
Answer ” دلیل اصلی اینه که زمان هم در اون تاثیر داشته باشه. چون اگه اینطوری نباشه یکی راحت میتونه encrypt شده پسورد یکی دیگرو رو به وسیله یه sniffer (بعدا دربارش توضیح میدم) بدست بیاره و بعدا هر وقت خواست با آی دی اون لاگین کنه. اما اگر زمان هم توش اثر داشته باشه فقط در همون لحظه (که دیگه تکرار نخواهد شد) از اون پسورد encrypt شده استفاده می شه کرد. “
Question level 1 DLL چیه دیگه؟ ربطی به download داره؟
Answer ” نه… DLL مخفف Dynamic Link Library هست و یه سری فرمان های اجرایی توش قرار دارن که میشه ازشون در هر برنامه ای استفاده کرد. فقط باید به این توجه داشته باشیم که DLL ها فقط برای ویندوزن و تو بقیه سیستم عامل ها نمیشه ازشون استفاده کرد.
کار DLL ای که بالا دربارش توضیح دادم اینه که پسورد رو همونطوری که یاهو! مسنجر رمز میکنه، رمز کنه! “

آقای Question level 4 انگار سوال داشتی؟

Question level 4 اممم… یادم رفت…
Answer ” باشه پس وقتی یادت اومد بگو. “

خوب وقتی ما این اطلاعات رو فرستادیم سرور یاهو! چک میکنه اطلاعاتی که بهش دادیم (همون یوزرنیم و پسورد) درست هستن یا نه. در صورتی که غلط باشن برای یاهو! مسنجر یه پیغام میفرسته که پسورد و یوزرنیم مطابقت ندارن و قطع میکنه ارتباط رو. در صورتی هم که درست باشه یه پیغام میفرسته که لاگین انجام شد و دقیقا در همون لحظست که چراغ آی دی شما تو یاهو! مسنجر دوستاتون روشن میشه و بعدشم لیست دوستان (Friend List) و سایر اطلاعات فرستاده میشه.
خوب! برای این جلسه بسه دیگه… این دفعه فقط همینطوری فهمیدیم چه اتفاقی میوفته که ما از طریق یاهو مسنجر آنلاین میشیم. جلسه ی دیگه میبینیم دقیقا چه اطلاعاتی فرستاده و دریافت میشن و چطوری میتونیم یه برنامه درست کنیم که دقیقا همون کارارو بکنه.
خوب دیگه سوالی نیست؟

Question level 1 Question level 2 Question level 3 Question level 4 Question level 5

عجیبه این جلسه خانوم Question level 2 چیزی نگفت… انشالله از جلسه دیگه حضور فعالانشونو میبینیم.

136 فکر می‌کنند “ساخت روبات یاهو مسنجر – قسمت اول

  1. فرزین

    سلام
    دست شما درد نکنه!
    قبلا یه ساب دون داشتید که آموزش ساختش توی اون بود
    ولی انگار بش داشتید
    اگه یه لطفی بکنید و وباره طریقه ساختش رو بفرمایید خیلی ممنون میشم ازتون
    :)

    پاسخ
  2. اشکان

    سلام خوبی سیاوش از آموزشت ممنونم وقتی دیدم واقعا خوشحال شدم من مرده ی این سوال جواباتم معلومه نمایش نامه نویسم هستی ! خواهش میکنم زودتر ادامه بده آخه من آتیشم تنده نمی خوام سرد بشه و از طریق آفلاین منو خبر کن ممنون

    پاسخ
  3. Babak

    آقا سیاوش به خدا گل کاشتی
    طرز بیان و این شیوه‌ی آموزشت معرکس
    واقعآ دمت گرم. از اینکه چنین مطلب های مفید فارسی‌ای رو نشر میدی دمت گرم
    لطفآ همینطور به کارت ادامه بده
    ما هم همیشه پشتت هستیم

    پاسخ
  4. فاطمه

    سلام.
    شب ور روزتون بخیر.
    واقعا شیوه ی آموزشی خوبیه.
    یکی دو بار با روباتتون چت کردم خیلی بچه ی خوبیه. اما بعضی از چیزا رو نمیگیره.
    بیشتر باهاش کار کنید تا راه بیفته و جلوی ما کم نیاره!!!!!

    موفق باشید

    پاسخ
  5. مهسا

    احتمالا اون دوستت خود سیاوش بوده چون تو یه بخش از سایتش که یادم نیست آدرسش رو یک سری آموزش مثل همینا داشت. در هر صورت سیاوش عالیه. همینطوری ادامه بده.

    پاسخ
  6. الیار

    آقا سیاوش گل کاشتی دمت گرم. به حرف این ضد حال ها هم گوش نکن. نمی فهمن! حالا برا ایشون قدیمی بوده که لزومی نداره برا بقیه هم قدیمی باشه.
    برا افرادی که هیچی از شبکه نمیدونند همین ها کلی بدرد می خوره.

    پاسخ
  7. odise_keyhan_3712

    عالی بود.فقط یه سوال؟
    yahoo این کار ها رو با توجه به SMTP انجام میده یاIMAP ؟ممنون میشم بدونم.
    دستت در نکنه جالب بود.

    پاسخ
  8. Hamid ( KraToS )

    آقا دمت گرم واقا عالیه
    امیدوارم همینطور ادامه بدی ! درسته قدیمی هستن ولی عالیه همینطور ادامه بده تا برسیم به جدیداش منتظر پست جدید هستیم !
    و اینکه من هر کاری کردم نتونستم میل اتون رو از روبات بگیرم لطفا یه میل به من بزن کارت دارم .

    پاسخ
  9. مانا

    خیلی باحالی واسه خودت دفتر راه انداختی نه راه افتادی ببخشیندا نشناختمتون .راستی میتونی بگید اسم واقعیتون چیه مطمئن باش به کسی نمی گم . سلام اقا بچه ها رو برسون.

    پاسخ
  10. مریم dj

    سلام می شه بگید چند سالتونه اگه بگید وظیفتونه اگه نگید هم خیلی بدید در ضمن بگید چه رشته ای تحصیل کردید . ممنون ……….قربانت

    پاسخ
  11. نیما

    سلام
    کارتون عالیه
    میشه راجب httprequest va httpresponse هم صحبت کنید. و اینکه با کوکی های یاهو چگونه می تونیم کار کنیم و چگونه تو ۳۶۰ یا جایه دیگه یک فرم رو پر کنیم. اگه اینو بگی عالی میشه.
    مرسی از زحماتت

    پاسخ
  12. سمانه

    نظری ندارم فقط می خواستم در مورد الگوریتم blowfish بیشتر بگین واینکه چرا وقتی یک کاربر rootدقیقآ مثل همون کاربر root ی که داریم می سازیم password هاشون فرق میکنه

    پاسخ
  13. silent haker

    salam man nemidonam ke in dokhtarayi ke barat nazar dadan che ghadar aghleshn kame vali ino midonam ke kheyli kodani chon ke to faghat yek tozih dadi agar be jaye in tozih barnamasho mizashti kheyli behtar bod khodetam jer nemidadi in hame cherto pert benevisi dar harsorat kheyli web lage cherto tokhmi bod by by

    پاسخ
  14. سید امیر

    سلام دوست گرامی
    مطالبت خیلی عالی هستند.

    یک سوال:
    “ما برای این قسمت از یک DLL استفاده می کنیم که عمل encrypt کردن پسورد رو مثل یاهو مسنجر انجام میده ”

    برای Encrypt کردن پسورد با زبانهایی که از dll ویندوز نمیتوانند استفاده کنند باید چیکار کرد؟
    مثلا من با php کار میکنم و در لینوکس.

    متشکر

    پاسخ
  15. پوین

    این چرت و پرتا چیه من پوین هستم از لندن شما منو پویا صدا کنید اگه موضوات بدبد می خواین به yahooتون فرستاده شه فقط به yahooمن نامه دهید۰شوماره موبایل- id یا ایمیل کاملا اجباری است pouyamas نشانی ایمیل

    پاسخ
  16. مسعود

    خواستم بگم سیاوش جان یک کاری بکن این خانمها با ما بچتن یاهو رو یک قسمت بندی بکن مردا یک سمت زنها یک سمت شاید بهتر بشه

    پاسخ
  17. alex

    من تو کار دنیا مندمه چرا مردها با مردها نمی چتن زنها با زنها………..واقها چرا یاد اون جمله افتادم کبوتر با کبوتر باز با باز

    پاسخ
  18. سیاوش

    من خیلی وقته چیزی نمی نویسم اینجا، سورسشو می تونید از http://artificial.ir دریافت کنید… جالبه که آی پی هر چهار کامنت آخر یکیه… احتمالاً در خوشبینانه ترین حالت چهار نفر در یک شبکه هستید… در حالت دیگه هر چهار نفر یکی هستید…

    پاسخ
  19. وحید عالمزاده

    سیاوش جان بسیار عالی بود توضیحاتت .من از طرف این یوزرهایی که کامنت های بی ربط گذاشتن عذر خواهی می کنن کسایی که برنامه نویس هستند فقط میتونن درک کنند که این مطالب ارزش زیادی داره.کمتر کسی در ایران با برنامه نویسی یاهو اشنایی داره ممنون موفق باشید

    پاسخ
  20. فرناز

    سلام
    ببخشید مزاحم میشم
    ربات های یاهو مسنجر دیگه لوگین نمیشه

    میشه کمک کنید و بگید چیکار کنیم
    سرور های یاهو که عوض شده
    ولی مثل اینکه پیچیده شده کار لوگین

    لطفا کمک کنید

    پاسخ
  21. اهورا

    اقا سیاوش دمتون گرم. من هیجا نظر نمیدم ولی چون دیدم بعضیا اینجور جواب کاراتونو میدن…. نظر دادم که بدونید خیلی کارتون درسته. ممنونم باز

    پاسخ
  22. Farzad

    Salam MoteAsefam Ke Mibinam Cheghadr Ma Bi Janbe Hastim Ke Intori Mitoonim Dar Morede Nokhbehaye Mamlekatemoon Nazar Bedim. Hamine Ke Irani Too Iran Roshd Nemikone,Siavash Jan Man Mazerat Mikham Ke In Ghad Bi Ehterami Mikonan ! Shoma Be Del Nagir !Kheili Vaghte Ke Site Up Nashode Ama Bazam Shayad 1% Ino Bebini , Harfha VA Karhaye Shoma Masire Zendegie Mano 2 Sal Pish Avaz Kard !!!! Mamnoonam

    پاسخ
  23. ابراهیم

    موضوع جالبی دارین
    من فقت نمیدونم چطور میشه در گفتگوی شما شرکت کرد اگه میشه راهنمایی کنید

    واقعا جالبه
    ممنون

    پاسخ
  24. شهاب

    lممنونم از راهنمائیهای شما فقط چون من خیلی کودنم از شما خواهش میکنم که مرحله به مرحله راتا وارد شدن وچت کردن را برایم ایمیل کنید بسیار سپاسکذارم

    پاسخ
  25. sansiz

    پسر تو حیفی به خدا بیا من چند تا ایده فیلم نامه طنز دارم بیا بدم بهت روشون کار کن مطمئنم این پسرسوسله (پیمان قاسم خانی) رو میزنی جلو
    برنامه نویسی رو ولش کن D:

    واقعا دمت گرم کارت خیلی درسته

    پاسخ

پاسخ دادن به فریبا لغو پاسخ

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

شما می‌توانید از این دستورات HTML استفاده کنید: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>