browser.proxy

شرح

از 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 تعیین می‌شود که یا از نشانی وب مشخص‌شده در شیء proxy.PacScript بازیابی می‌شود یا به‌صورت تحت‌اللفظی از عنصر data مشخص‌شده در شیء proxy.PacScript گرفته می‌شود. علاوه‌براین، این حالت اجازه نمی‌دهد پارامترهای بیشتری در شیء ProxyConfig اضافه شود.
fixed_servers
در حالت fixed_servers، پیکربندی پراکسی در شیء proxy.ProxyRules کدبندی می‌شود. ساختار آن در قوانین پراکسی توضیح داده شده است. علاوه‌براین، حالت fixed_servers اجازه نمی‌دهد پارامترهای بیشتری در شیء ProxyConfig وجود داشته باشد.
system
در حالت system، پیکربندی پراکسی از سیستم‌عامل گرفته می‌شود. این حالت اجازه نمی‌دهد پارامترهای بیشتری در شیء ProxyConfig وجود داشته باشد. توجه داشته باشید که حالت system با تنظیم پیکربندی بدون پراکسی متفاوت است. در حالت دوم، Chrome فقط درصورتی به تنظیمات سیستم برمی‌گردد که هیچ گزینه خط فرمانی بر پیکربندی پراکسی تأثیر نگذارد.

قوانین پراکسی

شیء 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 تعریف نشده باشد، درگاه از طرح مشتق می‌شود. درگاه‌های پیش‌فرض عبارت‌اند از:

طرحدرگاه
http80
https443
socks41080
socks51080

فهرست فرعی

سرورهای تکی ممکن است با 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

با هر نشانی وبی که حاوی نشانی IP تحت‌اللفظی (IP_LITERAL) در محدوده داده‌شده باشد مطابقت دارد. محدوده IP (PREFIX_LENGTH_IN_BITS) بااستفاده از نشانه‌گذاری CIDR مشخص شده است.

با هر نشانی وبی که حاوی نشانی IP تحت‌اللفظی در محدوده داده‌شده باشد مطابقت دارد. محدوده IP بااستفاده از نماد CIDR مشخص می‌شود. مثال‌ها: "192.168.1.1/16", "fefe:13::abc/33"

<local>

رشته تحت‌اللفظی <local> با نام‌های میزبان ساده مطابقت دارد. نام میزبان ساده نامی است که نقطه ندارد و یک IP literal نیست. برای نمونه، 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"]
  }
};
browser.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" +
          "}"
  }
};
browser.proxy.settings.set(
  {value: config, scope: 'regular'},
  function() {}
);

تکه‌کد بعدی تنظیمات پراکسی مؤثر کنونی را پُرسمان می‌کند. تنظیمات پراکسی مؤثر را می‌توان با افزونه‌ای دیگر یا با خط‌مشی تعیین کرد. برای جزئیات بیشتر، به مستندات Types API مراجعه کنید.

browser.proxy.settings.get(
  {'incognito': false},
  function(config) {
    console.log(JSON.stringify(config));
  }
);

توجه داشته باشید که شیء value که به set() ارسال شده است با شیء value که به تابع برگشتی get() ارسال شده است یکسان نیست. مورد دوم حاوی عنصر rules.proxyForHttp.port خواهد بود.

انواع

Mode

Chrome 54 و نسخه‌های بالاتر

شمارشی

«مستقیم»

«auto_detect»

«pac_script»

«fixed_servers»

«سیستم»

PacScript

شیئی که اطلاعات پیکربندی خودکار پراکسی را دربرمی‌گیرد. دقیقاً یکی از فیلدها نباید خالی باشد.

مشخصات

  • داده

    رشته اختیاری

    دستورگان PAC.

  • اجباری

    مقدار منطقی اختیاری

    اگر درست باشد، یک دستورگان PAC نامعتبر مانع از بازگشت پشته شبکه به اتصالات مستقیم می‌شود. به‌طور پیش‌فرض روی نادرست تنظیم می‌شود.

  • نشانی وب

    رشته اختیاری

    نشانی وب فایل PAC که باید استفاده شود.

ProxyConfig

شیئی که پیکربندی کامل پراکسی را دربرمی‌گیرد.

مشخصات

  • حالت حمل‌ونقل

    «مستقیم» = هرگز از پروکسی استفاده نکنید «تشخیص خودکار» = تنظیمات پروکسی به‌طور خودکار تشخیص داده شود «نوشتار PAC» = از نوشتار PAC مشخص‌شده استفاده شود «کارسازهای ثابت» = کارسازهای پروکسی به‌صورت دستی مشخص شود «سیستم» = از تنظیمات پروکسی سیستم استفاده شود

  • 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 استفاده می‌شود.

  • singleProxy

    ProxyServer اختیاری

    کارساز پراکسی که برای همه درخواست‌های مربوط به هر نشانی وب (یعنی http،‏ https، و ftp) استفاده می‌شود.

ProxyServer

شیئی که مشخصات یک سرور پراکسی را دربرمی‌گیرد.

مشخصات

  • میزبان

    رشته

    نام میزبان یا نشانی IP سرور پراکسی. نام‌های میزبان باید در قالب ASCII (در قالب Punycode) باشند. ‫IDNA هنوز پشتیبانی نمی‌شود.

  • درگاه

    عدد اختیاری

    درگاه سرور پراکسی. به درگاهی که به طرح بستگی دارد پیش‌فرض می‌شود.

  • طرح

    طرح اختیاری

    طرح (پروتکل) خود سرور پراکسی. پیش‌فرض روی «http» تنظیم می‌شود.

Scheme

Chrome 54 و نسخه‌های بالاتر

شمارشی

«http»

"https"

«quic»

"socks4"

"socks5"

مشخصات

settings

تنظیمات پراکسی که باید استفاده شود. مقدار این تنظیم شیء ProxyConfig است.

رویدادها

onProxyError

chrome.proxy.onProxyError.addListener(
  callback: function,
)

اعلان‌های مربوط به خطاهای پراکسی را ارسال می‌کند.

پارامترها

  • بازخوانی

    تابع

    پارامتر callback به‌صورت زیر است:

    (details: object) => void

    • جزئیات

      شیء

      • جزئیات

        رشته

        جزئیات اضافی درباره خطا، مثل خطای زمان اجرای جاوا اسکریپت.

      • خطا

        رشته

        شرح خطا.

      • مهلک

        بولی

        اگر درست باشد، خطا مهلک بوده است و تراکنش شبکه لغو شده است. درغیراین‌صورت، از اتصال مستقیم استفاده می‌شود.