۹ آبان ۱۴۰۵ github.com ۳ دقیقه مطالعه

پروژه cfsolve؛ حل‌کننده چالش‌های کلودفلر و Turnstile به زبان Rust بدون نیاز به مرورگر Headless

پروژه cfsolve؛ حل‌کننده چالش‌های کلودفلر و Turnstile به زبان Rust بدون نیاز به مرورگر Headless — Cloudflare Turnstile solver library (no headless browser required)

خلاصه

پروژه cfsolve یک کتابخانه و ابزار خط فرمان به زبان Rust است که بدون نیاز به مرورگرهای سنگین Headless، چالش‌ها و ویدجت‌های Turnstile شرکت Cloudflare را حل می‌کند. این ابزار با شبیه‌سازی درخواست‌ها و پروفایل مرورگرها، توکن یا کوکی clearance تولید می‌کند.

معرفی پروژه cfsolve

ابزار cfsolve یک کتابخانه و ابزار خط فرمان (CLI) متن‌باز توسعه‌یافته به زبان Rust است که برای عبور از چالش‌ها و ویدجت‌های امنیتی Cloudflare (شامل Turnstile و صفحات چالش) بدون اتکا به مرورگرهای سنگین Headless مانند Puppeteer یا Playwright طراحی شده است. این ابزار در نهایت یک توکن معتبر Turnstile برای ویدجت‌ها یا کوکی cf_clearance را برای صفحات چالش‌برانگیز خروجی می‌دهد.

معماری و نحوه عملکرد

برخلاف روش‌های سنتی که نیازمند اجرای یک مرورگر کامل برای رندر کردن جاوا اسکریپت و حل پازل‌های امنیتی هستند، cfsolve درخواست‌محور (Request-based) است و به صورت کاملاً معکوس‌شده (Full Reverse) عمل می‌کند. این کتابخانه با استفاده از پروفایل‌های مرورگر (مانند فایل‌های JSON پیش‌فرض برای Safari روی iOS) و ضبط پاسخ‌های مربوط به بررسی‌های مرورگر، درخواست‌ها را به صورت مستقیم شبیه‌سازی می‌کند.

برای استفاده از این کتابخانه در پروژه‌های Rust، باید آن را به عنوان یک وابستگی محلی اضافه کرده و پچ‌های مربوط به پشته ارتباطی آن (BoringSSL و موارد مشابه) را در فایل تنظیمات پروژه خود لحاظ کنید:

[dependencies]
cfsolve = { path = "/path/to/cfsolve", default-features = false }
tokio = { version = "1", features = ["macros", "rt-multi-thread"] }

نمونه کد ساده برای استفاده از کتابخانه جهت دریافت توکن Turnstile:

use cfsolve::{Browser, Options, PageSource, Turnstile};

#[tokio::main]
async fn main() -> Result<(), Box<dyn std::error::Error>> {
    let browser = Browser::read("/path/to/cfsolve/profiles/safari-26-ios.json")?;
    let options = Options::default();

    let turnstile = Turnstile {
        url: "https://example.com/login".parse()?,
        page: PageSource::Navigate,
        widget: None,
    };
    let token = browser.solve_turnstile(turnstile, &options).await?;
    println!("{token}");
    Ok(())
}

وضعیت پروژه و سیگنال‌های بلوغ

  • زبان اصلی: Rust
  • مجوز (License): MIT (به همراه وابستگی‌های پچ‌شده با مجوزهای اختصاصی خود)
  • وضعیت فعالیت: پروژه‌ای جدید با تعداد ستاره‌های محدود در گیت‌هاب که توجه توسعه‌دهندگان علاقه‌مند به حوزه‌های مهندسی معکوس و اتوماسیون را به خود جلب کرده است.

دیدگاه کاربران هکر نیوز

در بحث‌های انجام‌شده پیرامون این مخزن در هکر نیوز، برخی کاربران به نکته مهمی اشاره کرده‌اند: ارزش واقعی چنین ابزارهایی در داشتن سیستمی پایدار برای ردیابی تغییرات مکرر کلودفلر است (مثلاً استفاده از خطوط لوله LLM برای استخراج کدهای مبهم‌سازی‌شده جدید، مهندسی معکوس و به‌روزرسانی مداوم حل‌کننده). بدون چنین پشتیبانی مستمری، حفظ پایداری این ابزارها در پروژه‌های واقعی دشوار خواهد بود؛ با این حال، بسیاری از توسعه‌دهندگانی که به چنین راه‌حل‌هایی نیاز دارند، ترجیح می‌دهند راهکارهای اختصاصی خود را درون سازمان توسعه دهند.

در یک نگاه

  • زبان برنامه‌نویسی: Rust
  • مزیت اصلی: عدم نیاز به مرورگر Headless و مصرف بسیار پایین منابع
  • پشتیبانی از پروکسی: سازگار با پروتکل‌های HTTP، HTTPS، SOCKS5 و SOCKS5h
  • خروجی: توکن Turnstile یا کوکی cf_clearance
  • مدیریت پروفایل: پشتیبانی از شبیه‌سازی مشخصات مرورگرهای موبایل و دسکتاپ (مانند Safari و Chrome)

این مطلب به‌صورت کاملاً خودکار و با هوش مصنوعی از مقالهٔ اصلی و بحث هکرنیوز تهیه شده و ممکن است خطا داشته باشد. حقوق مطلب اصلی متعلق به نویسندهٔ آن است. قوانین و گزارش مشکل

این خبر را با دیگران به اشتراک بگذارید

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