ProxynetProxynet

تنظیم پروکسی در Postman، گام‌به‌گام

تاریخ انتشار:

13 دقیقه مطالعه

Acar Diveroli
نویسنده: Acar Diveroli
پنجره‌ای با درخواست GET /ip و کلید روشن پروکسی که از طریق یک گره به کره زمین وصل است

Postman را معمولاً برای آزمودن یک API باز می‌کنید و درخواست مستقیم از رایانه شما خارج می‌شود. اما گاهی درخواست باید از آدرس IP دیگری بیاید: API به درخواست‌های یک کشور خاص پاسخ متفاوتی می‌دهد، شبکه شرکت فقط از طریق پروکسی اجازه دسترسی به اینترنت می‌دهد یا دارید محدودیت IP یک یکپارچه‌سازی را می‌آزمایید. Postman دو راه برای این کار دارد: استفاده از تنظیم پروکسی سیستم‌عامل یا تعریف پروکسی ویژه خود Postman.

در این نوشته توضیح می‌دهیم Postman تنظیمات پروکسی را کجا نگه می‌دارد، چگونه گام‌به‌گام پروکسی اختصاصی تعریف کنید، نام کاربری و رمز را چگونه بیفزایید و چگونه مطمئن شوید پروکسی واقعاً کار می‌کند. سپس فهرست استثنا، رایج‌ترین خطاهای اتصال و استفاده از پروکسی با Newman در خط فرمان را بررسی می‌کنیم.

Postman چگونه از پروکسی استفاده می‌کند؟

Postman درخواست‌های API را از درون برنامه دسکتاپ می‌فرستد. اینکه این درخواست‌ها از پروکسی بگذرند یا نه را تنظیمات زبانه Settings > Proxy تعیین می‌کند. بر اساس مستندات پروکسی Postman دو گزینه برای فرستادن درخواست از طریق پروکسی وجود دارد:

  • پروکسی سیستم (Use the system proxy): Postman تنظیم پروکسی سیستم‌عامل و متغیرهای محیطی HTTP_PROXY، HTTPS_PROXY و NO_PROXY را به کار می‌برد. اگر همه برنامه‌های رایانه از قبل از یک پروکسی می‌گذرند، کاربردی است.
  • پروکسی اختصاصی (Use custom proxy configuration): مستقل از سیستم‌عامل برای Postman پروکسی تعریف می‌کنید. اگر فقط می‌خواهید آزمون‌های API از پروکسی بگذرند و مرورگر و برنامه‌های دیگر دست‌نخورده بمانند، گزینه درست همین است.

بر اساس مستندات، اگر هر دو گزینه روشن باشد Postman پروکسی اختصاصی را به کار می‌برد. برای جلوگیری از سردرگمی پیشنهاد می‌کنیم گزینه‌ای را که استفاده نمی‌کنید خاموش نگه دارید.

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

چگونه پروکسی اختصاصی تعریف کنیم؟

  1. برنامه دسکتاپ Postman را باز کنید، روی نماد چرخ‌دنده بالا سمت راست بزنید و به Settings بروید.
  2. در پنجره‌ای که باز می‌شود به زبانه Proxy بروید.
  3. در بخش فرستادن درخواست‌ها، Use custom proxy configuration را روشن کنید.
  4. در Use proxy for انتخاب کنید پروکسی برای کدام ترافیک به کار رود. تقریباً همه APIها HTTPS هستند، پس مطمئن شوید HTTPS انتخاب شده است؛ علامت زدن هر دو گزینه امن‌ترین انتخاب است.
  5. در Proxy server ابتدا پروتکل را انتخاب کنید. برای APIهای وب معمولاً HTTP کافی است. اگر از پروکسی SOCKS5 استفاده می‌کنید، SOCKS5H را انتخاب کنید تا resolve نام دامنه در سمت پروکسی انجام شود.
  6. در همان سطر آدرس و پورت سرور پروکسی را وارد کنید، مثلاً pr.proxynet.io و 8000.
  7. اگر پروکسی نام کاربری و رمز می‌خواهد، گام‌های بخش بعد را دنبال کنید.
  8. تنظیمات خودکار ذخیره می‌شوند. پنجره را ببندید و برای آزمون یک درخواست بفرستید.
فیلدمقدار نمونهتوضیح
Use custom proxy configurationروشنپروکسی ویژه Postman را فعال می‌کند
Use proxy forHTTP و HTTPSکدام درخواست‌ها از پروکسی بگذرند
Proxy server: پروتکلHTTP یا SOCKS5HHTTP برای APIهای وب، SOCKS5H برای SOCKS با DNS از راه دور
Proxy server: میزبانpr.proxynet.ioآدرس پروکسی در پنل شما
Proxy server: پورت8000پورت پروتکل انتخاب‌شده
Proxy authروشن یا خاموشاگر نام کاربری و رمز لازم باشد روشن
Username و Passwordاطلاعات ورود پنلاگر لیست سفید IP دارید خالی
Proxy bypasslocalhost,127.0.0.1آدرس‌هایی که نباید از پروکسی بگذرند

مستندات Postman یادآوری می‌کند که از طریق پروکسی SOCKS فقط درخواست‌های HTTP و HTTPS را می‌توان فرستاد. برای انواع دیگر درخواست مانند WebSocket یا gRPC باید رفتار پروکسی را جداگانه بیازمایید.

چگونه احراز هویت را بیفزاییم؟

دو راه برای اتصال به پروکسی وجود دارد: با نام کاربری و رمز، یا با افزودن آدرس IP رایانه‌تان به فهرست مجاز در پنل. دو روش و امنیت آن‌ها را در احراز هویت پروکسی: نام کاربری و رمز یا لیست سفید IP مقایسه کرده‌ایم.

با نام کاربری و رمز:

  1. در زبانه Proxy، Proxy auth را روشن کنید.
  2. اطلاعات ورود پنل را در فیلدهای Username و Password وارد کنید.
  3. رمز را در این فیلدها همان‌طور که هست و بدون کدگذاری بنویسید. کدگذاری‌هایی مانند %40 که برای رمز درون آدرس لازم است اینجا لازم نیست؛ Postman اطلاعات ورود را از فیلدهای جداگانه برمی‌دارد و هدر Proxy-Authorization را خودش می‌سازد.

با لیست سفید IP:

  1. با پروکسی خاموش، آدرس IP عمومی رایانه‌تان را پیدا کنید. فرستادن یک درخواست GET به https://api.ipify.org در Postman کافی است.
  2. این آدرس را در پنل مشتری به فهرست IPهای مجاز بیفزایید.
  3. در Postman گزینه Proxy auth را خاموش بگذارید.

اگر IP اتصال خانگی شما تغییر کند، لیست سفید پس از مدتی از کار می‌افتد؛ در این حالت رفتن به نام کاربری و رمز کم‌زحمت‌تر است.

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

پس از ذخیره تنظیمات، برای دیدن اینکه درخواست واقعاً از پروکسی می‌گذرد، درخواستی به آدرسی بفرستید که IP شما را برمی‌گرداند.

  1. زبانه درخواست تازه‌ای باز کنید و متد را GET بگذارید.
  2. در نوار آدرس https://httpbin.org/ip را بنویسید و روی Send بزنید.
  3. به مقدار origin در بدنه پاسخ نگاه کنید.
json
{
  "origin": "203.0.113.25"
}

این مقدار باید IP خروجی پروکسی باشد. اگر IP خودتان را دیدید، درخواست از پروکسی نمی‌گذرد؛ بررسی کنید کلید پروکسی اختصاصی روشن است و HTTPS در Use proxy for انتخاب شده است.

برای دیدن جزئیات یک درخواست، Postman Console را باز کنید (دکمه Console در نوار پایین). کنسول هدرهای فرستاده‌شده، زمان پاسخ و متن کامل هر خطای اتصال را نشان می‌دهد. هنگام اشکال‌زدایی، نخستین جایی است که باید نگاه کنید.

همین بررسی را در خط فرمان هم می‌توانید انجام دهید. اگر درخواستی در Postman کار نمی‌کند، آزمودن همان پروکسی با cURL زود نشان می‌دهد مشکل در تنظیمات Postman است یا در پروکسی:

bash
curl -x "http://user:pass@pr.proxynet.io:8000" https://httpbin.org/ip

اگر cURL کار کند و Postman نه، مشکل در تنظیمات Postman است. اگر cURL هم ناموفق باشد، اطلاعات ورود پروکسی یا شبکه خود را بررسی کنید. گزینه‌های پروکسی cURL در استفاده از پروکسی با cURL آمده است.

فهرست استثنا به چه کار می‌آید؟

فیلد Proxy bypass فهرستی از آدرس‌ها با جداکننده ویرگول انگلیسی می‌گیرد که نباید از پروکسی بگذرند. بیش از همه در این وضعیت‌ها لازم است:

  • سرور توسعه محلی. وقتی API خود را روی localhost:3000 می‌آزمایید، فرستادن درخواست به پروکسی معنایی ندارد؛ پروکسی به آدرسی در شبکه محلی شما دسترسی ندارد.
  • سرویس‌های داخلی. سرویس‌های داخلی در بلوک 10.0.0.0 یا با نام‌های .local.
  • سرورهای احراز هویت. اگر سرویسی که از آن توکن می‌گیرید محدودیت IP ندارد و فقط درخواست اصلی API باید از پروکسی بگذرد.

مقدار نمونه:

text
localhost,127.0.0.1,*.company.local,10.0.0.5

آدرس‌های محلی که فراموش کنید به فهرست استثنا بیفزایید، هنگام روشن بودن پروکسی timeout می‌شوند یا به صفحه خطای پروکسی می‌رسند.

آزمودن پاسخ‌های API بر اساس موقعیت

یکی از رایج‌ترین دلیل‌های استفاده از پروکسی در Postman، دیدن پاسخ API به درخواست‌هایی از کشورهای مختلف است. سرویس قیمت‌گذاری ممکن است واحد پول، API محتوا زبان و کاتالوگ و سرویس پرداخت روش‌های پشتیبانی‌شده را بر اساس کشور مبدأ درخواست تغییر دهد.

روالی کاربردی برای این آزمون‌ها:

  1. برای هر کشور اطلاعات پروکسی جداگانه آماده کنید.
  2. در Postman برای هر کشور یک Environment بسازید و واحد پول، زبان و مقدارهای مورد انتظار دیگر را به‌صورت متغیر نگه دارید.
  3. تنظیم پروکسی را به نقطه خروج کشوری که می‌آزمایید تغییر دهید.
  4. در زبانه Tests درخواست، بررسی‌ای بنویسید که مقدار مورد انتظار را مقایسه کند.
javascript
pm.test("Currency matches the country", () => {
  const body = pm.response.json();
  pm.expect(body.currency).to.eql(pm.environment.get("expectedCurrency"));
});

تنظیم پروکسی Postman برای کل برنامه اعمال می‌شود، نه برای هر Environment. هنگام عوض کردن کشور باید آدرس پروکسی را هم در صفحه Settings تغییر دهید. اگر به‌طور منظم کشورهای فراوانی را می‌آزمایید، خودکارسازی با Newman که پایین‌تر آمده کاربردی‌تر است. ساختار آزمون محلی‌سازی در صفحه راه‌حل محلی‌سازی و سناریوهای کلی آزمون برنامه در صفحه راه‌حل آزمون برنامه آمده است.

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

خطاهای رایج و راه‌حل‌ها

خطا یا نشانهعلت محتملراه‌حل
407 Proxy Authentication Requiredنام کاربری یا رمز نادرست، IP در لیست سفید نیستاطلاعات Proxy auth را دوباره وارد کنید؛ IP لیست سفید را بررسی کنید
tunneling socket could not be establishedپروکسی ساخت تونل را رد کرده؛ معمولاً 407 یا پورت نادرستمقدار statusCode را در کنسول ببینید؛ پورت و پروتکل را بررسی کنید
ECONNREFUSEDآدرس یا پورت نادرست، پروکسی روی آن پورت گوش نمی‌دهدنام سرور و پورت را با پنل مقایسه کنید
ETIMEDOUT یا انتظار طولانیفایروال شبکه شما پورت پروکسی را مسدود کردههمان اتصال را با cURL بیازمایید؛ با مدیر شبکه صحبت کنید
unable to get local issuer certificateپروکسی سازمانی بازرسی TLS انجام می‌دهدگواهی CA شرکت را در Settings > Certificates بیفزایید
IP برگشتی IP خودتان استپروکسی اختصاصی خاموش است یا برای HTTPS فعال نشدهکلید و انتخاب Use proxy for را بررسی کنید
درخواست‌های localhost timeout می‌شوندآدرس‌های محلی به پروکسی فرستاده می‌شوندlocalhost,127.0.0.1 را به فهرست استثنا بیفزایید

نکته‌ای درباره بررسی SSL. راه‌حلی که در اینترنت فراوان پیشنهاد می‌شود خاموش کردن SSL certificate verification در صفحه Settings است. فوروارد پروکسی معمولی ترافیک HTTPS را درون تونل CONNECT جابه‌جا می‌کند و به گواهی‌ها دست نمی‌زند، پس با پروکسی استاندارد نباید خطای گواهی بگیرید. اگر می‌گیرید، چیزی در میانه ترافیک را رمزگشایی می‌کند. افزودن گواهی آن سامانه به‌جای خاموش کردن بررسی، نمی‌گذارد یک مشکل امنیتی واقعی از چشمتان بیفتد.

معنای کلی کدهای وضعیت HTTP و منطق تلاش دوباره در کدهای وضعیت HTTP در وب اسکرپینگ آمده است.

استفاده از پروکسی در خط فرمان با Newman

Newman که برای اجرای مجموعه‌های Postman در خط لوله CI یا کارهای زمان‌بندی‌شده به کار می‌رود، تنظیمات پروکسی برنامه دسکتاپ را نمی‌خواند. README مربوط به Newman می‌گوید برای پروکسی از متغیرهای محیطی استاندارد HTTP_PROXY، HTTPS_PROXY و NO_PROXY استفاده می‌کند.

در لینوکس و macOS:

bash
export HTTPS_PROXY="http://user:pass@pr.proxynet.io:8000"
export HTTP_PROXY="$HTTPS_PROXY"
export NO_PROXY="localhost,127.0.0.1"

newman run collection.json -e environment-de.json

در Windows PowerShell:

powershell
$env:HTTPS_PROXY = "http://user:pass@pr.proxynet.io:8000"
$env:HTTP_PROXY = $env:HTTPS_PROXY
$env:NO_PROXY = "localhost,127.0.0.1"

newman run collection.json -e environment-de.json

چون آدرس درون متغیر محیطی یک URL است، نویسه‌هایی مانند @، : یا / در رمز باید کدگذاری شوند: @ به‌صورت %40 نوشته می‌شود.

اسکریپتی که کشورهای مختلف را به نوبت می‌آزماید، می‌تواند همان مجموعه را با تغییر متغیر محیطی و فایل Environment در هر بار اجرا کند:

bash
#!/usr/bin/env bash
set -euo pipefail

for country in de fr tr; do
  export HTTPS_PROXY="http://user-${country}:pass@pr.proxynet.io:8000"
  newman run collection.json -e "environment-${country}.json" --reporters cli,junit \
    --reporter-junit-export "result-${country}.xml"
done

قالب user-${country} فقط یک نمونه است؛ اینکه کشور با نام کاربری، پورت دیگر یا از پنل انتخاب شود به ارائه‌دهنده بستگی دارد. قالب درست را در پنل مشتری می‌یابید. اگر از ابزار خط فرمان تازه‌تر Postman یعنی Postman CLI استفاده می‌کنید، تنظیمات پروکسی را در مستندات خود آن ببینید.

کاربردها

  • تیمی که رفتار API را بر اساس موقعیت می‌آزماید: همان مجموعه را با نقاط خروج در کشورهای مختلف اجرا می‌کند. برای APIهای وب پروکسی HTTPS کافی است.
  • توسعه‌دهنده‌ای که یکپارچه‌سازی محدود به IP را تأیید می‌کند: اگر طرف مقابل فقط درخواست‌های یک IP ثابت مشخص را می‌پذیرد، Postman را از پروکسی با همان IP عبور می‌دهد و پیش از انتشار، یکپارچه‌سازی را می‌آزماید.
  • کاربر در شبکه سازمانی: اگر شرکت فقط از طریق پروکسی اجازه دسترسی به اینترنت می‌دهد، گزینه پروکسی سیستم کافی است؛ با بازرسی TLS، گواهی شرکت افزوده می‌شود.
  • تیم تضمین کیفیت که رفتار محدودیت نرخ را بررسی می‌کند: می‌بیند API به درخواست‌های پیاپی از یک IP چگونه پاسخ می‌دهد و آیا هدر Retry-After را درست برمی‌گرداند.

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

وضعیت شماپیشنهاد
کل رایانه از قبل از پروکسی می‌گذردپروکسی سیستم
فقط درخواست‌های Postman باید از پروکسی بگذرندپیکربندی پروکسی اختصاصی
APIهای وب را می‌آزماییدپروتکل HTTP
از پروکسی SOCKS5 استفاده می‌کنیدSOCKS5H (DNS از راه دور)
اتصال خانگی با IP پویانام کاربری و رمز با Proxy auth
سرور محلی هم آزموده می‌شودlocalhost,127.0.0.1 در فهرست استثنا
اجرای مجموعه‌ها در خط لوله CINewman همراه متغیر محیطی HTTPS_PROXY
خطای گواهی می‌گیریدبه‌جای خاموش کردن بررسی، گواهی CA را بیفزایید

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

آیا برنامه وب Postman تنظیمات پروکسی دارد؟

بر اساس مستندات Postman، پروکسی پیش‌فرض خود Postman در برنامه وب قابل پیکربندی نیست؛ برای فرستادن درخواست‌ها گزینه‌های پروکسی سیستم یا پروکسی اختصاصی به کار می‌روند. برنامه دسکتاپ برای دیدن و کنترل همه تنظیمات در یک صفحه کاربردی‌تر است.

آیا می‌توان فقط برای یک مجموعه پروکسی تعریف کرد؟

در برنامه دسکتاپ تنظیم پروکسی برای کل برنامه اعمال می‌شود و به تفکیک مجموعه یا Environment تعریف نمی‌شود. اگر مجموعه‌های مختلف پروکسی‌های متفاوت لازم دارند، دادن متغیر محیطی متفاوت به Newman در هر اجرا تمیزترین راه است.

آیا روشن بودن پروکسی بر همگام‌سازی Postman اثر می‌گذارد؟

Postman برای ترافیک خودش که با حساب شما همگام می‌شود و برای درخواست‌های API که می‌فرستید تنظیمات جداگانه نگه می‌دارد. تنظیمی که در این نوشته آمده برای درخواست‌هایی است که شما می‌فرستید.

رمز من نویسه خاص دارد. آیا آن را درون آدرس بنویسم؟

در برنامه دسکتاپ Postman رمز را بدون کدگذاری در فیلد Password بنویسید. در Newman رمز درون URL متغیر محیطی قرار می‌گیرد، پس @، : و / باید کدگذاری شوند.

چرا درخواست‌هایم با پروکسی کندتر شدند؟

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

SOCKS5 انتخاب کنم یا HTTP؟

اگر از Postman فقط درخواست‌های API از نوع HTTP و HTTPS می‌فرستید، پروکسی HTTP کافی است و کمترین دردسر را دارد. اگر فقط پروکسی SOCKS5 دارید، گزینه SOCKS5H را به کار ببرید. سازوکار SOCKS را در پروکسی SOCKS5: چطور کار می‌کند و چه فرقی دارد توضیح داده‌ایم.

خلاصه

در Postman پروکسی در زبانه Settings > Proxy تنظیم می‌شود؛ یا با استفاده از تنظیم سیستم‌عامل یا با پیکربندی ویژه Postman. برای پروکسی اختصاصی سرور، پورت و پروتکل را وارد کنید و اگر احراز هویت لازم است، رمز را بدون کدگذاری در فیلد خودش بنویسید. تنظیم را با درخواستی به https://httpbin.org/ip تأیید کنید، آدرس‌های محلی را به فهرست استثنا بیفزایید و در خط لوله CI برای Newman از متغیر محیطی HTTPS_PROXY استفاده کنید. برای سازوکار کلی پروکسی سرور پروکسی چیست و چگونه کار می‌کند؟ و برای پلن‌های متناسب با آزمون‌های API، خدمات پروکسی ما را ببینید.

پرسش از ChatGPTپرسش از Claude