چگونه هنگام اسکرپینگ دادههای عمومی از Cloudflare عبور کنیم
تاریخ انتشار: 23 ژوئیه 2026 · 7 دقیقه مطالعه
خلاصه: Cloudflare فقط یک بررسی ربات اجرا نمیکند، بلکه چندین بررسی را اجرا میکند — اعتبار IP/ASN، انگشتنگاری TLS و HTTP/2، و چالشهای تعاملی JS (Managed Challenge / Turnstile). با جفت کردن هر لایه از آن عبور میکنید: یک پروکسی خانگی برای آیپی، یک اثر انگشت TLS دقیق مثل مرورگر (curl_cffi، یا یک مرورگر واقعی)، و یک مرورگر واقعی که جاوااسکریپت را اجرا میکند برای صفحات چالش. اینکه به کدام ترکیب نیاز دارید بستگی دارد به اینکه واقعاً کدام لایه شما را متوقف میکند. فقط دادههای عمومی را اسکرپ کنید و مؤدبانه نرخ را محدود کنید.
Cloudflare یک دیوار نیست، سهتاست
درباره «دور زدن Cloudflare» طوری صحبت میشود که انگار یک قفل واحد است. اینطور نیست. مدیریت ربات Cloudflare چندین بررسی مستقل را اجرا میکند، و یک درخواست باید همه آنها را برآورده کند. وقتی مسدود میشوید، سؤال مفید این نیست که «چگونه Cloudflare را دور بزنم» بلکه «کدام یک از بررسیهای آن را رد نمیکنم؟» — چون هرکدام راهحل متفاوتی دارد.
| لایه | چه چیزی را بررسی میکند | چگونه آن را رد نمیکنید | راهحل |
|---|---|---|---|
| اعتبار آیپی | ASN آیپی خروجی | درخواست از یک بازه دیتاسنتر | پروکسی خانگی |
| اثر انگشت TLS / HTTP2 | ClientHello شما (JA3/JA4) | اثر انگشت پایتون/کتابخانه | curl_cffi یا یک مرورگر واقعی |
| چالش JS | اینکه آیا جاوااسکریپت اجرا میشود | بدون موتور JS (HTTP خام) | یک مرورگر واقعی که JS را اجرا میکند |
لایه 1: اعتبار آیپی — چیزی که نمیتوانید از کد جعل کنید
پیش از آنکه Cloudflare به هر چیزی که کلاینت شما میفرستد نگاه کند، آیپی که از آن میآیید را امتیازدهی میکند. ASNهای دیتاسنتر (AWS، Hetzner، OVH) جریمه دائمی دارند چون بازدیدکنندگان واقعی تقریباً هرگز از آنها مرور نمیکنند. هیچ هدر، هیچ ترفند اثر انگشت و هیچ مرورگری نمیتواند ASN آیپی خروجی شما را تغییر دهد — فقط مسیردهی از طریق شبکه دیگری میتواند.
یک پروکسی خانگی به Cloudflare یک آیپی واقعی اینترنت خانگی برای امتیازدهی میدهد. در سایتهایی که عمدتاً روی اعتبار آیپی تکیه میکنند، همین یک تغییر اغلب کل راهحل است. در سایتهای سختتر، لازم است اما کافی نیست — همچنان لایههای 2 و 3 را باید عبور کنید.
لایه 2: اثر انگشت TLS — مسدودیت خاموش
طی دستدهی TLS، Cloudflare ClientHello شما را به یک اثر انگشت JA3/JA4 هش میکند. requests و httpx پایتون اثر انگشتی تولید میکنند که هیچ مرورگر واقعی ارسال نمیکند، بنابراین Cloudflare میتواند شما را بهطور خاموش، پیش از ارسال حتی یک بایت از صفحه، مسدود کند — بدون چالش قابلمشاهده، فقط یک 403 یا توقف.
اگر با درخواستهای HTTP اسکریپت مینویسید نه با یک مرورگر، یک اثر انگشت دقیق مثل مرورگر را با curl_cffi بازیابی کنید. این لایه 2 را برطرف میکند — اما همانطور که اندازهگیریهای ما در ادامه نشان میدهد، برطرفکردن لایههای 1 و 2 روی سایتهایی که حالت تهاجمی ضدربات Cloudflare را اجرا میکنند، لازم است اما کافی نیست:
from curl_cffi import requests
proxies = {"https": "http://USER:PASS@gw.roamproxy.com:41080"}
r = requests.get("https://target.example", impersonate="chrome124", proxies=proxies)
print(r.status_code)
چیزی که اندازهگیری کردیم (ژوئیه 2026)
بیشتر توصیهها درباره Cloudflare ادعا شدهاند، نه اندازهگیریشده. ما دو خط دفاعی در لایه HTTP را روی اهداف واقعی، از دروازه خودمان، در برابر هم آزمایش کردیم، بنابراین اعداد زیر قابلبازتولید هستند نه افسانه. دو متغیر، چهار ترکیب: آیپی خروجی (یک آدرس دیتاسنتر Psychz در برابر یک خط خانگی Frontier Communications، هر دو آمریکا) و استک TLS (requests پایتون در برابر curl_cffi با جعل هویت Chrome). هفت سایت پشت Cloudflare، دو دور هرکدام.
| ترکیب | موفق | نتیجه |
|---|---|---|
| آیپی دیتاسنتر + TLS پیشفرض پایتون | 0 / 7 | 403، چند مورد با صفحه چالش JS |
| آیپی دیتاسنتر + TLS جعلشده Chrome | 0 / 7 | مشابه بالا |
| آیپی خانگی + TLS پیشفرض پایتون | 0 / 7 | مشابه بالا |
| آیپی خانگی + TLS جعلشده Chrome | 0 / 7 | مشابه بالا |
دو چیز در آن جدول ارزش تأمل دارند، چون هر دو با توصیههایی که جای دیگر میخوانید تناقض دارند.
آیپی خانگی هیچ سودی برای ما در این اهداف نداشت. حتی یک سایت در این مجموعه با خروجی خانگی Frontier متفاوت از خروجی دیتاسنتر Psychz رفتار نکرد. این به این معنا نیست که اعتبار آیپی یک افسانه است — به این معناست که این سایتها هرگز آنقدر پیش نرفتند که آیپی ما را قضاوت کنند، چون درخواستی که بررسی مدیریت ربات را رد نمیکند، ابتدا بر اساس زمینههای دیگر رد میشود. کیفیت آیپی نتایج را در میانه منحنی دشواری تعیین میکند؛ در انتهای سخت، محدودیت الزامآور نیست، و خرید آیپیهای بهتر آن را جابهجا نمیکند.
جعل هویت TLS در Chrome بهتنهایی هم حتی یک سایت را برنگرداند. این اهداف نیازمند اجرای چالش جاوااسکریپت هستند، کاری که هیچ کلاینت HTTP انجام نمیدهد. اگر روی سایتی مثل این گیر 403 کردهاید، افزودن یک پروکسی یا یک کتابخانه TLS راهحل نیست — به لایه 3 مراجعه کنید.
برای کالیبراسیون، همان اسکریپت روی سایتهای پشت Cloudflare که حالت تهاجمی ضدربات را اجرا نمیکنند، در همه ترکیبها از جمله پایتون ساده از یک میزبان خام دیتاسنتر، بهخوبی عبور کرد. «محافظتشده توسط Cloudflare» طیف بسیار گستردهای از سختگیری را در بر میگیرد، و ارزش دارد پیش از خرج کردن پول روی ابزار، بفهمید هدف شما در کدام انتهای آن قرار دارد.
دنبال یک هش JA3 خاص نگردید
در حین اندازهگیری، بررسی کردیم که درخواستهای خودمان واقعاً چه اثر انگشتی ارائه میدهند.
سه درخواست متوالی curl_cffi با همان تنظیم impersonate="chrome"،
از همان میزبان، سه هش JA3 متفاوت تولید کردند
(a0052cf3…، 0899dce7…، d2de58db…). این باگ نیست:
Chrome واقعی افزونههای TLS را جابهجا میکند و مقادیر GREASE تزریق میکند، بنابراین JA3 آن
به ازای هر اتصال تغییر میکند، و یک کتابخانه جعل هویت خوب آن را بازتولید میکند. هر راهنمایی
که به شما بگوید یک رشته JA3 خاص را مطابقت دهید، مرورگری را توصیف میکند که سالهاست دیگر وجود ندارد.
چیزی که در تمام نُه درخواست ما — مستقیم، از طریق پروکسی خانگی، و از طریق پروکسی دیتاسنتر —
یکسان ماند، اثر انگشت HTTP/2
(52d84b11…) بود، که از فریم SETTINGS، اندازه جدول هدر، اندازه پنجره
و ترتیب شبههدر مشتق میشود. این بسیار پایدارتر از JA3 است، دقیقاً به همین دلیل برای
کسانی که شما را انگشتنگاری میکنند ارزش بیشتری دارد. هر دو را هنگام دیباگ یک مسدودیت خاموش بررسی کنید؛ ما از
tls.browserleaks.com/json استفاده کردیم.
روش: 28 درخواست در 7 سایت پشت Cloudflare، دو دور برای هر ترکیب، 27 ژوئیه 2026، خروجیهای آمریکا. یک عبور موفق نیازمند HTTP 200 و بدنهای بدون نشانههای چالش بود — یک 200 که «Just a moment…» برمیگرداند، مسدودیتی است که کد موفقیت پوشیده.
لایه 3: چالش JS — وقتی به یک مرورگر واقعی نیاز دارید
برخی پیکربندیهای Cloudflare یک چالش تعاملی ارائه میدهند — میانصفحه «Checking your browser…» یا یک ویجت Turnstile. اینها با دادن جاوااسکریپت به کلاینت کار میکنند که یک مرورگر واقعی آن را اجرا میکند تا ثابت کند مرورگر است. یک راهحل اثر انگشت اینجا کمکی نمیکند، چون هیچ موتور جاوااسکریپتی در یک کتابخانه HTTP برای اجرای چالش وجود ندارد.
پاسخ قابلاعتماد استفاده از یک مرورگر واقعی است که JS را اجرا میکند — Chromium هدلس از طریق Playwright، یا یک ایجنت مبتنی بر LLM روی آن. آن مرورگر را از طریق همان پروکسی خانگی هدایت کنید و هر سه لایه را یکجا عبور میکند. برای راهاندازی ترکیب مرورگر + پروکسی، به استفاده از پروکسی خانگی با browser-use مراجعه کنید؛ همان دیکشنری پروکسی برای Playwright ساده هم کار میکند.
ابزار را با لایه هماهنگ کنید
- مسدود فقط بر اساس آیپی (بهصورت محلی کار میکند، از سرور شکست میخورد) — معمولاً یک پروکسی خانگی کل راهحل است.
- 403 خاموش با آیپی و هدرهای درست — مسدودیت اثر انگشت TLS؛ curl_cffi اضافه کنید.
- «Checking your browser» / Turnstile قابلمشاهده — چالش JS؛ از یک مرورگر واقعی از طریق پروکسی استفاده کنید.
وقتی یک آیپی خانگی بهعلاوه curl_cffi کافی است، سراغ یک مرورگر هدلس کامل نروید — مرورگر کندتر و سنگینتر است. فقط به اندازهای که دفاع واقعی هدف نیاز دارد، تشدید کنید. برای چکلیست گستردهتر دلایل مسدود شدن اسکرپرها، به چگونه در وباسکرپینگ مسدود نشویم مراجعه کنید.
دادههای عمومی را مسئولانه جمعآوری کنید. این تکنیکها برای اسکرپینگ صفحات در دسترس عموم با نرخ معقول هستند. robots.txt و شرایط سایت را در جایی که اعمال میشود رعایت کنید، به دادههای پشت یک مجوزی که ندارید دسترسی پیدا نکنید، و نرخ درخواست را محدود کنید تا هرگز سرویس را برای کاربران واقعی آن تخریب نکنید.
سوالات متداول
چرا همان درخواست در مرورگرم کار میکند اما در اسکریپتم نه؟
چون مرورگر شما هر سه بررسی Cloudflare را رد میکند و اسکریپت شما هیچکدام را. مرورگر شما از آیپی خانگی خودتان خارج میشود، یک اثر انگشت واقعی TLS از Chrome میفرستد و چالش جاوااسکریپت را خودکار رد میکند. یک اسکریپت ساده requests از یک سرور ابری در همه این موارد عکس عمل میکند. راهحل یک ترفند نیست — بازیابی هرکدام از این سه ویژگی است.
آیا فقط یک پروکسی خانگی برای عبور از Cloudflare کافی است؟
به این بستگی دارد سایت روی کدام لایه تکیه میکند. یک آیپی خانگی بررسی اعتبار را رد میکند، که اغلب برای سایتهایی که فقط آیپی را امتیازدهی میکنند کافی است. اما اگر سایت هم اثر انگشت TLS را میگیرد یا چالش JS نشان میدهد، فقط آیپی تمیز کمکی نمیکند — بازهم توسط لایهای که آن را برطرف نکردهاید متوقف میشوید. روی یک هدف سخت معمولاً به راهحل آیپی و یک راهحل اثر انگشت یا مرورگر واقعی با هم نیاز دارید.
تفاوت بررسی TLS و چالش JS چیست؟
بررسی TLS بهطور خاموش طی دستدهی رخ میدهد — Cloudflare اثر انگشت JA3/JA4 شما را پیش از بارگذاری هر صفحه میخواند و میتواند بدون هیچ چالش قابلمشاهدهای شما را مسدود کند. چالش JS همان صفحه قابلمشاهده «Checking your browser» / ویجت Turnstile است: Cloudflare جاوااسکریپتی ارائه میدهد که یک مرورگر واقعی آن را اجرا میکند تا ثابت کند مرورگر است. یک راهحل اثر انگشت (curl_cffi) اولی را شکست میدهد؛ فقط یک مرورگر واقعی که JS را اجرا میکند دومی را شکست میدهد.
آیا اسکرپینگ یک سایت محافظتشده با Cloudflare قانونی است؟
اسکرپینگ دادههای در دسترس عموم در بسیاری از حوزههای قضایی بهطور کلی مجاز است، اما یک حق مطلق نیست. جانب احتیاط را رعایت کنید: فقط دادههای عمومی جمعآوری کنید، robots.txt و شرایط سایت را در جایی که اعمال میشود رعایت کنید، هرگز دادههای پشت یک ورود که مجاز به دسترسی آن نیستید را اسکرپ نکنید، و نرخ درخواست را محدود کنید تا سرویس را برای کاربران واقعی تخریب نکنید. تکنیکهای اینجا برای جمعآوری قانونی داده است، نه برای غرق کردن یک سایت.
لایه آیپی چیزی است که نمیتوانید از کد جعل کنید، و اولین چیزی است که Cloudflare بررسی میکند. آیپیهای خانگی Roam — چرخشی با $2 در هر گیگابایت، ثابت با $4 در هر آیپی در ماه، از طریق HTTP و SOCKS5 — به Cloudflare یک ASN واقعی اینترنت خانگی برای امتیازدهی میدهند، بهجای یک بازه دیتاسنتر. یک حساب بسازید و 300 مگابایت ترافیک آزمایشی رایگان بگیرید تا آن را در برابر هدف خودتان تست کنید.