چگونه از پروکسیهای مسکونی ProxyScrape با Puppeteer برای اسکرپینگ وب در Node.js استفاده کنیم
راهنمای گامبهگام یکپارچهسازی پروکسیهای مسکونی و دیتاسنتری ProxyScrape با Puppeteer در Node.js. پیکربندی پروکسی HTTP، احراز هویت، چرخش و یک پل SOCKS5 برای اسکرپینگ پیشرفته را بیاموزید.
مرور کلی
ProxyScrape پروکسیهای مسکونی، دیتاسنتری و موبایل را با پشتیبانی HTTP و SOCKS5 ارائه میدهد. وقتی با Puppeteer، یک مرورگر Chrome بدونرابط گرافیکی برای Node.js، ترکیب شود، میتوانید اسکرپینگ وب را در مقیاس بزرگ خودکار کنید و در همان حال ترافیک را از طریق استخری از بیش از ۹۷ میلیون IP مسیردهی کنید. این آموزش نشان میدهد چگونه پروکسیهای ProxyScrape را در Puppeteer پیکربندی کنید، احراز هویت انجام دهید، IPها را بچرخانید و خطاهای رایج را مدیریت کنید.
پیشنیازها
- Node.js نسخه ۱۶ یا بالاتر نصب شده باشد. میتوانید آن را از وبسایت رسمی Node.js دانلود کنید.
- یک حساب ProxyScrape با پروکسیهای مسکونی یا دیتاسنتری. دوره آزمایشی رایگان یا طرح پرداختی هر دو کار میکنند.
- آشنایی مقدماتی با JavaScript و خط فرمان.
مرحله ۱: ایجاد یک پروژه جدید Node.js
ترمینال خود را باز کنید و اجرا کنید:
mkdir puppeteer-proxyscrape
cd puppeteer-proxyscrape
npm init -y
npm install puppeteer
این یک پوشه پروژه ایجاد میکند و Puppeteer را نصب میکند. توجه کنید که Puppeteer بهطور خودکار یک نسخه سازگار از Chromium را دانلود میکند.
مرحله ۲: دریافت جزئیات پروکسی ProxyScrape خود
وارد داشبورد ProxyScrape خود شوید. به بخش فهرست پروکسی بروید. جزئیات اتصال برای هر نوع پروکسی را خواهید دید:
- پروکسیهای مسکونی: نشستهای چرخشی یا چسبنده، با احراز هویت نام کاربری/رمز عبور.
- پروکسیهای دیتاسنتری: IPهای ثابت، همچنین با احراز هویت.
موارد زیر را برای پروکسی انتخابشده خود یادداشت کنید:
- میزبان (مثلاً
gateway.proxyscrape.com— برای میزبان دقیق داشبورد خود را بررسی کنید) - پورت (مثلاً
8000برای HTTP،1080برای SOCKS5 — دوباره، در داشبورد تأیید کنید) - نام کاربری
- رمز عبور
ProxyScrape معمولاً نقاط پایانی HTTP و SOCKS5 ارائه میدهد. برای این آموزش، با HTTP شروع میکنیم.
مرحله ۳: راهاندازی Puppeteer با یک پروکسی HTTP
یک فایل با نام scrape.js ایجاد کنید و کد زیر را اضافه کنید. جاینگهدارها را با جزئیات واقعی پروکسی خود جایگزین کنید.
const puppeteer = require('puppeteer');
(async () => {
const proxyHost = 'gateway.proxyscrape.com';
const proxyPort = '8000';
const proxyUser = 'your_username';
const proxyPass = 'your_password';
const browser = await puppeteer.launch({
headless: true,
args: [
`--proxy-server=http://${proxyHost}:${proxyPort}`
]
});
const page = await browser.newPage();
// احراز هویت با پروکسی
await page.authenticate({
username: proxyUser,
password: proxyPass
});
// تأیید IP پروکسی
await page.goto('https://httpbin.org/ip', { waitUntil: 'networkidle0' });
const content = await page.content();
console.log(content);
await browser.close();
})();
اسکریپت را اجرا کنید:
node scrape.js
باید بهجای IP واقعی خود، آدرس IP استفادهشده توسط پروکسی را ببینید.
مرحله ۴: چرخش پروکسیها با یک فهرست
پروکسیهای مسکونی ProxyScrape اغلب با استفاده از نامهای کاربری یا شناسههای نشست مختلف از نشستهای چرخشی پشتیبانی میکنند. یک الگوی رایج، چرخش میان فهرستی از نقاط پایانی پروکسی است. در اینجا مثالی آورده شده که بین دو پروکسی میچرخد.
const proxies = [
{ host: 'gateway.proxyscrape.com', port: '8000', user: 'user1', pass: 'pass1' },
{ host: 'gateway.proxyscrape.com', port: '8000', user: 'user2', pass: 'pass2' }
];
(async () => {
for (const proxy of proxies) {
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');
const ip = await page.evaluate(() => document.body.innerText);
console.log(`Proxy IP: ${ip}`);
await browser.close();
}
})();
برای چرخش در مقیاس بزرگ، استفاده از یک مدیر پروکسی یا کتابخانهای مانند proxy-chain را برای مدیریت متمرکز احراز هویت و چرخش در نظر بگیرید.
مرحله ۵: استفاده از پروکسیهای SOCKS5 با Puppeteer (پیشرفته)
Chromium، مرورگر پشت Puppeteer، بهصورت بومی از پروکسیهای SOCKS5 احراز هویتشده پشتیبانی نمیکند. اگر باید از نقاط پایانی SOCKS5 ProxyScrape استفاده کنید، میتوانید یک پروکسی HTTP محلی اجرا کنید که به SOCKS5 فوروارد میکند. یک گزینه استفاده از بسته npm به نام proxy-chain است.
نصبش کنید:
npm install proxy-chain
سپس یک سرور پروکسی محلی ایجاد کنید:
const ProxyChain = require('proxy-chain');
(async () => {
const socksUrl = 'socks5://username:[email protected]:1080';
const localHttpProxy = await ProxyChain.anonymizeProxy(socksUrl);
console.log(`Local HTTP proxy: ${localHttpProxy}`);
// localHttpProxy را بهعنوان --proxy-server در Puppeteer پاس دهید
const browser = await puppeteer.launch({
headless: true,
args: [`--proxy-server=${localHttpProxy}`]
});
const page = await browser.newPage();
await page.goto('https://httpbin.org/ip');
console.log(await page.content());
await browser.close();
})();
این کار یک پل از SOCKS5 دارای احراز هویت به یک پروکسی HTTP محلی بدون احراز هویت که Chromium میتواند از آن استفاده کند ایجاد میکند.
عیبیابی
- ERR_PROXY_CONNECTION_FAILED: میزبان و پورت را بررسی کنید. اگر از احراز هویت مبتنی بر IP استفاده میکنید، مطمئن شوید IP شما در فهرست سفید است. ProxyScrape بهطور پیشفرض از نام کاربری/رمز عبور استفاده میکند، اما داشبورد خود را دوباره بررسی کنید.
- پنجره احراز هویت / خطای ۴۰۷: مطمئن شوید قبل از ناوبری،
page.authenticate()را فراخوانی میکنید. - پاسخهای کند: برای سرعت یک پروکسی دیتاسنتری یا برای مخفیکاری یک پروکسی مسکونی را امتحان کنید. مهلتهای زمانی (timeouts) را در Puppeteer تنظیم کنید.
- SOCKS5 کار نمیکند: به یاد داشته باشید که Chromium مستقیماً از احراز هویت SOCKS5 پشتیبانی نمیکند. از راهحل
proxy-chainدر بالا استفاده کنید.
خلاصه
شما آموختید چگونه پروکسیهای مسکونی و دیتاسنتری ProxyScrape را با Puppeteer در Node.js پیکربندی کنید. ما راهاندازی پروکسی HTTP، احراز هویت، چرخش و یک پل SOCKS5 برای موارد استفاده پیشرفته را پوشش دادیم. برای زیرساخت قابلاعتماد، استخر بیش از ۹۷ میلیون IP و آپتایم پایدار ProxyScrape آن را به گزینهای مطمئن برای پروژههای اسکرپینگ وب تبدیل میکند.