chrome.proxy

ब्यौरा

Chrome की प्रॉक्सी सेटिंग मैनेज करने के लिए, chrome.proxy API का इस्तेमाल करें. यह एपीआई प्रॉक्सी कॉन्फ़िगरेशन पाने और उसे सेट करने के लिए, एपीआई टाइप के ChromeSettings प्रोटोटाइप पर निर्भर है.

अनुमतियां

proxy

प्रॉक्सी सेटिंग एपीआई का इस्तेमाल करने के लिए, आपको एक्सटेंशन मेनिफ़ेस्ट में "प्रॉक्सी" अनुमति के बारे में एलान करना होगा. उदाहरण के लिए:

{
  "name": "My extension",
  ...
  "permissions": [
    "proxy"
  ],
  ...
}

सिद्धांत और इस्तेमाल

प्रॉक्सी सेटिंग को proxy.ProxyConfig ऑब्जेक्ट में तय किया जाता है. Chrome की प्रॉक्सी सेटिंग के आधार पर, सेटिंग में proxy.ProxyRules या proxy.PacScript शामिल हो सकते हैं.

प्रॉक्सी मोड

प्रॉक्सी कॉन्फ़िगरेशन ऑब्जेक्ट का mode एट्रिब्यूट, प्रॉक्सी के इस्तेमाल के आधार पर Chrome के काम करने का तरीका तय करता है. इसमें नीचे दी गई वैल्यू हो सकती हैं:

direct
direct मोड में, सभी कनेक्शन सीधे तौर पर बन जाते हैं और इसमें कोई प्रॉक्सी शामिल नहीं होता. इस मोड की मदद से, ProxyConfig ऑब्जेक्ट में कोई और पैरामीटर नहीं जोड़ा जा सकता.
auto_detect
auto_detect मोड में, प्रॉक्सी कॉन्फ़िगरेशन को पीएसी स्क्रिप्ट से तय किया जाता है. इस स्क्रिप्ट को http://wpad/wpad.dat पर डाउनलोड किया जा सकता है. यह मोड, ProxyConfig ऑब्जेक्ट में किसी और पैरामीटर को जोड़ने की अनुमति नहीं देता.
pac_script
pac_script मोड में, प्रॉक्सी कॉन्फ़िगरेशन को पीएसी स्क्रिप्ट से तय किया जाता है. इसे proxy.PacScript ऑब्जेक्ट में दिए गए यूआरएल से लिया जाता है या proxy.PacScript ऑब्जेक्ट में बताए गए data एलिमेंट से लिया जाता है. इसके अलावा, यह मोड ProxyConfig ऑब्जेक्ट में किसी और पैरामीटर की अनुमति नहीं देता.
fixed_servers
fixed_servers मोड में, प्रॉक्सी कॉन्फ़िगरेशन को proxy.ProxyRules ऑब्जेक्ट में कॉपी किया जाता है. इसकी बनावट के बारे में प्रॉक्सी नियमों में बताया गया है. इसके अलावा, fixed_servers मोड, ProxyConfig ऑब्जेक्ट में किसी और पैरामीटर की अनुमति नहीं देता.
system
system मोड में प्रॉक्सी कॉन्फ़िगरेशन को ऑपरेटिंग सिस्टम से लिया जाता है. यह मोड, ProxyConfig ऑब्जेक्ट में कोई और पैरामीटर नहीं जोड़ने की अनुमति देता है. ध्यान दें कि system मोड, कोई प्रॉक्सी कॉन्फ़िगरेशन नहीं सेट करने से अलग है. बाद वाले मामले में, Chrome सिस्टम सेटिंग पर वापस तभी वापस आता है, जब कोई कमांड-लाइन विकल्प प्रॉक्सी कॉन्फ़िगरेशन को प्रभावित नहीं करता.

प्रॉक्सी के नियम

proxy.ProxyRules ऑब्जेक्ट में, singleProxy एट्रिब्यूट या proxyForHttp, proxyForHttps, proxyForFtp, और fallbackProxy का सबसेट हो सकता है.

पहले मामले में, एचटीटीपी, एचटीटीपीएस, और एफ़टीपी ट्रैफ़िक को तय किए गए प्रॉक्सी सर्वर के ज़रिए प्रॉक्सी किया जाता है. अन्य ट्रैफ़िक को सीधे तौर पर भेजा जाता है. बाद वाले मामले में, व्यवहार थोड़ा और आसान होता है: अगर किसी प्रॉक्सी सर्वर को एचटीटीपी, एचटीटीपीएस या एफ़टीपी प्रोटोकॉल के लिए कॉन्फ़िगर किया जाता है, तो उससे जुड़े ट्रैफ़िक को तय किए गए सर्वर से प्रॉक्सी किया जाता है. अगर ऐसा कोई प्रॉक्सी सर्वर नहीं दिया गया है या ट्रैफ़िक, एचटीटीपी, एचटीटीपीएस या एफ़टीपी से अलग किसी दूसरे प्रोटोकॉल का इस्तेमाल करता है, तो fallbackProxy का इस्तेमाल किया जाता है. अगर कोई fallbackProxy तय नहीं किया गया है, तो ट्रैफ़िक को सीधे किसी प्रॉक्सी सर्वर के बिना भेजा जाता है.

प्रॉक्सी सर्वर ऑब्जेक्ट

proxy.ProxyServer ऑब्जेक्ट में प्रॉक्सी सर्वर कॉन्फ़िगर किया जाता है. प्रॉक्सी सर्वर से कनेक्ट करने के लिए, scheme एट्रिब्यूट में बताए गए प्रोटोकॉल का इस्तेमाल किया जाता है. प्रॉक्सी सर्वर को host एट्रिब्यूट की मदद से तय किया जाता है. अगर scheme के बारे में नहीं बताया गया है, तो प्रॉक्सी कनेक्शन डिफ़ॉल्ट रूप से http हो जाता है.

अगर किसी proxy.ProxyServer ऑब्जेक्ट में कोई port तय नहीं किया गया है, तो पोर्ट को स्कीम से लिया जाता है. डिफ़ॉल्ट पोर्ट हैं:

स्कीमपोर्ट
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]

उन यूआरएल को मैच करें जो आईपी पते की लिटरल वैल्यू हैं. सैद्धान्तिक तौर पर, यह पहले मामले से मिलता-जुलता है. हालांकि, आईपी लिटरल तौर पर कैननिकल होने की जांच करने के लिए, खास मामलों में भी ऐसा किया जाता है. उदाहरण के लिए, "[0:0:0::1]" पर मैच करना, "[::1]" से मैच करने के जैसा ही है, क्योंकि आईपीवी6 में कैननिकल होने की प्रक्रिया अंदरूनी तौर पर पूरी होती है.

उदाहरण: 127.0.1, [0:0::1], [::1]:80, https://[::1]:443

IP_LITERAL/PREFIX_LENGTH_IN_BITS

दी गई रेंज में, ऐसे किसी भी यूआरएल का मिलान करें जिसमें आईपी लिटरल (IP_LITERAL) मौजूद हो. आईपी रेंज (PREFIX_LENGTH_IN_BITS) की जानकारी, सीआईडीआर नोटेशन का इस्तेमाल करके दी जाती है.

दी गई रेंज के अंदर, ऐसे किसी भी यूआरएल का मिलान करें जिसमें आईपी लिटरल वैल्यू हो. आईपी रेंज को सीआईडीआर नोटेशन का इस्तेमाल करके दिखाया जाता है. उदाहरण: "192.168.1.1/16", "fefe:13::abc/33"

<local>

लिटरल स्ट्रिंग <local>, आसान होस्टनेम से मैच करती है. सामान्य होस्टनेम वह होता है जिसमें कोई बिंदु नहीं होता है और यह आईपी लिटरल नहीं होता है. उदाहरण के लिए example और localhost सामान्य होस्टनेम हैं, जबकि example.com, example., और [::1] नहीं.

उदाहरण: "<local>"

उदाहरण

नीचे दिया गया कोड, सभी सर्वर पर एचटीटीपी कनेक्शन के लिए SOCKS 5 प्रॉक्सी सेट करता है. हालांकि, यह 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() {}
);

यह कोड, कस्टम पीएसी स्क्रिप्ट सेट करता है.

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() {}
);

अगला स्निपेट, मौजूदा असरदार प्रॉक्सी सेटिंग के बारे में क्वेरी करता है. असरदार प्रॉक्सी सेटिंग को किसी दूसरे एक्सटेंशन या किसी नीति से तय किया जा सकता है. ज़्यादा जानकारी के लिए, Types API का दस्तावेज़ देखें.

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

ध्यान दें कि set() को पास किया गया value ऑब्जेक्ट, get() के कॉलबैक फ़ंक्शन को पास किए गए value ऑब्जेक्ट के जैसा नहीं है. बाद वाले वाले एलिमेंट में rules.proxyForHttp.port एलिमेंट शामिल होगा.

टाइप

Mode

Chrome 54 और इसके बाद के वर्शन

Enum

"auto_detect"

"pac_script"

PacScript

प्रॉक्सी की अपने-आप कॉन्फ़िगर होने वाली जानकारी पकड़े हुए एक ऑब्जेक्ट. कोई एक फ़ील्ड खाली नहीं होना चाहिए.

प्रॉपर्टी

  • डेटा

    स्ट्रिंग ज़रूरी नहीं

    PAC स्क्रिप्ट.

  • ज़रूरी है

    बूलियन ज़रूरी नहीं

    सही होने पर, अमान्य पीएसी स्क्रिप्ट, नेटवर्क स्टैक को सीधे कनेक्शन पर जाने से रोक देगी. डिफ़ॉल्ट तौर पर, यह 'गलत' पर सेट होता है.

  • यूआरएल

    स्ट्रिंग ज़रूरी नहीं

    इस्तेमाल की जाने वाली PAC फ़ाइल का यूआरएल.

ProxyConfig

एक ऑब्जेक्ट, जो पूरा प्रॉक्सी कॉन्फ़िगरेशन शामिल कर रहा है.

प्रॉपर्टी

  • मोड

    'direct' = प्रॉक्सी का कभी इस्तेमाल न करें 'auto_detect' = अपने-आप प्रॉक्सी सेटिंग का पता लगाएं 'pac_script' = तय की गई PAC स्क्रिप्ट का इस्तेमाल करें 'Fixed_servers' = मैन्युअल तरीके से प्रॉक्सी सर्वर तय करें 'सिस्टम' = सिस्टम प्रॉक्सी सेटिंग का इस्तेमाल करें

  • pacScript

    PacScript ज़रूरी नहीं

    इस कॉन्फ़िगरेशन के लिए, प्रॉक्सी ऑटो-कॉन्फ़िगरेशन (PAC) स्क्रिप्ट. 'pac_script' मोड के लिए इसका इस्तेमाल करें.

  • नियम

    ProxyRules ज़रूरी नहीं

    इस कॉन्फ़िगरेशन के बारे में बताने वाले प्रॉक्सी नियम. इसका इस्तेमाल 'Fixed_servers' मोड के लिए करें.

ProxyRules

एक ऑब्जेक्ट, जो सभी प्रोटोकॉल के लिए प्रॉक्सी नियमों का सेट इकट्ठा करता है. 'singleप्रॉक्सी' या (इसका सबसेट) ' लंबे समय के लिए होस्ट करें.

प्रॉपर्टी

  • bypassList

    स्ट्रिंग[] ज़रूरी नहीं है

    प्रॉक्सी सर्वर के बिना कनेक्ट करने के लिए सर्वर की सूची.

  • fallbackProxy

    ProxyServer ज़रूरी नहीं

    प्रॉक्सी सर्वर का इस्तेमाल किसी भी अन्य काम के लिए किया जाना चाहिए या अगर कोई भी ऐसा प्रॉक्सीFor... तय नहीं किया गया है, तो उसे किसी और के लिए इस्तेमाल किया जाना चाहिए.

  • proxyForFtp

    ProxyServer ज़रूरी नहीं

    फ़ाइल ट्रांसफ़र प्रोटोकॉल (एफ़टीपी) अनुरोधों के लिए इस्तेमाल किया जाने वाला प्रॉक्सी सर्वर.

  • proxyForHttp

    ProxyServer ज़रूरी नहीं

    एचटीटीपी अनुरोधों के लिए इस्तेमाल किया जाने वाला प्रॉक्सी सर्वर.

  • proxyForHttps

    ProxyServer ज़रूरी नहीं

    एचटीटीपीएस अनुरोधों के लिए इस्तेमाल किया जाने वाला प्रॉक्सी सर्वर.

  • singleProxy

    ProxyServer ज़रूरी नहीं

    हर यूआरएल के सभी अनुरोधों (जैसे कि http, https, और ftp) के लिए इस्तेमाल किया जाने वाला प्रॉक्सी सर्वर.

ProxyServer

एक ऑब्जेक्ट जो किसी एक प्रॉक्सी सर्वर के स्पेसिफ़िकेशन को इकट्ठा करता है.

प्रॉपर्टी

  • होस्ट

    स्ट्रिंग

    प्रॉक्सी सर्वर का होस्टनेम या आईपी पता. होस्टनेम ASCII (पूनीकोड फ़ॉर्मैट में) में होने चाहिए. फ़िलहाल, IDNA काम नहीं करता.

  • पोर्ट

    नंबर ज़रूरी नहीं

    प्रॉक्सी सर्वर का पोर्ट. डिफ़ॉल्ट तौर पर, एक पोर्ट होता है, जो स्कीम के हिसाब से तय होता है.

  • स्कीम

    स्कीम ज़रूरी नहीं

    प्रॉक्सी सर्वर की स्कीम (प्रोटोकॉल) डिफ़ॉल्ट तौर पर 'http' होता है.

Scheme

Chrome 54 और इसके बाद के वर्शन

Enum

"http"

"https"

"quic"

"socks4"

"socks5"

प्रॉपर्टी

settings

इस्तेमाल की जाने वाली प्रॉक्सी सेटिंग. इस सेटिंग की वैल्यू एक ProxyConfig ऑब्जेक्ट है.

इवेंट

onProxyError

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

प्रॉक्सी गड़बड़ियों के बारे में सूचना देता है.

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

    callback पैरामीटर ऐसा दिखता है:

    (details: object)=>void

    • विवरण

      ऑब्जेक्ट

      • विवरण

        स्ट्रिंग

        गड़बड़ी के बारे में ज़्यादा जानकारी, जैसे कि JavaScript रनटाइम की गड़बड़ी.

      • गड़बड़ी

        स्ट्रिंग

        गड़बड़ी की जानकारी.

      • fatal

        boolean

        अगर सही है, तो गंभीर गड़बड़ी थी और नेटवर्क लेन-देन रद्द हो गया था. ऐसा न होने पर, डायरेक्ट कनेक्शन का इस्तेमाल किया जाता है.