آی‌سی(ISee), توصیه شده, معرفی

موتور جستجوی آی‌سی سریعتر از همیشه

موتور جستجوی آی‌سی، از رؤیا تا واقعیت

دقیقا ۲۹ مهر ماه بود که رسما از موتور جستجوی قطعات الکترونیک سیسوگ به نام آی‌سی رونمایی کردیم، نزدیک به سه ماه از معرفی رسمی آن می‌گذرد، ممکن است به نظر نیاید ولی در این سه ماه مدام در حال دست و پنجه نرم کردن با مشکلات و معضلات گوناگون بوده‌ایم و البته مدام به قابلیت‌ها و امکانات جدید فکر کرده‌ایم و خیال‌پردازی کردیم!  تمام ممکن‌ها و ناممکن‌ها را در نظر گرفته‌ایم که تجربه کاربر بهتری را در اختیار شما دوستان و همراهان عزیز قرار دهیم.

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

 

صبح روز رونمایی !

همونطور که می‌دونید ما در موتور جستجوی آی‌سی، به این شکل عمل می‌کنیم که در بازه زمانی مشخص (بسته به اهمیت سایت) وارد سایت می‌شویم و محصولات آن سایت را ایندکس می‌کنیم در نتیجه این عمل جستجو را با سرعت و کیفیت هرچه بهتر می‌توانیم عملی کنیم.

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

از کار افتادن خزنده سیسوگ

 

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

 

بریم آی‌پی بخریم

قرار شد که ۵۰ عدد آی‌پی اجاره کنیم و خیال خودمون را راحت کنیم، اما این تازه اول استرس‌های بعدی بود. هیچ شرکت ایرانی ۵۰ عدد آیپی به یک سرور ارائه نمی‌کرد (حداقل ما نتونستیم پیدا کنیم) یا باید کلی سرور اجاره میکردیم یا هیچ!‌ خب گفتیم بریم سراغ دیتاسنترهای خارجی شاید اونجا شانس بیشتری داشته باشیم.

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

قیمت ipv4

یعنی ماهی ۵۰ یورو فقط برای اجاره آی‌پی، آن هم با این وضع دلار و یورو! باید تدبیر دیگری اندیشید.

 

بریم پراکسی پیدا کنیم

پراکسی رایگان

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

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

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

این گزینه هم از روی میز حذف شد.

 

بریم تور ران کنیم !

وقتی پاراکسی‌های رایگان راه به جایی نبرد، یهو به ذهنم خورد که تور کلاینت ران کنیم روی سرور و به عنوان ساکس پراکسی (امیدوارم این پست با این همه کلمه پراکسی فیلتر نشه!) ازش استفاده کنیم. این ایده هم به نظر شدنی می‌آد دیگه – مثلا ۵۰ تا تور ران میکنی و ۵۰ تا پراکسی ازش میگیری!‌ حالا ممکنه یه مقداری هم رم مصرف بشه که خوب می‌ارزه.

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

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

۵۰ عدد تور ران کردم که مصرف حدود ۱٫۵ گیگابایت رم داشت و حدود ۱۰ درصد پردازنده سرور را مشغول کرد. این اعداد زیاد هم بد نبودند! سرور تست ۲ گیگ رم داشت و می‌شد تست‌های اولیه را کامل کرد.

تست سرعت دانلود

۱۰۰۰ لینک تست از یک وب‌سایت را برای دانلود به خزنده تزریق کردم که با سرعت نسبتا خوب (حدود ۱ ثانیه) دانلود شدند! تا اینجا لبخند رضایت روی لبم نقش بسته بود و حالا سراغ تست اصلی بود. ولی متاسفانه باز مشکلی وجود داشت.

هعی امان از کلودفیلر! برخی از سایت‌ها که روی کلودفیلر بودند درخواست‌های ارسال شده از سمت تور را بلاک می کرد و اعتبار سنجی لازم داشت که راه ساده را به راه سخت تبدیل می‌کرد.

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

این گزینه هم از روی میز حذف شد.

 

بریم پراکسی بخریم !

خب ظاهرا تمام راه‌حل های رایگان دچار یه مشکل اساسی هستند برای همین رفتم دنبال این که پراکسی لیست خریداری کنم! راه‌حل داخلی برای این مساله هم پیدا نشد! و باز مجبور شدم در بین سرویس‌های خارجی دنبال راه‌حل بگردم! اما وای از قیمت‌ها! کمترین قیمتی که می‌شد پیدا کرد برای ۲۰ عدد پراکسی حدود ۳۶ دلار بود. واقعا دلسرد‌کننده بود وضعیتی که پیش آمده بود.

هر روز تعداد سایت‌هایی که دچار مشکل می‌شدند بیشتر می‌شد و نیاز به راه‌حل اساسی داشتیم! از آن طرف قیمت‌ها ناامید‌کننده‌تر بود. بعد از حدود یکی دو روز گشت و گذار توی اینترنت در حین ناباوری سایتی پیدا کردم که ۱۰۰ عدد پراکسی را با قیمت باور نکردنی ۳ دلار عرضه می کرد.

اول فکر کردم شوخیه ولی گفتم تست کنم، ثبت نام کردم و پنل دمو گرفتم و ده عدد پراکسی تست با ۱ گیگ ترافیک گرفتم که به خوبی کار می‌کرد. باورکردنی نبود قیمت در مقایسه با چیزی که ارائه می‌شد. رفتم که اکانت یک ساله خریداری کنم ولی باز …

تنها پرداخت از طریق کارت اعتباری انجام می‌شد نه درگاه پی‌پل داشت و نه هیچ گزینه دیگری فقط و فقط کردیت کارت. تا قبل از این اتفاق تاثیر تحریم‌ها رو اینقدر با پوست و خون درک نکرده بودم. هیچ وب‌سایت داخلی نبود که این پرداخت را انجام دهد (همه پرداخت‌های پی‌پل انجام دادند یا فقط چند سایت معتبر را پرداخت می کردند) شاید باور نکنید یک هفته به دنبال راهی برای پرداخت ۳۰ دلاری بودم.

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

 

خزنده رم‌ها رو خورده!

مصرف رم کروم

حالا که خیالمون از بابت بسته شدن آی‌پی راحت شده مشکل دیگه‌ای هست، برای این که بتونیم در زمان مناسبی سایت‌ها را خزش کنیم نیازه که تعداد خزنده‌هایی که اجرا می‌شن رو ارتقاء بدیم اما مساله رم هست.

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

یک راه‌حل دم دستی دو برابر کردن سرورهای خزنده است که این راه‌حل رو کنار راه‌حل افزایش رم و پردازنده قرار دادم. یعنی تعداد سرورهای خزنده رو دوبرابر کردم، رم را روی هر سرور دو برابر کردم تا سیستم بتونه به کار خودش ادامه بده! اما وای از هزینه‌ها …

نمی‌شد اینطوری ادامه داد و باید فکری می‌کردیم.

 

طراحی مجدد خزنده!

چیزی که واضح بود باید کروم از توی خزنده حذف می‌شد! و اما با چی جایگزین می‌شد؟ خوشبختانه با تجربه‌ای که دوست و همراه خوبمون تیم یابکو در این خصوص داشتند پیشنهادی دادند که راهبردی و کاربردی بود.

پیشنهاد رندر استاتیک صفحات بود در این صورت نیازی به کروم و امثالهم وجود نداشت مقداری برنامه‌نویسی و کار بیشتر لازم بود اما واقعا نتیجه خیره‌کننده بود. سایتی که خزش آن یک ساعت طول می‌کشید تنها در ده دقیقه به شکل کامل خزش شد. مصرف رم به یک دهم رسید. یعنی روی یک سرور که در حال حاظر ۶ خزنده در حال فعالیت هستند می شود به سادگی ۳۰ خزنده اجرا کرد و به این شکل سرور دوم را می‌توان حذف کرد.

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

آمار خزنده آیسی

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

 

سنگ‌هایی که برداشته نشدند.

وقتی تازه شروع کرده بودیم فکر می‌کردیم که حداقل فروشگاه‌ها با ما همکاری خواهند کرد ولی واقعا اینطور نبود حتی برخی فروشگاه‌ها جلوی راهی که داشتیم می‌رفتیم سنگی که برنداشتند هیچ تازه سنگ‌اندازی هم کردند! (البته بودند فروشگاه‌هایی که همکاری کردند که همینجا ازشان تشکر می‌کنم.)

برخی هم سعی می‌کردند از این نمد برای خود کلاهی بسازند ولی غافل از این بودند که ما شفافیت را فدای هیچ چیز نخواهیم کرد.

 

قابلیت‌ها جدید چی شد پس!

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

انتشار مطالب با ذکر نام و آدرس وب سایت سیسوگ، بلامانع است.

شما نیز میتوانید یکی از نویسندگان سیسوگ باشید.   همکاری با سیسوگ

14 دیدگاه در “موتور جستجوی آی‌سی سریعتر از همیشه

  1. Avatar for طاهره طاهره گفت:

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

  2. Avatar for pooia pooia گفت:

    این از زبون سی استفاده می کنه یا استاتیک با جاوااسکریپت هست می شه تکنولوژی هاش رو بگین مثلا وب سرورش

    بعد به نظر می رسه کامپیوتر تو عکس ابونتو باشه نه

    1. Avatar for zeus zeus گفت:

      والا باید بگم ترکیبی از هر چیزی است ولی بیشتر نودجی اس استفاده شده برای بک اند و فرانت هم که مشخصه
      قسمت اصلی خزنده است که اطلاعات رو استخراج میکنه و هنوز در حال توسعه و پایدار کردن اون هستیم

  3. Avatar for محمد محمد گفت:

    با تشکر. واقعا من انگیزه پیدا کردم برای منبع باز کار کردن و سود دسته جمعی

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      خواهش میکنم دوست عزیز
      به امید این که انگیزه متن باز در همه بیدار بشه 🙂

  4. Avatar for مجهول ابن بهلول مجهول ابن بهلول گفت:

    با سلام و خسته نباشید.
    واقعا از دیدن چنین تلاش هایی خیلی خوشحال میشم. امیدوارم که همیشه موفق و در حال پیشرفت باشید. 🙂 یه ایده ای که شاید می تونست کمک کنه علاوه بر توزیع درخواست ها روی آیپی های مختلف، توزیع درخواست ها روی زمان های مختلف هم می تونست مفید باشه. مثلا صد تا سایت با هم باز بشه.یعنی اول نیاییم همه لینک های سایت a رو باز کنیم. بلکه از هر سایت یه لینک باز کنیم. البته شاید سرعت اونقدری بالا باشه که بازم سایت ها ip رو مسدود کنند اما شایدم با زیاد شدن تعداد سایت ها این مشکل حل بشه. البته چنین چیزی رم بیشتری می خواد قطعا. اما شایدم بتونه کمکی برای حل این مشکلات بکنه. به هر حال خوش حال میشم نظر شما رو هم بدونم 🙂
    با تشکر و ارزوی موفقیت

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام و درود دوست عزیز
      متشکرم از همراهی و همفکری شما 🙂
      در واقع توزیع درخواست ها داره اتفاق می افته روی پراکسی به این شکل که هر درخواست از یک آیپی از لیست آیپی های پراکسی انجام میشه و این که در لحظه فقط یک سایت در حال خزش نیست بلکه چندین سایت در حال خزش هستند و همین باعث توزیع درخواست ها روی آیپی های مختلف میشه

      1. Avatar for مجهول ابن بهلول مجهول ابن بهلول گفت:

        خوب اگر این جوری باشه که عالیه. امیدوارم هر روز بهتر و بهترم بشه.

  5. Avatar for AmirAli AmirAli گفت:

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

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

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      سلام دوست عزیز – متشکرم برای پیشنهاد و همراهی شما
      در خصوص فروشگاهی به بزرگی دیجیکالا توی حوزه الکترونیک پیشنهاد خوبیه اطلاع دارم که چند فروشگاه چنین کاری رو استارت زدند و باید دید چکار میخوان بکنن و چقدر موفق خواهند بود.
      ما سعی خودمون رو خواهیم کرد که با توجه به پتانسیل های موجود بهترین خدمت رو ارائه کنیم ولی فروشگاه آنلاین به این وسعت واقعا از توان کنونی ما خارجه، مساله دومی که اینجا کار رو سخت تر میکنه وجود فروشنده هایی (فروشگاه هایی) با نگاه قبل از ایجاد اینترنت هست که در مقابل هر گونه تغییری مقاومت میکنند
      مساله بعدی برای راه اندازی چنین خدمتی کاربرانی هستند که به همه چیز نگاه منفی دارند. مثلا در مورد همین موتور جستجو خیلی ها ازم سوال میپرسند واقعا چه کاسه ای زیر نیم کاسه است ؟ چرا رایگانه ! چرا فلانه چرا بهمانه 😐
      متاسفانه اینقدر از کاربر توی سایت های ایرانی سوء استفاده شده که حق داره باور نکنه هیچ کاسه ای زیر نیم کاسه نیست :/
      خلاصه اینه که کار آنلاین کردن توی حوزه الکترونیک سخته و اراده خیلی قوی میخواد. امیداورم که چنین فروشگاهی رو ما هم بتونیم ببینیم.

  6. Avatar for reza reza گفت:

    سلام
    برقرار باشید در این بن بست کج و پیچ سرما!
    تشکر

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      متشکرم دوست عزیز
      سلامت باشید

  7. Avatar for سجاد سجاد گفت:

    مفید و عالی بود
    خسته نباشید ویژه میگم بابت این موتور جستجو گر عالی

    1. Avatar for زئوس Zeus زئوس Zeus گفت:

      متشکرم دوست عزیز‌
      سلامت باشید

دیدگاهتان را بنویسید

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