Skip to content
Advanced / 3 min read

اسکرپینگ وب پیشرفته با Dataimpulse و Puppeteer در ویندوز

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

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

مرور کلی

Puppeteer یک کتابخانه قدرتمند Node.js برای کنترل Chrome بدون رابط گرافیکی است. وقتی با پروکسی‌های مسکونی چرخشی Dataimpulse ترکیب شود، می‌توانید وب‌سایت‌های بزرگ را بدون بلاک شدن اسکرپ کنید. این آموزش نشان می‌دهد چگونه Puppeteer را در ویندوز راه‌اندازی کنید تا از پروکسی‌های مسکونی Dataimpulse استفاده کند، احراز هویت را مدیریت کنید و چرخش کارآمد را برای اسکرپینگ با حجم بالا پیاده‌سازی کنید.

پیش‌نیازها

  • ویندوز ۱۰ یا بالاتر.
  • Node.js ۱۴+ نصب شده باشد (از وب‌سایت رسمی Node.js دانلود کنید).
  • یک حساب Dataimpulse با اطلاعات ورود پروکسی مسکونی (نام کاربری، رمز عبور، endpoint).
  • دانش پایه از JavaScript و async/await.

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

اگر قبلاً این کار را نکرده‌اید، Node.js را از وب‌سایت رسمی نصب کنید. سپس یک پوشه پروژه جدید بسازید و Puppeteer را نصب کنید.

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

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

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

  • Endpoint: یک هاست و پورت، مثلاً proxy.dataimpulse.com:12321 (برای جزئیات دقیق داشبورد خود را بررسی کنید).
  • نام کاربری: نام کاربری Dataimpulse شما.
  • رمز عبور: رمز عبور Dataimpulse شما.

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

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

Puppeteer می‌تواند با ارسال آرگومان --proxy-server هنگام راه‌اندازی مرورگر از یک پروکسی استفاده کند. احراز هویت از طریق page.authenticate() انجام می‌شود. یک فایل scrape.js بسازید:

const puppeteer = require('puppeteer');

const PROXY_HOST = 'YOUR_ENDPOINT_HOST'; // Replace with your Dataimpulse proxy host
const PROXY_PORT = 'YOUR_ENDPOINT_PORT'; // Replace with your Dataimpulse proxy port
const PROXY_USER = 'your_username';
const PROXY_PASS = 'your_password';

(async () => {
  const browser = await puppeteer.launch({
    headless: true,
    args: [`--proxy-server=http://${PROXY_HOST}:${PROXY_PORT}`],
  });

  const page = await browser.newPage();
  await page.authenticate({ username: PROXY_USER, password: PROXY_PASS });

  await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle0' });
  const content = await page.content();
  console.log(content); // Should show the proxy IP

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

اسکریپت را با node scrape.js اجرا کنید. باید یک آدرس IP ببینید که مال شما نیست و تأیید می‌کند پروکسی کار می‌کند.

مرحله ۴: پیاده‌سازی منطق پروکسی چرخشی

از آنجایی که endpoint Dataimpulse به‌طور خودکار IPها را می‌چرخاند، می‌توانید چندین درخواست را از طریق همان نمونه مرورگر انجام دهید و هر کدام از یک IP متفاوت استفاده می‌کنند. با این حال، برای کنترل بهتر و جلوگیری از شناسایی، می‌توانید مرورگر را ببندید و دوباره باز کنید یا از کانتکست‌های incognito استفاده کنید. در اینجا مثالی آورده شده که چندین صفحه را با چرخش اسکرپ می‌کند:

const puppeteer = require('puppeteer');

const PROXY_HOST = 'YOUR_ENDPOINT_HOST';
const PROXY_PORT = 'YOUR_ENDPOINT_PORT';
const PROXY_USER = 'your_username';
const PROXY_PASS = 'your_password';

async function scrapeWithRotation(urls) {
  const browser = await puppeteer.launch({
    headless: true,
    args: [`--proxy-server=http://${PROXY_HOST}:${PROXY_PORT}`],
  });

  const results = [];
  for (const url of urls) {
    const page = await browser.newPage();
    await page.authenticate({ username: PROXY_USER, password: PROXY_PASS });
    try {
      await page.goto(url, { waitUntil: 'domcontentloaded', timeout: 30000 });
      const title = await page.title();
      results.push({ url, title });
    } catch (error) {
      console.error(`Error scraping ${url}:`, error.message);
    } finally {
      await page.close();
    }
  }

  await browser.close();
  return results;
}

const urls = [
  'https://example.com',
  'https://example.org',
  'https://example.net',
];

scrapeWithRotation(urls).then(console.log);

هر صفحه جدید از یک IP چرخشی از استخر Dataimpulse استفاده می‌کند.

مرحله ۵: مدیریت هم‌زمانی و مدیریت خطا

برای اسکرپینگ با حجم بالا، باید هم‌زمانی و خطاها را به‌خوبی مدیریت کنید. از puppeteer-cluster برای مدیریت چندین صفحه به‌صورت موازی با رعایت محدودیت‌های حافظه استفاده کنید.

npm install puppeteer-cluster
const { Cluster } = require('puppeteer-cluster');

const PROXY_HOST = 'YOUR_ENDPOINT_HOST';
const PROXY_PORT = 'YOUR_ENDPOINT_PORT';
const PROXY_USER = 'your_username';
const PROXY_PASS = 'your_password';

(async () => {
  const cluster = await Cluster.launch({
    concurrency: Cluster.CONCURRENCY_PAGE,
    maxConcurrency: 5, // Adjust based on your resources
    puppeteerOptions: {
      headless: true,
      args: [`--proxy-server=http://${PROXY_HOST}:${PROXY_PORT}`],
    },
  });

  cluster.on('taskerror', (err, data) => {
    console.error(`Error scraping ${data}:`, err.message);
  });

  await cluster.task(async ({ page, data: url }) => {
    await page.authenticate({ username: PROXY_USER, password: PROXY_PASS });
    await page.goto(url, { waitUntil: 'domcontentloaded' });
    const title = await page.title();
    console.log(`Scraped ${url} - Title: ${title}`);
  });

  const urls = [
    'https://example.com',
    'https://example.org',
    'https://example.net',
    // Add more URLs
  ];

  for (const url of urls) {
    cluster.queue(url);
  }

  await cluster.idle();
  await cluster.close();
})();

این تنظیمات به شما امکان می‌دهد چندین صفحه را به‌طور هم‌زمان اسکرپ کنید و در عین حال از پروکسی‌های چرخشی Dataimpulse بهره ببرید.

مرحله ۶: تست و اعتبارسنجی

اسکریپت خود را اجرا کنید و تأیید کنید که:

  • آدرس IP بین درخواست‌ها تغییر می‌کند (با https://httpbin.org/ip بررسی کنید).
  • هیچ خطای احراز هویت پروکسی رخ نمی‌دهد.
  • صفحات هدف به‌درستی بارگذاری می‌شوند.

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

عیب‌یابی

  • 407 Proxy Authentication Required: نام کاربری و رمز عبور خود را دوباره بررسی کنید. مطمئن شوید از روش احراز هویت صحیح (page.authenticate()) استفاده می‌کنید.
  • تایم‌اوت‌های اتصال: گزینه timeout را در page.goto() افزایش دهید. همچنین مطمئن شوید endpoint و پورت پروکسی شما صحیح است.
  • راه‌اندازی مرورگر با خطای پروکسی شکست می‌خورد: مطمئن شوید آرگومان --proxy-server از قالب صحیح استفاده می‌کند: http://host:port (بدون اطلاعات ورود در URL).
  • چرخش کار نمی‌کند: endpoint چرخشی Dataimpulse باید برای هر اتصال جدید یک IP جدید فراهم کند. اگر به نشست‌های چسبنده نیاز دارید، از پورت چسبنده اختصاصی ارائه‌شده در داشبورد خود استفاده کنید.

خلاصه

شما یاد گرفتید چگونه پروکسی‌های مسکونی Dataimpulse را با Puppeteer در ویندوز برای اسکرپینگ وب پیشرفته یکپارچه کنید. با بهره‌گیری از احراز هویت پروکسی Puppeteer و استخر IP چرخشی Dataimpulse، می‌توانید اسکرپرهای مقیاس‌پذیری بسازید که از بلاک شدن IP جلوگیری می‌کنند. به یاد داشته باشید خطاها را مدیریت کنید، هم‌زمانی را کنترل کنید و به شرایط استفاده وب‌سایت‌ها احترام بگذارید.