لِمَ نستخدم العملاء في (نودج)؟
(نود جي) هي واحدة من أكثر العروض شعبية لبناء الخردة على شبكة الإنترنت، ومقدمي التهنئة، وأدوات التشغيل الآلي. ولكن إذا كنت ترسل مئات أو الآلاف من الطلبات من عنوان واحد من IP، سوف تسير بسرعة إلى حدود الأسعار، CAPTCHAs، والحظر التام IP. Proxies in Node.js حل هذا من خلال توجيه طلباتك من خلال عناوين مختلفة IP، جعل كل واحد يبدو أن يأتي من مستعمل فريد.
وسواء كنت تخرّب أسعار المنتجات، أو تراقب ترتيب محرك البحث، أو جمع البيانات العامة على نطاق واسع، فإن العملاء هم البنية التحتية الأساسية الأساسية. في هذا الدليلِ، نحن سَنَغطّي كُلّ شيءَ تَحتاجُ لإدْراج العملاء السكنيين في مشاريعِ نودج ProxyHat Node SDK(أكسيوس)، (بوبيتر) و(بلايرايت)
إذا كنت لا تزال تقييم أي نوع محترف يناسب قضية استخدامك، تحقق من مقارنة لدينا مركز بيانات ضد شركات متنقلة.
التركيب والإنشاء
Installing the ProxyHat SDK
أسرع طريقة للبدء هي مع النائب (نود سى كى) وهو يتعامل مع التوثيق والتناوب والربط من الصندوق:
npm install proxyhatستريدون أيضاً عملاء شرطة (هوت) الذين تخططون لاستخدامهم
npm install axios puppeteer playwrightالتوثيق
كُلّ الإتصالات المحترفةِ ProxyHat تَصَدقُ عبر وثائق تفويضِكَ. يمكنك العثور على اسم المستخدم وكلمة السر في لوح الصراخ- تقبل المملكة العربية السعودية خيارات البناء أو متغيرات البيئة:
// Option 1: Pass credentials directly
const ProxyHat = require('proxyhat');
const client = new ProxyHat({
username: 'your_username',
password: 'your_password',
});
// Option 2: Use environment variables
// Set PROXYHAT_USERNAME and PROXYHAT_PASSWORD in your .env
const client = new ProxyHat();بسيطة الطلب مع SDK
The SDK provides a high-level fetch الطريقة التي تتعامل مع التناوب التلقائي:
const ProxyHat = require('proxyhat');
const client = new ProxyHat();
async function main() {
const response = await client.fetch('https://httpbin.org/ip', {
country: 'us',
});
console.log('Status:', response.status);
console.log('Body:', await response.text());
}
main().catch(console.error);كل مكالمة تختار تلقائياً هوية سكنية مختلفة لا حاجة إلى أي شكل يدوي لـ (يورل)
استخدام البروكس مع أكسيوس
Axios is the most popular HTTP client in the Node.js ecosystem. (لإرسال طلبات (أكسيوس من خلال (بروكسي هات يمكنك إما أن تستخدمي العميل (سي دي كي) أو (كونيغور أكسيوس) مباشرة
Method 1: SDK Proxy agent
const ProxyHat = require('proxyhat');
const axios = require('axios');
const client = new ProxyHat();
const agent = client.createAgent({ country: 'us' });
async function scrapeWithAxios() {
const response = await axios.get('https://httpbin.org/ip', {
httpAgent: agent,
httpsAgent: agent,
timeout: 30000,
});
console.log('IP:', response.data.origin);
}
scrapeWithAxios();المنهجية 2: الادعاء المباشر
إذا كنت تفضّل التشكيل اليدوي، إستعملْ الشكلَ الوكيليَ العاديِ مَع https-proxy-agent الطرد:
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');
const proxyUrl = 'http://USERNAME:PASSWORD@gate.proxyhat.com:8080';
const agent = new HttpsProxyAgent(proxyUrl);
async function scrapeWithAxios() {
const response = await axios.get('https://httpbin.org/ip', {
httpsAgent: agent,
timeout: 30000,
});
console.log('IP:', response.data.origin);
}
scrapeWithAxios();Axios Instance with Default Proxy
For repeated use, create a pre-configured Axios instance:
const { HttpsProxyAgent } = require('https-proxy-agent');
const agent = new HttpsProxyAgent('http://USERNAME:PASSWORD@gate.proxyhat.com:8080');
const proxyClient = axios.create({
httpsAgent: agent,
timeout: 30000,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36',
},
});
// All requests now go through the proxy
const res = await proxyClient.get('https://example.com');استخدام المحترفين مع الجري
ويطلق الفرسان الكروم بروزراً لا يطاق، وهو مثالي لخردة مواقع جافاسكريبت الثقيلة. العملاء يتم تشكيلهم على مستوى إطلاق المصفح
const puppeteer = require('puppeteer');
async function scrapeWithPuppeteer() {
const browser = await puppeteer.launch({
args: ['--proxy-server=gate.proxyhat.com:8080'],
headless: 'new',
});
const page = await browser.newPage();
// Authenticate with the proxy
await page.authenticate({
username: 'USERNAME',
password: 'PASSWORD',
});
await page.goto('https://httpbin.org/ip', {
waitUntil: 'networkidle2',
timeout: 60000,
});
const content = await page.evaluate(() => document.body.innerText);
console.log('IP:', content);
await browser.close();
}
scrapeWithPuppeteer();Puppeteer with Geo-Targeting
لاستهداف بلد محدد، إدراج الرمز القطري في اسم مستخدمك. يستخدم (بروكسي هات) الشكل USERNAME-country-XX:
await page.authenticate({
username: 'USERNAME-country-de', // Route through Germany
password: 'PASSWORD',
});فجروا جميع المواقع المتاحة المواقع.
استخدام بروكس مع بلايرايت
(بلايرايت) يدعم (كروميوم) و(فايفوكس) و(ويكيت) وتُبنى التشكيلة البديلة في خيارات الإطلاق، مما يجعلها أبسط:
const { chromium } = require('playwright');
async function scrapeWithPlaywright() {
const browser = await chromium.launch({
proxy: {
server: 'http://gate.proxyhat.com:8080',
username: 'USERNAME',
password: 'PASSWORD',
},
});
const context = await browser.newContext();
const page = await context.newPage();
await page.goto('https://httpbin.org/ip');
const body = await page.textContent('body');
console.log('IP:', body);
await browser.close();
}
scrapeWithPlaywright();بلايرايت مع شركة بير كونتكس
ويتيح بلايرايت لبغايات مختلفة لسياق كل بروزر، وهو أمر مفيد للحسابات المتعددة أو الخردة المتعددة المناطق:
const browser = await chromium.launch();
// US context
const usContext = await browser.newContext({
proxy: {
server: 'http://gate.proxyhat.com:8080',
username: 'USERNAME-country-us',
password: 'PASSWORD',
},
});
// UK context
const ukContext = await browser.newContext({
proxy: {
server: 'http://gate.proxyhat.com:8080',
username: 'USERNAME-country-gb',
password: 'PASSWORD',
},
});
const usPage = await usContext.newPage();
const ukPage = await ukContext.newPage();
await Promise.all([
usPage.goto('https://www.google.com/search?q=proxy+service'),
ukPage.goto('https://www.google.co.uk/search?q=proxy+service'),
]);التناوب ضد الدورات المرنة
يدعم برنامج " ProxyHat " أسلوبين للدورة يخدمان مختلف احتياجات الخردة:
| Feature | التناوب | عصا |
|---|---|---|
| IP per request | البرنامج المتكامل الجديد في كل مرة | نفس البرنامج المخصص للدورة |
| الأفضل | خردة واسعة النطاق | تدفقات العمل المتعددة الخطوات، ودورات قطع الأشجار |
| مدة الدورة | N/A | حتى 30 دقيقة |
| الشكل المستخدم | USERNAME | USERNAME-session-XXXX |
الدورة المريضة
const { HttpsProxyAgent } = require('https-proxy-agent');
const axios = require('axios');
// Generate a random session ID
const sessionId = 'session_' + Math.random().toString(36).slice(2, 10);
const agent = new HttpsProxyAgent(
`http://USERNAME-session-${sessionId}:PASSWORD@gate.proxyhat.com:8080`
);
// All requests with this agent use the same IP
const client = axios.create({ httpsAgent: agent, timeout: 30000 });
const res1 = await client.get('https://httpbin.org/ip');
const res2 = await client.get('https://httpbin.org/ip');
console.log(res1.data.origin === res2.data.origin); // trueالطلبات ذات الأهداف الجغرافية
تحديد الأهداف الجغرافية أمر حاسم SERP trackingرصد الأسعار على الصعيد المحلي والتحقق من المحتوى الإقليمي. دعم (بروكسي هات) على المستوى القطري وعلى مستوى المدينة من خلال سلسلة أسماء المستخدمين
// Country targeting
const countryAgent = new HttpsProxyAgent(
'http://USERNAME-country-jp:PASSWORD@gate.proxyhat.com:8080'
);
// City targeting
const cityAgent = new HttpsProxyAgent(
'http://USERNAME-country-us-city-newyork:PASSWORD@gate.proxyhat.com:8080'
);تحقق من قائمتنا الكاملة المواقع المتاحة للبلدان والمدن المدعومة.
التعامل مع الأخطاء ومعالجتها
أخطاء الشبكات لا مفر منها عند العمل مع العملاء على نطاق واسع. ولا بد من وجود استراتيجية قوية لإعادة المعالجة بالنسبة لخصائص الإنتاج:
const axios = require('axios');
const { HttpsProxyAgent } = require('https-proxy-agent');
async function fetchWithRetry(url, options = {}) {
const maxRetries = options.maxRetries || 3;
const baseDelay = options.baseDelay || 1000;
for (let attempt = 1; attempt <= maxRetries; attempt++) {
try {
const agent = new HttpsProxyAgent(
'http://USERNAME:PASSWORD@gate.proxyhat.com:8080'
);
const response = await axios.get(url, {
httpsAgent: agent,
timeout: options.timeout || 30000,
});
if (response.status === 200) return response;
throw new Error(`HTTP ${response.status}`);
} catch (error) {
console.warn(`Attempt ${attempt}/${maxRetries} failed: ${error.message}`);
if (attempt === maxRetries) throw error;
// Exponential backoff: 1s, 2s, 4s...
const delay = baseDelay * Math.pow(2, attempt - 1);
await new Promise(r => setTimeout(r, delay));
}
}
}
// Usage
const response = await fetchWithRetry('https://example.com', {
maxRetries: 3,
timeout: 20000,
});التآمر مع مراقبة العملات
إرسال جميع الطلبات في الحال Promise.all يُمْكِنُ أَنْ يَغْفرَ على كلا آلةِكَ وخادمِ الهدفِ. استخدام الحد الأقصى للاتساق لمراقبة عدد الاتصالات الموازية:
async function asyncPool(concurrency, items, iteratorFn) {
const results = [];
const executing = new Set();
for (const [index, item] of items.entries()) {
const promise = Promise.resolve().then(() => iteratorFn(item, index));
results.push(promise);
executing.add(promise);
const cleanup = () => executing.delete(promise);
promise.then(cleanup, cleanup);
if (executing.size >= concurrency) {
await Promise.race(executing);
}
}
return Promise.all(results);
}
// Scrape 100 URLs, 10 at a time
const urls = Array.from({ length: 100 }, (_, i) =>
`https://example.com/page/${i + 1}`
);
const results = await asyncPool(10, urls, async (url) => {
return fetchWithRetry(url, { maxRetries: 2, timeout: 15000 });
});على نطاق واسع مشاريع الخردة على شبكة الإنترنتوالتوفيق بين 5 و 20 يوفر توازنا جيدا بين السرعة والموثوقية. إقرأ دليلنا على أفضل عملاء لخردة الإنترنت في عام 2026 للمزيد من النصائح الهيكلية
الإنتاج
إدارة العلاقة
- Reuse Axios instances and proxy agents instead of creating new ones per request. هذا يجنّب الإرهاق
- المجموعة
keepAlive: trueعلى العميل الخاص بك HTTP للتواصل المستمر. - اغلقوا محلات الجرو/البرايت بعد استخدامهم للذاكرة المجانية
الذاكرة والتوقيت
- للطيور، استخدام
page.setRequestInterception(true)لحجب الصور، CSS، واللافتات عندما كنت بحاجة فقط محتوى HTML. وهذا يقلل كثيرا من استخدام النطاق الترددي والذاكرة. - دائماً ما يُحدد مواعيد واضحة لكل طلب الوقت المفقود هو السبب الأول لشنق الخردة.
- راقب (نودج) ذاكرة
process.memoryUsage()في الخردة البعيدة المدى
طلب اعتراض للضغط السريع
const page = await browser.newPage();
await page.setRequestInterception(true);
page.on('request', (req) => {
const blocked = ['image', 'stylesheet', 'font', 'media'];
if (blocked.includes(req.resourceType())) {
req.abort();
} else {
req.continue();
}
});
await page.goto('https://example.com');التغيرات البيئية
لا توجد أوراق إعتماد استخدام .env وحملها dotenv:
require('dotenv').config();
const proxyUrl = `http://${process.env.PROXY_USER}:${process.env.PROXY_PASS}@gate.proxyhat.com:8080`;مستعد للبدء؟ تحقق خططنا للتسعير للعثور على الكمية المناسبة من الضمادات المحترفة في مشروعك
المداخل الرئيسية
- The ProxyHat Node SDK هي أسرع طريقة لإضافة دعم محترف Install
npm install proxyhatوابدأي بإحضار ثلاثة خطوط من الشفرة- Axios يعمل مع محترفين عبر
https-proxy-agentأو عميل (إس دي كي) المبني Create a reusable Axios instance for efficiency.- الجرم يقبل العملاء كحجة إطلاق اتصل
page.authenticate()لتمرير وثائق التفويض- بلاي رايت ولها دعم مباشر من جانب السكان الأصليين في إطلاقها وخيارات السياق، بما في ذلك البدائل المحيطة بالقارات من أجل الخردة المتعددة المناطق.
- الاستخدام الجلسات الملصقة لتدفقات العمل المتعددة الخطوات IPs التناوب لجمع البيانات على نطاق واسع.
- دائما منطق التراجع و مراقبة التطابق في خزائن الإنتاج
- حجب موارد لا داعي لها في المستنقعات الرأسية لتقليل عرض النطاق الترددي وتحسين السرعة.






