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 پیروی میکند؛ در نسخه دیگری ممکن است تفاوتهای کوچکی ببینید.
چگونه پروکسی اختصاصی تعریف کنیم؟
- برنامه دسکتاپ Postman را باز کنید، روی نماد چرخدنده بالا سمت راست بزنید و به Settings بروید.
- در پنجرهای که باز میشود به زبانه Proxy بروید.
- در بخش فرستادن درخواستها، Use custom proxy configuration را روشن کنید.
- در Use proxy for انتخاب کنید پروکسی برای کدام ترافیک به کار رود. تقریباً همه APIها HTTPS هستند، پس مطمئن شوید HTTPS انتخاب شده است؛ علامت زدن هر دو گزینه امنترین انتخاب است.
- در Proxy server ابتدا پروتکل را انتخاب کنید. برای APIهای وب معمولاً HTTP کافی است. اگر از پروکسی SOCKS5 استفاده میکنید، SOCKS5H را انتخاب کنید تا resolve نام دامنه در سمت پروکسی انجام شود.
- در همان سطر آدرس و پورت سرور پروکسی را وارد کنید، مثلاً
pr.proxynet.ioو8000. - اگر پروکسی نام کاربری و رمز میخواهد، گامهای بخش بعد را دنبال کنید.
- تنظیمات خودکار ذخیره میشوند. پنجره را ببندید و برای آزمون یک درخواست بفرستید.
| فیلد | مقدار نمونه | توضیح |
|---|---|---|
| Use custom proxy configuration | روشن | پروکسی ویژه Postman را فعال میکند |
| Use proxy for | HTTP و HTTPS | کدام درخواستها از پروکسی بگذرند |
| Proxy server: پروتکل | HTTP یا SOCKS5H | HTTP برای APIهای وب، SOCKS5H برای SOCKS با DNS از راه دور |
| Proxy server: میزبان | pr.proxynet.io | آدرس پروکسی در پنل شما |
| Proxy server: پورت | 8000 | پورت پروتکل انتخابشده |
| Proxy auth | روشن یا خاموش | اگر نام کاربری و رمز لازم باشد روشن |
| Username و Password | اطلاعات ورود پنل | اگر لیست سفید IP دارید خالی |
| Proxy bypass | localhost,127.0.0.1 | آدرسهایی که نباید از پروکسی بگذرند |
مستندات Postman یادآوری میکند که از طریق پروکسی SOCKS فقط درخواستهای HTTP و HTTPS را میتوان فرستاد. برای انواع دیگر درخواست مانند WebSocket یا gRPC باید رفتار پروکسی را جداگانه بیازمایید.
چگونه احراز هویت را بیفزاییم؟
دو راه برای اتصال به پروکسی وجود دارد: با نام کاربری و رمز، یا با افزودن آدرس IP رایانهتان به فهرست مجاز در پنل. دو روش و امنیت آنها را در احراز هویت پروکسی: نام کاربری و رمز یا لیست سفید IP مقایسه کردهایم.
با نام کاربری و رمز:
- در زبانه Proxy، Proxy auth را روشن کنید.
- اطلاعات ورود پنل را در فیلدهای Username و Password وارد کنید.
- رمز را در این فیلدها همانطور که هست و بدون کدگذاری بنویسید. کدگذاریهایی مانند
%40که برای رمز درون آدرس لازم است اینجا لازم نیست؛ Postman اطلاعات ورود را از فیلدهای جداگانه برمیدارد و هدرProxy-Authorizationرا خودش میسازد.
با لیست سفید IP:
- با پروکسی خاموش، آدرس IP عمومی رایانهتان را پیدا کنید. فرستادن یک درخواست GET به
https://api.ipify.orgدر Postman کافی است. - این آدرس را در پنل مشتری به فهرست IPهای مجاز بیفزایید.
- در Postman گزینه Proxy auth را خاموش بگذارید.
اگر IP اتصال خانگی شما تغییر کند، لیست سفید پس از مدتی از کار میافتد؛ در این حالت رفتن به نام کاربری و رمز کمزحمتتر است.
چگونه از کار کردن پروکسی مطمئن شویم؟
پس از ذخیره تنظیمات، برای دیدن اینکه درخواست واقعاً از پروکسی میگذرد، درخواستی به آدرسی بفرستید که IP شما را برمیگرداند.
- زبانه درخواست تازهای باز کنید و متد را GET بگذارید.
- در نوار آدرس
https://httpbin.org/ipرا بنویسید و روی Send بزنید. - به مقدار
originدر بدنه پاسخ نگاه کنید.
{
"origin": "203.0.113.25"
}این مقدار باید IP خروجی پروکسی باشد. اگر IP خودتان را دیدید، درخواست از پروکسی نمیگذرد؛ بررسی کنید کلید پروکسی اختصاصی روشن است و HTTPS در Use proxy for انتخاب شده است.
برای دیدن جزئیات یک درخواست، Postman Console را باز کنید (دکمه Console در نوار پایین). کنسول هدرهای فرستادهشده، زمان پاسخ و متن کامل هر خطای اتصال را نشان میدهد. هنگام اشکالزدایی، نخستین جایی است که باید نگاه کنید.
همین بررسی را در خط فرمان هم میتوانید انجام دهید. اگر درخواستی در Postman کار نمیکند، آزمودن همان پروکسی با cURL زود نشان میدهد مشکل در تنظیمات Postman است یا در پروکسی:
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 باید از پروکسی بگذرد.
مقدار نمونه:
localhost,127.0.0.1,*.company.local,10.0.0.5آدرسهای محلی که فراموش کنید به فهرست استثنا بیفزایید، هنگام روشن بودن پروکسی timeout میشوند یا به صفحه خطای پروکسی میرسند.
آزمودن پاسخهای API بر اساس موقعیت
یکی از رایجترین دلیلهای استفاده از پروکسی در Postman، دیدن پاسخ API به درخواستهایی از کشورهای مختلف است. سرویس قیمتگذاری ممکن است واحد پول، API محتوا زبان و کاتالوگ و سرویس پرداخت روشهای پشتیبانیشده را بر اساس کشور مبدأ درخواست تغییر دهد.
روالی کاربردی برای این آزمونها:
- برای هر کشور اطلاعات پروکسی جداگانه آماده کنید.
- در Postman برای هر کشور یک Environment بسازید و واحد پول، زبان و مقدارهای مورد انتظار دیگر را بهصورت متغیر نگه دارید.
- تنظیم پروکسی را به نقطه خروج کشوری که میآزمایید تغییر دهید.
- در زبانه Tests درخواست، بررسیای بنویسید که مقدار مورد انتظار را مقایسه کند.
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:
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:
$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 در هر بار اجرا کند:
#!/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 در فهرست استثنا |
| اجرای مجموعهها در خط لوله CI | Newman همراه متغیر محیطی 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، خدمات پروکسی ما را ببینید.




