chrome.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 تعیین می‌شود که یا از 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

Chrome 54+

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

Chrome 54+

Enum

"http"

"https"

"سریع"

"جوراب 4"

"جوراب 5"

خواص

settings

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

تایپ کنید

رویدادها

onProxyError

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

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

پارامترها

  • پاسخ به تماس

    تابع

    پارامتر callback به نظر می رسد:

    (details: object) => void

    • جزئیات

      شی

      • جزئیات

        رشته

        جزئیات بیشتر در مورد خطا مانند خطای زمان اجرا جاوا اسکریپت.

      • خطا

        رشته

        شرح خطا

      • کشنده

        بولی

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