توضیحات
از chrome.proxy
API برای مدیریت تنظیمات پروکسی Chrome استفاده کنید. این API برای دریافت و تنظیم پیکربندی پروکسی به نمونه اولیه ChromeSetting از نوع API متکی است.
مجوزها
proxy
برای استفاده از API تنظیمات پروکسی، باید مجوز «پراکسی» را در مانیفست افزونه اعلام کنید. به عنوان مثال:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
مفاهیم و کاربرد
تنظیمات پروکسی در یک شیء proxy.ProxyConfig
تعریف شده است. بسته به تنظیمات پروکسی Chrome، تنظیمات ممکن است حاوی proxy.ProxyRules
یا یک proxy.PacScript
باشد.
حالت های پروکسی
ویژگی mode
شیء ProxyConfig رفتار کلی Chrome را در رابطه با استفاده از پروکسی تعیین می کند. می تواند مقادیر زیر را بگیرد:
-
direct
- در حالت
direct
همه اتصالات به طور مستقیم و بدون هیچ پروکسی ایجاد می شوند. این حالت هیچ پارامتر دیگری را در شیءProxyConfig
اجازه نمی دهد. -
auto_detect
- در حالت
auto_detect
، پیکربندی پراکسی توسط یک اسکریپت PAC تعیین میشود که میتواند در http://wpad/wpad.dat دانلود شود. این حالت هیچ پارامتر دیگری را در شیءProxyConfig
اجازه نمی دهد. -
pac_script
- در حالت
pac_script
، پیکربندی پروکسی توسط یک اسکریپت PAC تعیین میشود که یا از URL مشخص شده در شیءproxy.PacScript
بازیابی میشود یا به معنای واقعی کلمه از عنصرdata
مشخص شده در شیءproxy.PacScript
گرفته شده است. علاوه بر این، این حالت هیچ پارامتر دیگری را در شیءProxyConfig
اجازه نمی دهد. -
fixed_servers
- در حالت
fixed_servers
، پیکربندی پروکسی در یک شیءproxy.ProxyRules
کدگذاری می شود. ساختار آن در قوانین پروکسی توضیح داده شده است. علاوه بر این، حالتfixed_servers
اجازه هیچ پارامتر دیگری را در شیءProxyConfig
نمی دهد. -
system
- در حالت
system
، پیکربندی پروکسی از سیستم عامل گرفته شده است. این حالت هیچ پارامتر دیگری را در شیءProxyConfig
اجازه نمی دهد. توجه داشته باشید که حالتsystem
با تنظیم بدون پیکربندی پروکسی متفاوت است. در مورد دوم، کروم تنها در صورتی به تنظیمات سیستم بازمی گردد که هیچ گزینه خط فرمانی بر پیکربندی پراکسی تأثیری نداشته باشد.
قوانین پروکسی
شیء proxy.ProxyRules
می تواند شامل یک ویژگی singleProxy
یا زیر مجموعه ای از proxyForHttp
، proxyForHttps
، proxyForFtp
و fallbackProxy
باشد.
در حالت اول، ترافیک HTTP، HTTPS و FTP از طریق سرور پراکسی مشخص شده پروکسی می شود. سایر ترافیک ها مستقیما ارسال می شود. در مورد دوم، رفتار کمی ظریفتر است: اگر یک سرور پراکسی برای پروتکل HTTP، HTTPS یا FTP پیکربندی شده باشد، ترافیک مربوطه از طریق سرور مشخص شده پراکسی میشود. اگر چنین سرور پراکسی مشخص نشده باشد یا ترافیک از پروتکلی متفاوت از HTTP، HTTPS یا FTP استفاده کند، از fallbackProxy
استفاده می شود. اگر fallbackProxy
مشخص نشده باشد، ترافیک مستقیماً بدون سرور پراکسی ارسال می شود.
اشیاء سرور پروکسی
یک سرور پراکسی در یک شیء proxy.ProxyServer
پیکربندی شده است. اتصال به سرور پروکسی (تعریف شده توسط ویژگی host
) از پروتکل تعریف شده در ویژگی scheme
استفاده می کند. اگر هیچ scheme
مشخص نشده باشد، اتصال پراکسی به طور پیشفرض روی http
است.
اگر هیچ port
در یک شیء proxy.ProxyServer
تعریف نشده باشد، پورت از طرح مشتق شده است. پورت های پیش فرض عبارتند از:
طرح | بندر |
---|---|
http | 80 |
https | 443 |
جوراب 4 | 1080 |
جوراب 5 | 1080 |
لیست دور زدن
سرورهای فردی ممکن است از پروکسی شدن با bypassList
مستثنی شوند. این لیست ممکن است شامل ورودی های زیر باشد:
-
[SCHEME://]HOST_PATTERN[:PORT]
همه نامهای میزبانی را که با الگوی
HOST_PATTERN
مطابقت دارند مطابقت دهید. پیشرو"."
به عنوان"*."
.مثالها:
"foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99"
.الگو مسابقات مطابقت ندارد ".foobar.com"
"www.foobar.com"
"foobar.com"
"*.foobar.com"
"www.foobar.com"
"foobar.com"
"foobar.com"
"foobar.com"
"www.foobar.com"
"*foobar.com"
"foobar.com"
,"www.foobar.com"
,"foofoobar.com"
-
[SCHEME://]IP_LITERAL[:PORT]
نشانیهای اینترنتی را که به معنای واقعی کلمه آدرس IP هستند مطابقت دهید. از نظر مفهومی، این شبیه به مورد اول است، اما با موارد خاص برای مدیریت تحت اللفظی IP. به عنوان مثال، تطبیق در "[0:0:0::1]" مانند تطبیق در "[::1]" است زیرا استانداردسازی IPv6 به صورت داخلی انجام می شود.
مثالها:
127.0.1
،[0:0::1]
،[::1]:80
،https://[::1]:443
-
IP_LITERAL/PREFIX_LENGTH_IN_BITS
هر URL حاوی IP تحت اللفظی (
IP_LITERAL
) را در محدوده داده شده مطابقت دهید. محدوده IP (PREFIX_LENGTH_IN_BITS
) با استفاده از نماد CIDR مشخص شده است.هر URL حاوی IP تحت اللفظی را در محدوده داده شده مطابقت دهید. محدوده IP با استفاده از نماد CIDR مشخص می شود. مثالها:
"192.168.1.1/16", "fefe:13::abc/33"
-
<local>
رشته تحت اللفظی
<local>
با نام های میزبان ساده مطابقت دارد. یک نام میزبان ساده، نامی است که فاقد نقطه باشد و تحت اللفظی IP نباشد. به عنوان مثالexample
وlocalhost
نام هاست ساده هستند، در حالی کهexample.com
،example.
، و[::1]
نیستند.مثال:
"<local>"
نمونه ها
کد زیر یک پروکسی SOCKS 5 را برای اتصالات HTTP به همه سرورها به جز foobar.com تنظیم می کند و از اتصالات مستقیم برای همه پروتکل های دیگر استفاده می کند. تنظیمات برای پنجرههای معمولی و ناشناس اعمال میشود، زیرا پنجرههای ناشناس تنظیمات را از پنجرههای معمولی به ارث میبرند. همچنین به اسناد Types API مراجعه کنید.
var config = {
mode: "fixed_servers",
rules: {
proxyForHttp: {
scheme: "socks5",
host: "1.2.3.4"
},
bypassList: ["foobar.com"]
}
};
chrome.proxy.settings.set(
{value: config, scope: 'regular'},
function() {}
);
کد زیر یک اسکریپت PAC سفارشی را تنظیم می کند.
var config = {
mode: "pac_script",
pacScript: {
data: "function FindProxyForURL(url, host) {\n" +
" if (host == 'foobar.com')\n" +
" return 'PROXY blackhole:80';\n" +
" return 'DIRECT';\n" +
"}"
}
};
chrome.proxy.settings.set(
{value: config, scope: 'regular'},
function() {}
);
قطعه بعدی تنظیمات پراکسی موثر فعلی را پرس و جو می کند. تنظیمات پراکسی موثر را می توان با برنامه افزودنی دیگر یا یک خط مشی تعیین کرد. برای جزئیات به اسناد API Types مراجعه کنید.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
توجه داشته باشید که شی value
ارسال شده به set()
با value
ارسال شده به تابع callback get()
یکسان نیست. دومی حاوی یک عنصر rules.proxyForHttp.port
است.
انواع
Mode
Enum
"مستقیم" "تشخیص_خودکار" "pac_script" "سرورهای_ثابت" "سیستم"
PacScript
یک شی که اطلاعات پیکربندی خودکار پروکسی را در خود دارد. دقیقاً یکی از فیلدها باید خالی نباشد.
خواص
- داده ها
رشته اختیاری
یک اسکریپت PAC
- اجباری
بولی اختیاری
اگر درست باشد، یک اسکریپت PAC نامعتبر از بازگشت پشته شبکه به اتصالات مستقیم جلوگیری می کند. پیش فرض به نادرست.
- آدرس اینترنتی
رشته اختیاری
URL فایل PAC مورد استفاده.
ProxyConfig
یک شی که یک پیکربندی کامل پروکسی را در بر می گیرد.
خواص
- حالت
'direct' = هرگز از پروکسی استفاده نکنید 'auto_detect' = تشخیص خودکار تنظیمات پراکسی 'pac_script' = استفاده از اسکریپت PAC مشخص شده 'fixed_servers' = به صورت دستی سرورهای پراکسی را مشخص کنید 'system' = استفاده از تنظیمات پراکسی سیستم
- pacScript
PacScript اختیاری است
اسکریپت پیکربندی خودکار پروکسی (PAC) برای این پیکربندی. از این برای حالت 'pac_script' استفاده کنید.
- قوانین
ProxyRules اختیاری است
قوانین پروکسی که این پیکربندی را توصیف می کند. از این برای حالت 'fixed_servers' استفاده کنید.
ProxyRules
یک شی که مجموعه ای از قوانین پروکسی را برای همه پروتکل ها محصور می کند. از «singleProxy» یا (زیر مجموعه ای از) «proxyForHttp»، «proxyForHttps»، «proxyForFtp» و «fallbackProxy» استفاده کنید.
خواص
- bypasslist
رشته[] اختیاری است
لیست سرورهایی که باید بدون سرور پروکسی به آنها متصل شوید.
- fallbackProxy
ProxyServer اختیاری است
سرور پراکسی که برای هر چیز دیگری استفاده می شود یا اگر هیچ یک از پروکسی برای... مشخص نشده باشد.
- proxyForFtp
ProxyServer اختیاری است
سرور پروکسی که برای درخواست های FTP استفاده می شود.
- proxyForHttp
ProxyServer اختیاری است
سرور پروکسی که برای درخواست های HTTP استفاده می شود.
- proxyForHttps
ProxyServer اختیاری است
سرور پروکسی که برای درخواست های HTTPS استفاده می شود.
- تک پروکسی
ProxyServer اختیاری است
سرور پروکسی که برای همه درخواستهای هر URL (یعنی http، https و ftp) استفاده میشود.
ProxyServer
شیئی که مشخصات یک سرور پراکسی واحد را محصور می کند.
خواص
- میزبان
رشته
نام میزبان یا آدرس IP سرور پروکسی. نام هاست باید در ASCII (در قالب Punycode) باشد. IDNA هنوز پشتیبانی نمی شود.
- بندر
شماره اختیاری
پورت سرور پروکسی به طور پیش فرض درگاهی که به طرح بستگی دارد.
- طرح
طرح اختیاری
طرح (پروتکل) خود سرور پروکسی. پیشفرض «http».
Scheme
Enum
"http" "https" "سریع" "جوراب 4" "جوراب 5"
خواص
settings
تنظیمات پراکسی مورد استفاده قرار گیرد. مقدار این تنظیم یک شی ProxyConfig است.
تایپ کنید
رویدادها
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
در مورد خطاهای پروکسی اطلاع می دهد.
پارامترها
- پاسخ به تماس
تابع
پارامتر
callback
به نظر می رسد:(details: object) => void
- جزئیات
شی
- جزئیات
رشته
جزئیات بیشتر در مورد خطا مانند خطای زمان اجرا جاوا اسکریپت.
- خطا
رشته
شرح خطا
- کشنده
بولی
اگر درست باشد، خطا کشنده بوده و تراکنش شبکه متوقف شده است. در غیر این صورت، به جای آن از اتصال مستقیم استفاده می شود.