---
title: "وب اسکرپینگ با n8n: تنظیم HTTP Request و پروکسی"
description: "در n8n پروکسی از گزینه‌های نود HTTP Request یا با متغیرهای محیطی تعریف می‌شود. راه‌اندازی، احراز هویت و خطاهای رایج را گام‌به‌گام توضیح می‌دهیم."
url: https://proxynet.io/fa/blog/n8n-proxy
date: 2026-09-19
author: "Acar Diveroli"
category: "یکپارچه‌سازی, آموزش‌ها"
lang: fa
---

# وب اسکرپینگ با n8n: تنظیم HTTP Request و پروکسی

گردش کاری که در n8n ساخته‌اید هر صبح ده صفحه محصول را باز می‌کند و قیمت‌ها را در یک جدول می‌نویسد. هفته اول مشکلی پیش نمی‌آید. بعد فهرست به دویست محصول می‌رسد، گردش کار از تنها آدرس IP سرور شما پشت‌سرهم درخواست می‌فرستد و نود HTTP Request قرمز می‌شود: اول `429` و بعد `403`. یا وضعیت برعکس است: API مقصد قیمت درست را فقط به درخواست‌هایی نشان می‌دهد که از یک کشور مشخص می‌آیند، ولی سرور n8n شما در کشور دیگری است. در هر دو حالت تنظیم موردنیاز یکی است: عبور دادن درخواست‌های خروجی n8n از یک پروکسی.

در این نوشته دو جایی را که پروکسی در n8n تعریف می‌شود توضیح می‌دهیم: گزینه Proxy در نود HTTP Request و متغیرهای محیطی در نصب self-hosted. به‌ترتیب بررسی می‌کنیم اطلاعات ورود چگونه در آدرس نوشته می‌شود، کدام تنظیم بر دیگری مقدم است، n8n Cloud با سرور خودتان چه تفاوتی دارد و خطاهای رایج کدام‌اند. موضوع پروکسی معکوس (reverse proxy) را هم جدا می‌کنیم، چون بخشی از کسانی که «n8n proxy» را جست‌وجو می‌کنند در واقع دنبال آن هستند. گردش کار نمونه، قیمت را در سایتی رصد می‌کند که برای تمرین منتشر شده است.

> **نکته: پاسخ کوتاه**
>
> در نود HTTP Request کافی است در **Options → Add option → Proxy** آدرسی به شکل `http://user:pass@pr.proxynet.io:8000` بنویسید؛ این تنظیم فقط روی همان نود اثر دارد و در n8n Cloud هم کار می‌کند. در n8n که روی سرور خودتان اجرا می‌شود، متغیرهای محیطی `HTTP_PROXY`، `HTTPS_PROXY` و `NO_PROXY` برای همه نودها به کار می‌روند. اگر هر دو تعریف شده باشند، تنظیم نود بر متغیر محیطی مقدم است. `N8N_PROXY_HOPS` موضوعی کاملاً جداست: وقتی لازم می‌شود که خود n8n را پشت یک پروکسی معکوس مانند nginx قرار می‌دهید.

## n8n چیست و در اسکرپینگ چه جایگاهی دارد؟

n8n یک ابزار خودکارسازی است که در آن با وصل کردن جعبه‌ها (نود، به انگلیسی node) با خط، گردش کار می‌سازید. یک نود آغازگر گردش کار را شروع می‌کند (زمان‌بند، webhook، فرم) و نودهای بعدی داده را می‌گیرند، تبدیل می‌کنند و جایی می‌نویسند. می‌توانید ابزار را روی ابر خود n8n به کار ببرید (n8n Cloud) یا روی سرور خودتان نصب کنید (self-hosted). این تفاوت در موضوع پروکسی تعیین‌کننده است.

در اسکرپینگ دو نود کار اصلی را انجام می‌دهند. نود **HTTP Request** به یک آدرس درخواست می‌فرستد و پاسخ را می‌گیرد؛ نود **HTML** با انتخابگرهای CSS فیلدهای موردنظر شما را از درون پاسخ بیرون می‌کشد. این دو نود در صفحه‌هایی که محتوایشان آماده از سرور می‌آید و در APIهایی که JSON برمی‌گردانند خوب کار می‌کنند. در صفحه‌هایی که محتوا در مرورگر با JavaScript ساخته می‌شود، HTTP Request فقط یک اسکلت خالی می‌بیند؛ این تفاوت را در نوشته [صفحه‌های ایستا و پویا](/fa/blog/static-vs-dynamic-pages) توضیح داده‌ایم. برای نوشتن انتخابگر، نوشته [انتخابگر CSS یا XPath](/fa/blog/css-selector-vs-xpath) را ببینید.

قوت n8n در کاری است که بعد از گرفتن داده انجام می‌شود: نوشتن در جدول، مقایسه با مقدار قبلی و فرستادن اعلان هنگام تغییر. برای خزش چند هزار صفحه ابزار مناسبی نیست؛ در آن مقیاس چارچوبی مانند [Scrapy](/fa/blog/scrapy-proxy) یا یک زیرساخت [استخراج داده](/fa/data-scraping) لازم است. اینکه کدام روش چه زمانی کافی است را در نوشته [استخراج داده از وب‌سایت](/fa/blog/extract-data-from-website) مقایسه کرده‌ایم.

## «n8n proxy» دو موضوع جداست: دنبال کدام هستید؟

در پیشنهادهای جست‌وجو کنار عبارت «n8n proxy» واژه‌های `proxy hops`، `nginx` و `reverse` هم می‌آیند. این‌ها به تنظیمی که موضوع این نوشته است ربطی ندارند:

| | پروکسی مستقیم (forward proxy) | پروکسی معکوس (reverse proxy) |
|---|---|---|
| جهت ترافیک | درخواست‌هایی که از n8n بیرون می‌روند | درخواست‌هایی که از بیرون به n8n می‌رسند |
| چه کاری می‌کند | آدرس IP و کشوری را که درخواست از آن خارج می‌شود تعیین می‌کند | n8n را با نام دامنه و HTTPS در دسترس قرار می‌دهد |
| ابزار معمول | نقطه اتصال ارائه‌دهنده پروکسی | nginx، Caddy، Traefik |
| تنظیم در n8n | HTTP Request → Proxy، `HTTP_PROXY`، `HTTPS_PROXY` | `N8N_PROXY_HOPS`، متغیر آدرس webhook |
| نشانه | `407`، `ECONNREFUSED`، `403` / `429` از سایت مقصد | نمایش آدرس webhook به شکل `localhost`، IP نادرست کاربر |

اگر n8n را پشت nginx اجرا می‌کنید، صفحه‌ای از مستندات n8n که پیکربندی آدرس webhook پشت پروکسی معکوس را توضیح می‌دهد دو چیز می‌خواهد: مقدار `N8N_PROXY_HOPS` را `1` بگذارید (پیش‌فرض آن `0` است و می‌گوید چند پروکسی معکوس جلوی n8n قرار دارد) و آخرین پروکسی زنجیره سرآیندهای `X-Forwarded-For`، `X-Forwarded-Host` و `X-Forwarded-Proto` را عبور دهد. این تنظیم‌ها هیچ اثری روی درخواست‌های خروجی شما ندارند. تفاوت این دو مفهوم و نمونه nginx را در نوشته [فوروارد پروکسی و ریورس پروکسی](/fa/blog/forward-vs-reverse-proxy) می‌یابید. ادامه این نوشته درباره پروکسی مستقیم است.

## پروکسی در نود HTTP Request چگونه تعریف می‌شود؟

این تنظیم در میان فیلدهای اصلی نود نیست و در بخش Options در پایین‌ترین قسمت قرار دارد؛ به همین دلیل در نگاه اول دیده نمی‌شود.

1. در گردش کار خود نود HTTP Request را باز کنید و فیلدهای **Method** و **URL** را پر کنید.
2. در بخش **Options** در پایین پارامترها روی **Add option** بزنید.
3. از فهرست، گزینه **Proxy** را اضافه کنید.
4. در فیلدی که باز می‌شود آدرس پروکسی را همراه با طرح (scheme) بنویسید: `http://user:pass@pr.proxynet.io:8000`
5. نود را با **Execute step** به‌تنها اجرا کنید و خروجی را بررسی کنید.

متن راهنمای این فیلد `e.g. http://myproxy:3128` است؛ یعنی n8n در اینجا یک URL کامل می‌خواهد. در نسخه فعلی که برای این نوشته به‌صورت محلی نصب کردیم، آدرس بدون طرح (`user:pass@pr.proxynet.io:8000`) خطایی نداد و درخواست بدون گذر از پروکسی مستقیم خارج شد. با آدرسی که با `socks5://` شروع می‌شد هم نتیجه همین بود: این فیلد برای پروکسی HTTP است. [مستندات نود HTTP Request](https://docs.n8n.io/integrations/builtin/core-nodes/n8n-nodes-base.httprequest/) به‌روشنی می‌گوید این گزینه بر تنظیم سراسری انجام‌شده با `HTTP_PROXY`، `HTTPS_PROXY` و `ALL_PROXY` مقدم است. پس حتی وقتی روی سرور شما یک پروکسی سازمانی تعریف شده است، می‌توانید یک نود را از نقطه اتصال دیگری بیرون بفرستید.

### نام کاربری و رمز عبور کجا نوشته می‌شود؟

نود برای پروکسی فیلد جداگانه نام کاربری یا رمز عبور ندارد. اطلاعات ورود درون آدرس و به شکل `username:password@` نوشته می‌شود. بخش **Authentication** نود به سایت مقصد می‌رود و نه به پروکسی؛ نوشتن رمز پروکسی در آنجا خطای `407` را برطرف نمی‌کند.

اگر رمز شما نویسه‌هایی مانند `@`، `:`، `/` یا `#` دارد، آدرس از جای نادرست بریده می‌شود. این نویسه‌ها را با کدگذاری درصدی بنویسید: `%40` به‌جای `@` و `%3A` به‌جای `:`. در آزمون محلی ما رمز `pa@ss:1` وقتی به شکل `pa%40ss%3A1` نوشته شد در پروکسی درست خوانده شد. جزئیات دو روش احراز هویت در نوشته [احراز هویت پروکسی: نام کاربری و رمز یا لیست سفید IP](/fa/blog/proxy-authentication-methods) آمده است.

یک نکته امنیتی: فیلد Proxy متن ساده است و وارد مخزن رمزنگاری‌شده اطلاعات ورود n8n (بخش Credentials) نمی‌شود. وقتی گردش کار را به‌صورت JSON خروجی می‌گیرید و به اشتراک می‌گذارید، رمز پروکسی هم درون فایل می‌رود؛ پیش از اشتراک‌گذاری فیلد را پاک کنید.

### آیا لیست سفید IP در n8n قابل استفاده است؟

برای n8n روی سرور خودتان که آدرس IP ثابت دارد، بله: IP سرور را به لیست سفید در پنل پروکسی اضافه می‌کنید و آدرس بدون رمز به شکل `http://pr.proxynet.io:8000` نوشته می‌شود. در n8n Cloud این روش قابل‌اعتماد نیست. n8n در صفحه آدرس‌های IP سرویس Cloud در مستندات خود می‌گوید IPهای خروجی ثابت نیستند و ممکن است بدون اطلاع قبلی تغییر کنند. آدرسی که امروز به لیست سفید اضافه می‌کنید ممکن است فردا نامعتبر شود. در Cloud با نام کاربری و رمز عبور وصل شوید.

## در نصب self-hosted متغیرهای محیطی چگونه به کار می‌روند؟

به‌جای نوشتن پروکسی در تک‌تک نودها می‌توانید برای کل فرایند n8n یک پروکسی تعریف کنید. صفحه [متغیرهای محیطی استقرار](https://docs.n8n.io/deploy/host-n8n/configure-n8n/basic-configuration/use-environment-variables/deployment) در مستندات n8n چهار متغیر را برمی‌شمارد:

| متغیر | کارکرد |
|---|---|
| `HTTP_PROXY` | ترافیک HTTP رمزنگاری‌نشده نودها از این آدرس می‌گذرد |
| `HTTPS_PROXY` | ترافیک دارای TLS (یعنی HTTPS) نودها از این آدرس می‌گذرد |
| `ALL_PROXY` | اگر دو متغیر اختصاصی‌تر تعریف نشده باشند برای هر دو به کار می‌رود |
| `NO_PROXY` | فهرست میزبان‌هایی که با ویرگول جدا شده‌اند و بدون پروکسی مستقیم به آن‌ها وصل می‌شود |

در نصبی که با Docker Compose اجرا می‌شود، متغیرها به بخش `environment` سرویس اضافه می‌شوند:

```yaml
services:
  n8n:
    image: docker.n8n.io/n8nio/n8n
    environment:
      - HTTP_PROXY=http://user:pass@pr.proxynet.io:8000
      - HTTPS_PROXY=http://user:pass@pr.proxynet.io:8000
      - NO_PROXY=localhost,127.0.0.1,postgres,redis
```

اینکه مقدار `HTTPS_PROXY` با `http://` شروع می‌شود اشتباه تایپی نیست: نام متغیر طرح پروکسی را نمی‌گوید و فقط مشخص می‌کند کدام ترافیک به آنجا برود. شیوه تعریف این متغیرها در سیستم‌عامل را در نوشته [استفاده از پروکسی در wget](/fa/blog/wget-proxy) توضیح داده‌ایم؛ در اینجا فقط به سه دام ویژه n8n می‌پردازیم.

**متغیر با حروف کوچک بر متغیر با حروف بزرگ مقدم است.** همان صفحه مستندات می‌گوید در بسته `proxy-from-env` که n8n به کار می‌برد، نام‌های با حروف کوچک مانند `http_proxy` وقتی هر دو تعریف شده باشند بر نام‌های با حروف بزرگ مقدم‌اند. اگر فرد دیگری یک متغیر با حروف کوچک در ایمیج Docker یا سرور شما گذاشته باشد، مقدار `HTTP_PROXY` شما بی‌صدا نادیده گرفته می‌شود. درون کانتینر با `env | grep -i proxy` هر دو را بررسی کنید.

**فهرست `NO_PROXY` را خالی نگذارید.** اگر n8n با پایگاه داده همان شبکه، با Redis یا با یک API داخلی هم از طریق HTTP ارتباط دارد، این درخواست‌ها هم به پروکسی می‌روند و به احتمال زیاد همان‌جا گیر می‌کنند. نام میزبان‌های داخلی و `localhost` را به فهرست اضافه کنید.

**همه نودها از این متغیرها پیروی نمی‌کنند.** نودهایی که از ابزار کمکی HTTP خود n8n استفاده می‌کنند این تنظیم را می‌بینند. درباره برخی نودها که کتابخانه کلاینت خودشان را می‌آورند گزارش‌هایی ثبت شده است که نشان می‌دهد متغیر در نظر گرفته نمی‌شود (برای نمونه [گزارش شماره 19652](https://github.com/n8n-io/n8n/issues/19652) در مخزن n8n در سال 2025 برای نود RSS Read باز شد و بعدتر بسته شد). پیش از اینکه یک نود حساس را وارد کار واقعی کنید، آن را با گام راستی‌آزمایی پایین‌تر بیازمایید.

متغیرها هنگام شروع فرایند n8n خوانده می‌شوند؛ پس از تغییر باید کانتینر یا سرویس را دوباره راه‌اندازی کنید.

## n8n Cloud و self-hosted: کدام راه در کجا باز است؟

| | n8n Cloud | Self-hosted (Docker، npm) |
|---|---|---|
| گزینه HTTP Request → Proxy | وجود دارد | وجود دارد |
| `HTTP_PROXY` / `HTTPS_PROXY` | قابل تعریف نیست، چون محیط سرور در اختیار شما نیست | تعریف می‌شود و روی کل فرایند اثر دارد |
| پروکسی با لیست سفید IP | توصیه نمی‌شود: IPهای خروجی بدون اطلاع قبلی تغییر می‌کنند | روی سروری با IP ثابت کار می‌کند |
| IP خروجی بدون پروکسی | آدرس‌های متغیر در زیرساخت ابری n8n | آدرس خود سرور شما |

اگر از Cloud استفاده می‌کنید تنها راه شما گزینه نود است. در نصب self-hosted هر دو راه باز است؛ می‌توانید متغیر محیطی را «خروجی پیش‌فرض» و گزینه نود را «این درخواست از جای دیگری خارج شود» در نظر بگیرید.

## گردش کار نمونه: رصد قیمت یک محصول

نمونه را روی `books.toscrape.com` می‌سازیم که برای تمرین اسکرپینگ منتشر شده است. در کار خودتان اول ببینید سایت مقصد API رسمی یا پنل فروشنده دارد یا نه؛ اگر دارد، به‌جای تجزیه HTML از همان استفاده کنید. اگر ندارد، فایل `robots.txt` سایت و شرایط استفاده آن را بخوانید. شیوه خواندن قواعد `robots.txt` در نوشته [فایل robots.txt چیست](/fa/blog/robots-txt) آمده است.

گردش کار از شش نود تشکیل می‌شود:

1. **Schedule Trigger:** گردش کار را روزی یک بار شروع می‌کند. در رصد قیمت به‌ندرت به بررسی دقیقه‌ای نیاز است.
2. **فهرست محصولات:** آدرس‌ها را از یک جدول Google Sheets یا از نود Edit Fields بگیرید. هر سطر یک فیلد `url` دارد.
3. **Loop Over Items:** فهرست را یکی‌یکی پردازش می‌کند. مقدار Batch Size را `1` بگذارید.
4. **HTTP Request:** در فیلد `URL` عبارت `{{ $json.url }}` را بنویسید، زیر Options گزینه Proxy را تعریف کنید و در گزینه Response قالب را متن بگذارید.
5. **HTML:** عملیات **Extract HTML Content** را انتخاب کنید و فیلدهای موردنظر را با انتخابگرهای CSS تعریف کنید.
6. **Wait:** چند ثانیه صبر می‌کند و به ابتدای حلقه برمی‌گردد.

وقتی حلقه تمام شد، داده را در یک جدول می‌نویسید، در یک نود **If** با قیمت روز قبل مقایسه می‌کنید و اگر تفاوتی بود اعلان می‌فرستید.

نود HTTP Request در JSON خروجی گردش کار به این شکل است:

```json
{
  "parameters": {
    "url": "={{ $json.url }}",
    "options": {
      "proxy": "http://user:pass@pr.proxynet.io:8000",
      "timeout": 20000,
      "response": {
        "response": { "fullResponse": true, "responseFormat": "text" }
      }
    }
  },
  "name": "HTTP Request",
  "type": "n8n-nodes-base.httpRequest",
  "typeVersion": 4.2
}
```

در نود HTML برای این سایت سه سطر کافی است:

| Key | CSS Selector | Return Value |
|---|---|---|
| `title` | `h1` | Text |
| `price` | `p.price_color` | Text |
| `stock` | `p.availability` | Text |

زیر Options گزینه‌های **Trim Values** و **Clean Up Text** را روشن کنید؛ به این ترتیب شکست خط‌ها و فاصله‌های اضافی سطر موجودی پاک می‌شوند. خروجی متنی مانند `£51.77` است؛ برای تبدیل آن به عدد باید در نود بعدی نماد پول را بردارید و جداکننده اعشار را اصلاح کنید.

ساختار کامل‌تر با تطبیق محصول، تاریخچه قیمت و هشدار آستانه را در نوشته [رصد قیمت رقبا در فروشگاه اینترنتی](/fa/blog/competitor-price-tracking) و بخش محصولی کار را در صفحه [رصد قیمت](/fa/price-monitoring) توضیح داده‌ایم.

## محدودیت نرخ و تلاش دوباره در n8n چگونه راه‌اندازی می‌شود؟

وقتی n8n یک فهرست می‌گیرد، اگر خلاف آن را نگویید، درخواست همه موارد را پشت‌سرهم و بدون مکث می‌فرستد. استفاده از پروکسی این رفتار را ملایم نمی‌کند؛ فقط آدرسی را که درخواست‌ها از آن خارج می‌شوند عوض می‌کند. باری را که سایت مقصد می‌بیند باید خودتان محدود کنید. صفحه «Handle rate limits» در مستندات n8n سه راه داخلی نشان می‌دهد:

- **Batching (در HTTP Request → Options):** با `Items per Batch` تعیین می‌کنید هر بار چند درخواست برود و با `Batch Interval (ms)` مکث میان دسته‌ها را مشخص می‌کنید. کوتاه‌ترین راه است و به کد نیاز ندارد.
- **Loop Over Items + Wait:** همان ساختاری که در نمونه بالا به کار بردیم. مکث پس از هر درخواست را آشکارا می‌بینید و می‌توانید نودهای دیگری در میان بگذارید.
- **Retry On Fail (در زبانه Settings نود):** درخواست ناموفق را دوباره امتحان می‌کند؛ با `Wait Between Tries (ms)` فاصله میان تلاش‌ها را می‌دهید.

روشن کردن Retry On Fail برای هر خطایی درست نیست. `429` و `503` با صبر کردن برطرف می‌شوند؛ `403` و `407` برطرف نمی‌شوند و پنج بار فرستادن همان درخواست فقط ترافیک بی‌فایده می‌سازد. اینکه با کدام کد دوباره تلاش شود و با کدام توقف شود را در جدول نوشته [کدهای وضعیت HTTP در وب اسکرپینگ](/fa/blog/http-status-codes-web-scraping) گرد آورده‌ایم؛ منطق محدودیت نرخ هم در نوشته [⁦429 Too Many Requests⁩](/fa/blog/http-429-too-many-requests) آمده است. اگر می‌خواهید بر اساس کد وضعیت شاخه بزنید، در گزینه Response نود HTTP Request دو گزینه **Include Response Headers and Status** و **Never Error** را روشن کنید و سپس در یک نود If فیلد `statusCode` را بررسی کنید.

## آیا برای چرخش IP نود جداگانه یا کد لازم است؟

برخی الگوهای اسکرپینگ n8n تکه‌های JavaScript دارند که در نود Code فهرستی از پروکسی‌ها نگه می‌دارند و در هر درخواست مورد بعدی را انتخاب می‌کنند. اگر فهرستی از آدرس‌های IP تکی در دست دارید، این کار لازم است. با یک نقطه اتصال چرخشی لازم نیست: به یک آدرس واحد مانند `pr.proxynet.io:8000` وصل می‌شوید و ارائه‌دهنده در هر اتصال تازه IP خروجی را عوض می‌کند. در سمت n8n آدرسی که در فیلد Proxy نوشته‌اید هیچ‌وقت تغییر نمی‌کند. جزئیات سازوکار در نوشته [چرخش IP چیست و چگونه کار می‌کند؟](/fa/blog/ip-rotation-explained) و بخش محصولی آن در صفحه [پروکسی چرخشی](https://proxynet.io/fa/rotating-proxy) آمده است.

در مقابل، کارهایی هم هست که IP در آن‌ها هرگز نباید عوض شود. اگر API یک همکار تجاری فقط درخواست آدرس‌های ثبت‌شده در لیست سفید را می‌پذیرد و شما از n8n Cloud استفاده می‌کنید، خارج شدن از یک آدرس ثابت مانند [پروکسی ISP](https://proxynet.io/fa/static-isp-residential-proxy) به‌جای IPهای متغیر Cloud مشکل را حل می‌کند. این سناریو را در نوشته [IP ثابت برای دسترسی به API](/fa/blog/static-ip-for-api-access) بررسی کرده‌ایم.

## پروکسی در نود AI Agent چگونه به کار می‌رود؟

می‌توانید HTTP Request را به‌عنوان ابزار (tool) به نود AI Agent در n8n وصل کنید؛ مدل هر وقت لازم باشد این ابزار را فرامی‌خواند و یک صفحه یا API را می‌خواند. نود HTTP Request که به‌عنوان ابزار وصل شده همان بخش Options را دارد، پس گزینه Proxy در اینجا هم به همان شکل کار می‌کند. مستندات برای این کاربرد یک گزینه دیگر هم اضافه می‌کند: **Optimize Response** پیش از دادن پاسخ به مدل، فیلدهای JSON را پالایش می‌کند یا از HTML فقط متن را بیرون می‌کشد و شمار توکن‌های مصرفی را پایین می‌آورد.

در ساختار عامل به دو نکته توجه کنید. آدرس‌هایی را که عامل می‌تواند به آن‌ها برود در تعریف ابزار محدود کنید: به‌جای اینکه URL را کاملاً به مدل بسپارید، یک دامنه ثابت و یک پارامتر مسیر تعریف کنید که مدل پر کند. درخواست‌هایی که به ارائه‌دهنده مدل زبانی می‌روند از HTTP Request نمی‌گذرند؛ برای قرار دادن آن‌ها پشت پروکسی در نصب self-hosted به متغیرهای محیطی نیاز است و باید جداگانه بیازمایید که نود مدل از متغیر پیروی می‌کند. شیوه دسترسی عامل‌ها به وب را در نوشته‌های [عامل‌های هوش مصنوعی چگونه کار می‌کنند؟](/fa/blog/how-ai-agents-work) و [دسترسی امن LLM به وب](/fa/blog/llm-safe-web-access) توضیح داده‌ایم. برای صفحه‌هایی که مرورگر واقعی می‌خواهند نوشته [Playwright MCP](/fa/blog/playwright-mcp) را ببینید.

## چگونه مطمئن شویم پروکسی کار می‌کند؟

چون آدرسی که نادرست نوشته شده ممکن است بدون خطا نادیده گرفته شود، تنظیم را حتماً بیازمایید:

1. در یک گردش کار خالی دو نود HTTP Request بگذارید. آدرس هر دو سرویسی باشد که IP مبدأ درخواست را برمی‌گرداند (برای نمونه `https://api.ipify.org?format=json`).
2. در نود اول گزینه Proxy را خالی بگذارید و در نود دوم آن را پر کنید.
3. هر دو را اجرا کنید. نود اول باید IP سرور n8n شما (یا Cloud) را نشان دهد و نود دوم IP خروجی پروکسی را. اگر دو آدرس یکی باشند، پروکسی فعال نیست.
4. اگر از متغیر محیطی استفاده می‌کنید، همین آزمون را با نودی انجام دهید که فیلد Proxy آن خالی است: اگر IP عوض شده باشد، متغیر خوانده می‌شود.

جزئیات گام‌ها در نوشته [چگونه پروکسی را آزمایش کنیم](/fa/blog/how-to-test-a-proxy) آمده است.

## خطاهای رایج و معنای آن‌ها

| خطا | از کجا می‌آید | علت احتمالی | چه باید کرد |
|---|---|---|---|
| `ECONNREFUSED` | سرور n8n | پورت پروکسی نادرست است یا دیوار آتش خروجی را بسته است | آدرس را دوباره از پنل کپی کنید و اجازه خروج به آن پورت را بررسی کنید |
| `407 Proxy Authentication Required` | پروکسی | رمز نادرست است، نویسه ویژه کدگذاری نشده یا IP در لیست سفید نیست | اطلاعات ورود را درون آدرس و با کدگذاری درصدی بنویسید |
| `400 Bad Request` (فقط در مقصدهای HTTPS) | پروکسی | کلاینت به‌جای باز کردن تونل، درخواست را مستقیم به پروکسی می‌فرستد | n8n را به‌روز کنید؛ توضیح پایین را ببینید |
| `ETIMEDOUT` / `ECONNRESET` | شبکه | پروکسی در دسترس نیست یا مقصد بسیار کند است | مقدار Options → Timeout را بالا ببرید و موقعیت خروجی نزدیک‌تری انتخاب کنید |
| `ENOTFOUND` | DNS | نام میزبان پروکسی نادرست نوشته شده است | نام را از پنل کپی کنید و دوباره بنویسید |
| `403` / `429` از مقصد | سایت مقصد | پروکسی کار می‌کند؛ مشکل از سرعت یا نوع IP است | با Batching و Wait سرعت را کم کنید و علت را تشخیص دهید |

سطر `400` پیشینه‌ای ویژه n8n دارد. نود HTTP Request در پس‌زمینه از کتابخانه Axios استفاده می‌کند و پشتیبانی داخلی Axios از پروکسی به این شناخته می‌شود که در مقصدهای HTTPS به‌جای باز کردن [تونل `CONNECT`](https://developer.mozilla.org/en-US/docs/Web/HTTP/Reference/Methods/CONNECT) درخواست را مستقیم به پروکسی می‌فرستد. [گزارش شماره 9169](https://github.com/n8n-io/n8n/issues/9169) در مخزن n8n ثبت کرده است که این رفتار در نود به خطای `400` می‌انجامید. این گزارش مربوط به سال 2024 است. در نسخه فعلی که آزمودیم، نود برای مقصد HTTPS در پروکسی تونل `CONNECT` باز کرد و صفحه را بدون مشکل گرفت. اگر در نسخه‌ای قدیمی از n8n آدرس‌های HTTP از پروکسی می‌گذرند ولی آدرس‌های HTTPS خطای `400` می‌دهند، گام اول به‌روزرسانی است.

اگر در مرورگر هشدار پاسخ ندادن سرور پروکسی را می‌بینید، مشکل به n8n ربطی ندارد؛ نوشته [سرور پروکسی پاسخ نمی‌دهد](/fa/blog/proxy-server-not-responding) را ببینید.

## موارد کاربرد

- **رصد قیمت و موجودی:** گردش کارهایی که روزی یک بار اجرا می‌شوند و هنگام تغییر اعلان می‌فرستند. ساختار همان نمونه بالاست؛ بخش محصولی آن در صفحه [رصد قیمت](/fa/price-monitoring) آمده است.
- **بررسی محتوایی که بر اساس موقعیت تغییر می‌کند:** اجرای همان نود با پروکسی‌هایی که از کشورهای مختلف خارج می‌شوند تا ببینید همان صفحه از هر کشور چگونه دیده می‌شود. برای پوشش گسترده کشورها [پروکسی مسکونی](https://proxynet.io/fa/residential-proxy) به کار می‌رود.
- **گردآوری محتوا در مقیاس کوچک:** تیتر خبرها، شمار آگهی‌ها و کاتالوگ‌های عمومی. وقتی مقیاس بزرگ شد، رفتن به سراغ راهکار [خزنده وب](/fa/web-crawler) درست‌تر است.

## اشتباه‌های رایج

- **نوشتن رمز پروکسی در بخش Authentication.** آن بخش به سایت مقصد می‌رود. اطلاعات ورود پروکسی درون آدرس است.
- **ننوشتن طرح.** به‌جای `pr.proxynet.io:8000` بنویسید `http://pr.proxynet.io:8000`؛ آدرس بدون طرح ممکن است بدون خطا نادیده گرفته شود.
- **فراموش کردن محدودیت نرخ پس از افزودن پروکسی.** فهرستی با صد مورد، اگر Batching یا Wait نباشد، صد درخواست را هم‌زمان می‌فرستد.
- **خودکارسازی صفحه‌هایی که ورود می‌خواهند یا داده شخصی دارند.** پروکسی گردش کاری را که شرایط پلتفرم یا قوانین حفاظت از داده را زیر پا می‌گذارد مشروع نمی‌کند؛ چارچوب حقوقی را در نوشته [آیا اسکرپینگ وب قانونی است؟](/fa/blog/is-data-web-scraping-legal) خلاصه کرده‌ایم.

## راهنمای انتخاب

| نیاز | پیشنهاد |
|---|---|
| از n8n Cloud استفاده می‌کنم و می‌خواهم فقط یک نود از پروکسی خارج شود | HTTP Request → Options → Proxy با نام کاربری و رمز عبور |
| در n8n self-hosted همه نودها از پروکسی خارج شوند | `HTTP_PROXY`، `HTTPS_PROXY`، `NO_PROXY` و سپس راستی‌آزمایی نود به نود |
| تنظیم سراسری هست ولی یک نود باید از کشور دیگری خارج شود | گزینه Proxy در همان نود؛ بر تنظیم سراسری مقدم است |
| در هر درخواست یک IP متفاوت | نقطه اتصال چرخشی؛ چرخش را در نود Code ننویسید |
| طرف مقابل IP من را در لیست سفید می‌گذارد | پروکسی با IP ثابت (ISP) یا سرور خودتان با IP ثابت |
| صفحه با JavaScript بارگذاری می‌شود و نود HTML خالی برمی‌گردد | HTTP Request کافی نیست؛ خودکارسازی مرورگر یا نقطه اتصال JSON پشت صحنه سایت |

## پرسش‌های متداول

### آیا در n8n Cloud می‌توان از پروکسی استفاده کرد؟

بله، گزینه Proxy در نود HTTP Request در Cloud هم وجود دارد؛ ولی متغیرهای محیطی قابل استفاده نیستند. چون IPهای خروجی Cloud ثابت نیستند، با نام کاربری و رمز عبور به پروکسی وصل شوید و نه با لیست سفید IP.

### N8N_PROXY_HOPS چه کاری می‌کند؟

می‌گوید چند پروکسی معکوس (nginx، Caddy، متعادل‌کننده بار ابری) جلوی n8n قرار دارد؛ مقدار پیش‌فرض آن `0` است. به درخواست‌های خروجی و تنظیم پروکسی این نوشته ربطی ندارد.

### تنظیم Proxy در نود مقدم است یا متغیر محیطی؟

تنظیم نود. مستندات n8n همین را می‌گوید؛ در آزمون محلی ما هم وقتی متغیر محیطی به یک پورت بسته اشاره می‌کرد، نودی که گزینه Proxy آن پر بود از پروکسی خودش خارج شد.

### آیا Zapier هم همین تنظیم را دارد؟

نه. گام Webhooks در Zapier فیلدهای آدرس، داده، سرآیند و احراز هویت پایه دارد؛ فیلد پروکسی ندارد. برای عبور دادن درخواست از پروکسی باید یک سرویس کوچک از خودتان در میان بگذارید: Zapier به آن سرویس درخواست می‌فرستد و سرویس از طریق پروکسی به مقصد می‌رود.

### آیا ناچارم رمز پروکسی را به‌صورت متن ساده در گردش کار نگه دارم؟

اگر از گزینه نود استفاده می‌کنید بله، این فیلد متن ساده است. در نصب self-hosted راه بیرون آوردن رمز از گردش کار متغیرهای محیطی است: اطلاعات ورود در پیکربندی سرور می‌ماند و وارد JSON گردش کار نمی‌شود. اگر سروری با IP ثابت دارید، لیست سفید IP رمز را به‌کلی کنار می‌گذارد.

### آیا با HTTP Request می‌توان از هر سایتی داده گرفت؟

نه. این نود JavaScript اجرا نمی‌کند و به همین دلیل در صفحه‌هایی که محتوا در مرورگر ساخته می‌شود فیلد موردنظر شما در پاسخ نیست. سایت‌هایی که محافظت در برابر ربات دارند هم ممکن است مستقل از پروکسی صفحه راستی‌آزمایی برگردانند. در چنین وضعی کار درست فشار آوردن به محافظت نیست، بلکه سر زدن به API رسمی سایت یا گزینه‌های همکاری داده‌ای آن است.

## خلاصه

در n8n پروکسی در دو جا تعریف می‌شود: فیلد Proxy در بخش Options نود HTTP Request و متغیرهای `HTTP_PROXY`، `HTTPS_PROXY` و `NO_PROXY` در نصب self-hosted. اطلاعات ورود درون آدرس نوشته می‌شود، تنظیم نود بر تنظیم سراسری مقدم است و `N8N_PROXY_HOPS` فقط به نصب‌های پشت پروکسی معکوس مربوط است. پروکسی جای محدودیت نرخ را نمی‌گیرد: با Batching یا Wait سرعت را کم کنید، با دیدن `429` صبر کنید و اگر API رسمی هست همان را انتخاب کنید. انواع IP مناسب گردش کارهایتان را می‌توانید در صفحه [خدمات پروکسی ما](/fa/proxy) مقایسه کنید.
