Skip to content
Intermediate / 2 min read

چگونه از پروکسی‌های مسکونی Dataimpulse با Puppeteer برای وب‌اسکرپینگ روی Linux استفاده کنیم

یاد بگیرید چگونه پروکسی‌های مسکونی Dataimpulse را با Puppeteer روی Linux برای وب‌اسکرپینگ قابل اعتماد و در مقیاس بزرگ ادغام کنید. این راهنمای گام‌به‌گام نصب، احراز هویت و چرخش IP را پوشش می‌دهد.

لینوکس HTTP(S) وب اسکرپینگ

مرور کلی

Puppeteer یک کتابخانه Node.js است که یک API سطح بالا برای کنترل Chrome یا Chromium بدون رابط کاربری (headless) ارائه می‌دهد. هنگام اسکرپینگ در مقیاس بزرگ، استفاده از پروکسی‌های مسکونی مانند Dataimpulse به جلوگیری از مسدود شدن IP و محدودیت‌های نرخ کمک می‌کند. این آموزش نشان می‌دهد چگونه Puppeteer را طوری پیکربندی کنید که ترافیک را از طریق پروکسی‌های مسکونی Dataimpulse روی یک سیستم Linux مسیردهی کند. ما احراز هویت پروکسی HTTP، تست و چرخش پایه را پوشش می‌دهیم.

پیش‌نیازها

قبل از شروع، مطمئن شوید که موارد زیر را دارید:

  • یک ماشین Linux (Ubuntu 20.04+ یا مشابه).
  • Node.js 14+ و npm نصب‌شده.
  • یک حساب Dataimpulse با اعتبارنامه‌های پروکسی مسکونی (نام کاربری، رمز عبور، endpoint، پورت). می‌توانید برای یک طرح pay-as-you-go در وب‌سایت Dataimpulse ثبت‌نام کنید.
  • آشنایی پایه با خط فرمان و JavaScript.

مرحله ۱: نصب Node.js و Puppeteer روی Linux

ابتدا فهرست بسته‌های خود را به‌روزرسانی کنید و در صورت نصب نبودن Node.js آن را نصب کنید.

sudo apt update
sudo apt install -y nodejs npm

نصب را تأیید کنید:

node --version
npm --version

یک دایرکتوری پروژه جدید ایجاد کرده و آن را مقداردهی اولیه کنید:

mkdir puppeteer-dataimpulse
cd puppeteer-dataimpulse
npm init -y

Puppeteer را نصب کنید:

npm install puppeteer

توجه: Puppeteer به‌طور پیش‌فرض یک باینری Chromium سازگار را دانلود می‌کند. روی Linux، ممکن است نیاز به نصب وابستگی‌های اضافی داشته باشید. اگر کتابخانه‌های گمشده را مشاهده کردید، آن‌ها را نصب کنید:

sudo apt install -y libx11-xcb1 libxcomposite1 libxcursor1 libxdamage1 libxi6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libatk1.0-0 libatk-bridge2.0-0 libgtk-3-0

مرحله ۲: دریافت اعتبارنامه‌های پروکسی Dataimpulse

وارد داشبورد Dataimpulse خود شوید و اعتبارنامه‌های پروکسی مسکونی خود را پیدا کنید. شما نیاز دارید به:

  • میزبان پروکسی (endpoint ارائه‌شده توسط Dataimpulse)
  • پورت (مثلاً 823 برای HTTP، 824 برای SOCKS5)
  • نام کاربری و رمز عبور برای احراز هویت

Dataimpulse به‌طور پیش‌فرض از یک endpoint واحد با IPهای چرخشی استفاده می‌کند. برای این آموزش، ما از endpoint HTTP استفاده می‌کنیم. جای‌نگهدارهای موجود در کد زیر را با اعتبارنامه‌های واقعی خود جایگزین کنید.

مرحله ۳: پیکربندی Puppeteer برای استفاده از پروکسی

یک فایل جدید به نام scrape.js ایجاد کنید و کد زیر را برای راه‌اندازی Puppeteer با پروکسی Dataimpulse اضافه کنید.

const puppeteer = require('puppeteer');

(async () => {
  const proxyHost = 'your-proxy-host.dataimpulse.com'; // با میزبان خود جایگزین کنید
  const proxyPort = 823; // با پورت خود جایگزین کنید
  const proxyUser = 'your_username';
  const proxyPass = 'your_password';

  const browser = await puppeteer.launch({
    headless: true, // یا برای اشکال‌زدایی false
    args: [
      `--proxy-server=http://${proxyHost}:${proxyPort}`,
      '--no-sandbox',
      '--disable-setuid-sandbox'
    ]
  });

  const page = await browser.newPage();

  // احراز هویت با پروکسی
  await page.authenticate({
    username: proxyUser,
    password: proxyPass
  });

  // به یک صفحه آزمایشی بروید تا IP را تأیید کنید
  await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle2' });

  // آدرس IP را استخراج کنید
  const ipInfo = await page.evaluate(() => document.body.innerText);
  console.log('Your IP address:', ipInfo);

  await browser.close();
})();

اجرای اسکریپت:

node scrape.js

اگر موفقیت‌آمیز باشد، یک آدرس IP متفاوت از IP محلی خود خواهید دید که متعلق به استخر Dataimpulse است.

مرحله ۴: مدیریت احراز هویت پروکسی

متد page.authenticate() در Puppeteer برای پروکسی‌های HTTP کار می‌کند. با این حال، اگر از پروکسی‌های SOCKS5 استفاده می‌کنید، Puppeteer از احراز هویت SOCKS5 به‌طور مستقیم پشتیبانی نمی‌کند. در آن صورت، ممکن است نیاز به استفاده از یک مبدل پروکسی محلی مانند gost یا proxychains داشته باشید. برای این آموزش، ما روی پروکسی‌های HTTP تمرکز می‌کنیم.

اگر ترجیح می‌دهید اعتبارنامه‌ها را در URL پروکسی جاسازی کنید (برخی تنظیمات این را مجاز می‌دانند)، می‌توانید امتحان کنید:

args: [
  `--proxy-server=http://${proxyUser}:${proxyPass}@${proxyHost}:${proxyPort}`
]

اما توجه داشته باشید که Chrome ممکن است به دلایل امنیتی اعتبارنامه‌ها را در URL نپذیرد. رویکرد page.authenticate() قابل اعتمادتر است.

مرحله ۵: تست اتصال پروکسی

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

for i in {1..3}; do node scrape.js; done

شما باید سه IP متفاوت ببینید. این تأیید می‌کند که چرخش کار می‌کند.

مرحله ۶: پیاده‌سازی چرخش IP و کنترل نشست (اختیاری)

Dataimpulse به شما اجازه می‌دهد چرخش را با استفاده از یک شناسه نشست در نام کاربری کنترل کنید. نحو دقیق متفاوت است، بنابراین برای قالب صحیح به داشبورد Dataimpulse یا مستندات خود مراجعه کنید. به‌طور معمول، می‌توانید یک شناسه نشست را به نام کاربری اضافه کنید تا همان IP برای چندین درخواست حفظ شود، یا آن را حذف کنید تا در هر درخواست چرخش انجام شود.

در Puppeteer، می‌توانید نام کاربری را برای هر نمونه مرورگر به‌صورت پویا تنظیم کنید. برای مثال، اگر یک نشست چسبنده می‌خواهید، ممکن است استفاده کنید:

const sessionId = 'abc123'; // با شناسه نشست خود جایگزین کنید
const proxyUser = `your_username-session-${sessionId}`;

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

عیب‌یابی

  • خطاهای احراز هویت: مطمئن شوید نام کاربری و رمز عبور شما صحیح است. اگر از کاراکترهای خاص استفاده می‌کنید، آن‌ها را URL-encode کنید.
  • اتمام مهلت اتصال: تنظیمات فایروال خود را بررسی کنید و مطمئن شوید که پورت پروکسی مسدود نیست. در صورت وجود، پورت دیگری را امتحان کنید.
  • Puppeteer راه‌اندازی نمی‌شود: وابستگی‌های گمشده را نصب کنید. دستور ldd chrome | grep not found را اجرا کنید تا کتابخانه‌های گمشده را پیدا کنید (مسیر Chrome ممکن است متفاوت باشد).
  • پروکسی نمی‌چرخد: تأیید کنید که از نام کاربری نشست چسبنده استفاده نمی‌کنید. اگر نشستی مشخص نشده باشد، هر درخواست باید یک IP جدید بگیرد.
  • خطاهای SSL: برخی سایت‌ها ممکن است پروکسی‌ها را رد کنند. برای تست، اضافه کردن --ignore-certificate-errors به args را امتحان کنید (برای محیط تولید توصیه نمی‌شود).

خلاصه

در این آموزش، یاد گرفتید چگونه پروکسی‌های مسکونی Dataimpulse را با Puppeteer روی Linux ادغام کنید. شما Puppeteer را نصب کردید، احراز هویت پروکسی را پیکربندی کردید، چرخش IP را تست کردید و کنترل نشست را بررسی کردید. این تنظیمات وب‌اسکرپینگ قابل اعتماد در مقیاس بزرگ را با توزیع درخواست‌ها در بیش از ۹۰ میلیون IP مسکونی ممکن می‌سازد. به یاد داشته باشید که به شرایط خدمات وب‌سایت و robots.txt احترام بگذارید. برای سایر ابزارهای اسکرپینگ، همان اعتبارنامه‌های پروکسی با هر کلاینت HTTP کار می‌کنند.