ProxynetProxynet

Undetected ChromeDriver برای اسکرپینگ وب

تاریخ انتشار:

3 دقیقه مطالعه

PXNET
نویسنده: PXNET
Undetected ChromeDriver برای اسکرپینگ وب

Undetected ChromeDriver نسخه‌ای اصلاح‌شده از ChromeDriver سلنیوم است که هدفش این است که سرویس‌های رایج تشخیص ربات، آن را اتوماسیون به شمار نیاورند.

این ابزار چیست؟

Undetected ChromeDriver کتابخانه‌ای در Python است که یک ChromeDriver وصله‌خورده ارائه می‌دهد. تغییرها روی همان نشانه‌هایی متمرکزند که سرویس‌هایی مانند Imperva و DataDome و Distil Networks و تا حدی Cloudflare با آن‌ها یک نشست Selenium را می‌شناسند.

چطور کار می‌کند؟

  • تغییر نام متغیرهای Selenium: شناسه‌هایی که Selenium در مرورگر جا می‌گذارد نام‌هایی می‌گیرند که در یک مرورگر معمولی دیده می‌شود.
  • User-Agent واقع‌نما: به‌جای شناسه‌ای که اتوماسیون بودن را بی‌درنگ لو می‌دهد.
  • رفتار طبیعی‌تر: الگوهای حرکت و زمان‌بندی که کمتر ماشینی به نظر می‌رسند.
  • کوکی و نشست: در طول بازدید درست نگهداری می‌شوند.
  • پشتیبانی از پروکسی: تا همه درخواست‌ها از یک آدرس بیرون نروند.

کدام محصولات پروکسی ما برای این کار مناسب‌اند:

نصب

bash
pip install undetected-chromedriver

نخستین اسکریپت:

python
import undetected_chromedriver as uc

# start the browser
driver = uc.Chrome()

# open the target page
driver.get("https://example.com")

# ... read the data you need ...

driver.quit()

با uc.ChromeOptions() مرورگر را تنظیم می‌کنید، مثلاً برای اجرا بدون پنجره:

python
import undetected_chromedriver as uc

options = uc.ChromeOptions()
options.add_argument("--headless=new")

driver = uc.Chrome(options=options)

وصل کردن پروکسی

python
import undetected_chromedriver as uc

options = uc.ChromeOptions()
options.add_argument("--proxy-server=http://PROXY_HOST:PORT")

driver = uc.Chrome(options=options)

کجا کم می‌آورد؟

این کتابخانه از بسیاری از روش‌های تشخیص می‌گذرد، اما نه از همه، و خودش چرخش پروکسی ندارد.

  • بررسی‌های ساده: نرخ موفقیت بالا؛ نشست تقریباً مثل یک بازدید دستی رفتار می‌کند.
  • بررسی‌های متوسط: سرویس‌هایی مانند Cloudflare وارد کار می‌شوند و باید تنظیم اثر انگشت و نگهداری درست کوکی را هم به آن افزود.
  • بررسی‌های سخت‌گیرانه: تحلیل رفتار در مرورگر معمولاً اتوماسیون را با این حال تشخیص می‌دهد. اینجا سراغ ابزارهای دیگر یا یک رابط رسمی رفتن بهتر است.

راه‌اندازی کمی بیشتر از ChromeDriver معمولی طول می‌کشد؛ این بهای همان وصله‌هاست و در اجراهای طولانی به چشم نمی‌آید.

شیوه‌های درست

آدرس را عوض کنید. درخواست‌های فراوان از یک IP آشکارترین نشانه ممکن است. یک پروکسی مسکونی چرخشی این کار را در سمت سرویس انجام می‌دهد؛ با فهرست شخصی خودتان، چرخش را بر اساس چرخاندن پروکسی در Python بسازید.

اثر انگشت را هماهنگ کنید. آنچه مرورگر درباره فونت‌ها و وضوح صفحه و گرافیک فاش می‌کند، خودش یک نشانه است. کتابخانه‌هایی مانند selenium-stealth آن را هموار می‌کنند.

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

حالت بدون پنجره را با احتیاط به کار ببرید. اجرا بدون پنجره راحت است، اما برخی سایت‌ها خودِ آن را نشانه می‌گیرند. اگر به مشکل خوردید، خاموشش کنید و ببینید.

بیش از حد منظم کار نکنید. مکث‌های تصادفی میان درخواست‌ها و مسیری که هر بار یکسان نباشد، کمتر از یک اجرای دقیقاً زمان‌بندی‌شده جلب توجه می‌کند.

جمع‌بندی

Undetected ChromeDriver ابزار کارآمدی است، اما هر موردی را حل نمی‌کند. نرخ تشخیص وقتی واقعاً پایین می‌آید که در کنار آن آدرس متغیر و اثر انگشت تنظیم‌شده و ریتم آرام هم داشته باشید.

برای مقصدهای سخت‌گیرتر، نگاهی به Playwright یا Puppeteer بیندازید، یا اگر API رسمی هست از آن استفاده کنید. و فارغ از ابزار: شرایط استفاده سایت مقصد و قوانین جاری را رعایت کنید.

پرسش از ChatGPTپرسش از Claude