خداحافظی با پروکسی‌های مرده! 

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

این ابزار یه اسکنر پروکسی لینوکس فوق‌العاده سبک، سریع و متن‌باز (Open Source) هست که هم رابط گرافیکی (GUI) داره و هم محیط خط فرمان (CLI). اگه دنبال یه پروکسی چکر حرفه‌ای می‌گردی که هم روی سرور بدون مانیتور (Headless) کار کنه و هم روی دسکتاپ اوبونتو یا دبیانت یه تجربه کاربری عالی بهت بده، جای درستی اومدی. تو این مقاله می‌خوام هم به زبون ساده بگم این ابزار چیکار می‌کنه، هم یه دور فنی و تخصصی (اما کاملاً قابل‌فهم) بریم تو دلش که ببینید چرا با بقیه ابزارها فرق داره.


بخش اول: داستان چیه و این ابزار چطور کار رو براتون راحت می‌کنه؟ 

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

من prscanm0r رو جوری طراحی کردم که این دو تا مشکل رو کامل حل کنه. نصبش هم که دیگه نداره؛ یه فایل .deb آماده کردم که با یه دستور ساده تو اوبونتو یا دبیان نصب می‌شه و تمام وابستگی‌های لازم (مثل کتابخونه‌های پایتون برای رابط گرافیکی و پروتکل SOCKS) رو خودش اتوماتیک دانلود و نصب می‌کنه.

وقتی بازش می‌کنی، یه داشبورد تمیز و مرتب می‌بینی. با زدن دکمه Start، ابزار شروع می‌کنه به خوندن لیست پروکسی‌ها از منابع مختلف. همون لحظه می‌تونی ببینی چند تا پروکسی کل کشف شده، چند تاشون تست شدن، چند تاشون سالم‌ان و سرعتشون چقدره. اگه دنبال پروکسی کشور خاصی (مثلاً آلمان یا ایران) می‌گردی، کافیه تو کادر Filter اسم کشور رو بنویسی تا لیست برات فیلتر بشه. در نهایت هم می‌تونی پروکسی‌های سالم رو با فرمت‌های مختلف مثل JSON، CSV یا یه لیست متنی ساده (TXT) خروجی بگیری و هر جا خواستی استفاده کنی.

اگه هم حال و حوصله محیط گرافیکی رو نداشته باشی یا بخوای روی یه سرور لینوکسی از راه دور (SSH) ازش استفاده کنی، بخش خط فرمان (CLI) این ابزار یه دنیا امکانات بهت می‌ده که تو ادامه دقیقاً بررسیش می‌کنیم.

بیا ادامه مطلب

 

بخش دوم: زیر کاپوت prscanm0r چه خبره؟ 

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

۱. بررسی اولیه TCP (TCP Pre-check)؛ قاتل پروکسی‌های مرده

بیشتر اسکریپت‌های معمولی میان و برای هر پروکسی، یه درخواست کامل HTTP می‌فرستن تا ببینن زنده‌ست یا نه. این کار هم پهنای باند رو هدر می‌ده، هم زمان‌بره. تو prscanm0r، ما اول یه TCP Pre-check انجام می‌دیم. یعنی چی؟ یعنی ابزار فقط یه اتصال اولیه (Handshake) با پورت پروکسی برقرار می‌کنه، بدون اینکه هیچ دیتای اضافی‌ای رد و بدل کنه. اگه اتصال برقرار شد، یعنی پروکسی "احتمالاً" زنده‌ست و میره مرحله بعد. اگه نشد، همون لحظه حذفش می‌کنه. این تکنیک ساده باعث می‌شه حدود ۹۰٪ پروکسی‌های مرده همون اول کار و بدون مصرف اینترنت شما فیلتر بشن.

۲. محدودکننده نرخ هوشمند و تأخیر تصادفی (Rate Limiter + Jitter)

اگه شما با یه سرعت دیوونه‌وار به یه سایت تست پروکسی درخواست بفرستید، اون سایت سریعاً متوجه می‌شه که یه ربات پشت کاره و درخواست‌های شما رو با خطای 429 Too Many Requests رد می‌کنه (به این می‌گن Rate Limiting). من تو این ابزار یه محدودکننده نرخ سراسری (Global Rate Limiter) گذاشتم. شما تعیین می‌کنی که مثلاً حداکثر ۱۰ تا تست در ثانیه انجام بشه. تازه، یه قابلیت به اسم Jitter هم اضافه کردم. جیتر یعنی یه تأخیر خیلی کوچک و تصادفی (مثلاً چند میلی‌ثانیه) بین هر درخواست. این کار باعث می‌شه الگوی درخواست‌های شما شبیه به رفتار یه کاربر واقعی انسانی بشه، نه یه ربات خشک و مکانیکی. در نتیجه، احتمال بن شدن یا لیمیت خوردن تقریباً به صفر می‌رسه.

۳. چرخش خودکار سرویس‌های تست (Service Rotation)

ابزار ما برای اینکه مطمئن بشه پروکسی واقعاً کار می‌کنه و آی‌پی رو درست تغییر داده، به سرویس‌هایی مثل ipwho.is، ipify یا ip-api درخواست می‌فرسته. اگه یکی از این سرویس‌ها شلوغ باشه یا به ما پاسخ ۴۲۹ بده، prscanm0r بدون اینکه متوقف بشه، به صورت خودکار و بی‌صدا میره سراغ سرویس بعدی تو لیست. این یعنی پایداری بالا و عدم وابستگی به یه منبع واحد.

۴. مدیریت منابع و کش (Caching & Backoff)

ابزار به صورت پیش‌فرض چند تا منبع (Source) پروکسی داره، اما شما می‌تونید لینک‌های خام (Raw) خودتون رو هم اضافه کنید. برای اینکه هر بار که ابزار رو اجرا می‌کنید، دوباره اون لینک‌ها رو از اول دانلود نکنه و به سرور منبع فشار نیاره، یه سیستم کش ۱۰ دقیقه‌ای داره. همچنین اگه دانلود یه منبع با خطا مواجه بشه، به جای اینکه مدام تلاش کنه، از الگوریتم Retry with Backoff استفاده می‌کنه (یعنی دفعه بعدی که تلاش می‌کنه، زمان انتظار رو دو برابر می‌کنه) و به هدر Retry-After که سرور می‌فرسته هم کاملاً احترام می‌ذاره.



بخش سوم

 قدرت خط فرمان (CLI) برای حرفه‌ای‌ها

اگه از اون دسته کاربرای لینوکسی هستی که ترمینال رو به هر چیزی ترجیح می‌دی، prscanm0r تو این بخش واقعاً می‌درخشه. دستوراتش جوری طراحی شدن که با یه خط کد، دقیقاً همون چیزی رو بگیری که می‌خوای. چند تا مثال کاربردی براتون می‌زنم:

  • اجرای ساده و سریع:
    prscanm0r run
    (این دستور مثل اسکریپت‌های قدیمی کار می‌کنه و در نهایت یه فایل working-proxies.txt بهت تحویل می‌ده).
  • کنترل دقیق سرعت و تعداد:
    prscanm0r run -n 3000 -r 10 -w 100
    (اینجا به ابزار می‌گی: فقط ۳۰۰۰ تا پروکسی رو بررسی کن، حداکثر سرعت تست رو بذار روی ۱۰ تا در ثانیه، و از ۱۰۰ تا پردازش همزمان (Worker) استفاده کن).
  • فیلتر کردن بر اساس کشور و سرعت:
    prscanm0r run -c "Germany,Iran" --max-latency 1500 --best 50
    (فقط پروکسی‌های آلمان و ایران رو تست کن، اونایی که تأخیرشون زیر ۱۵۰۰ میلی‌ثانیه است رو نگه دار و در نهایت ۵۰ تا از بهترین‌هاشون رو به من بده).
  • حالت بی‌صدا برای اسکریپت‌نویسی:
    prscanm0r run -q -f plain -o list.txt
    (حالت Quiet یا بی‌صدا فعال می‌شه، هیچ چیزی تو ترمینال چاپ نمی‌شه و فقط یه لیست ساده از http://ip:port ها تو فایل list.txt ذخیره می‌شه).

همچنین می‌تونی منابع و تنظیمات رو مستقیماً از ترمینال مدیریت کنی. مثلاً با prscanm0r source add [URL] یه منبع جدید اضافه کنی یا با prscanm0r config set rate 8 سرعت تست رو برای جلوگیری از لیمیت شدن، روی ۸ تنظیم کنی. همه این تنظیمات هم تو یه فایل config.json مرتب تو پوشه ~/.config/PRSCANM0R/ ذخیره می‌شن.

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

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

پس اگه از پروکسی‌های بی‌کیفیت و ابزارهای پیچیده و سنگین خسته شدی، همین الان به صفحه گیت‌هاب پروژه سر بزن، فایل .deb رو دانلود کن و خودت تفاوتش رو احساس کن. یادت نره اگه از کار باهاش راضی بودی، با زدن یه ستاره (Star) تو گیت‌هاب، هم به من انرژی بدی و هم باعث بشی این ابزار بیشتر دیده بشه و توسعه‌ش ادامه پیدا کنه.

لینک مخزن گیت‌هاب:
https://github.com/labelmatrix09-design/prscanm0r

(اگه سوالی در مورد نحوه نصب، تنظیمات پیشرفته یا رفع اشکال داشتی، حتماً تو بخش Issues گیت‌هاب یا همینجا بپرس؛ با کمال میل راهنماییت می‌کنم.)