chrome.proxy

ब्यौरा

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

अनुमतियां

proxy

मेनिफ़ेस्ट

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

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

ऑब्जेक्ट और प्रॉपर्टी

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

प्रॉक्सी मोड

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

direct
direct मोड में, सभी कनेक्शन सीधे तौर पर बनाए जाते हैं. इनमें किसी प्रॉक्सी का इस्तेमाल नहीं किया जाता. इस मोड में, ProxyConfig ऑब्जेक्ट में कोई अन्य पैरामीटर इस्तेमाल नहीं किया जा सकता.
auto_detect
In 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, सिस्टम सेटिंग पर तब ही वापस जाता है, जब प्रॉक्सी कॉन्फ़िगरेशन पर कमांड-लाइन के किसी विकल्प का असर न हो.

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

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

पहले मामले में, एचटीटीपी, एचटीटीपीएस, और एफ़टीपी ट्रैफ़िक को तय किए गए प्रॉक्सी सर्वर के ज़रिए रूट किया जाता है. अन्य ट्रैफ़िक सीधे भेजा जाता है. दूसरे मामले में, व्यवहार थोड़ा अलग होता है: अगर एचटीटीपी, एचटीटीपीएस या एफ़टीपी प्रोटोकॉल के लिए कोई प्रॉक्सी सर्वर कॉन्फ़िगर किया गया है, तो उससे जुड़ा ट्रैफ़िक, तय किए गए सर्वर के ज़रिए रूट किया जाता है. अगर ऐसा कोई प्रॉक्सी सर्वर तय नहीं किया गया है या ट्रैफ़िक, एचटीटीपी, एचटीटीपीएस या एफ़टीपी के अलावा किसी दूसरे प्रोटोकॉल का इस्तेमाल करता है, तो 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]

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

उदाहरण: 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

"direct"

"auto_detect"

"pac_script"

"fixed_servers"

"system"

PacScript

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

प्रॉपर्टी

  • डेटा

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

    पीएसी स्क्रिप्ट.

  • ज़रूरी है

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

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

  • url

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

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

ProxyConfig

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

प्रॉपर्टी

  • मोड

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

  • pacScript

    PacScript ज़रूरी नहीं

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

  • नियम

    ProxyRules ज़रूरी नहीं

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

ProxyRules

यह ऑब्जेक्ट, सभी प्रोटोकॉल के लिए प्रॉक्सी के नियमों के सेट को एनकैप्सुलेट करता है. 'singleProxy' या 'proxyForHttp', 'proxyForHttps', 'proxyForFtp', और 'fallbackProxy' (इनका सबसेट) में से किसी एक का इस्तेमाल करें.

प्रॉपर्टी

  • bypassList

    string[] ज़रूरी नहीं

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

  • fallbackProxy

    ProxyServer ज़रूरी नहीं

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

  • proxyForFtp

    ProxyServer ज़रूरी नहीं

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

  • proxyForHttp

    ProxyServer ज़रूरी नहीं

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

  • proxyForHttps

    ProxyServer ज़रूरी नहीं

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

  • singleProxy

    ProxyServer ज़रूरी नहीं

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

ProxyServer

यह ऑब्जेक्ट, किसी एक प्रॉक्सी सर्वर की जानकारी को एनकैप्सुलेट करता है.

प्रॉपर्टी

  • होस्ट

    स्ट्रिंग

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

  • पोर्ट

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

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

  • स्कीम

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

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

Scheme

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

Enum

"http"

"https"

"quic"

"socks4"

"socks5"

प्रॉपर्टी

settings

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

इवेंट

onProxyError

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

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

पैरामीटर

  • कॉलबैक

    फ़ंक्शन

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

    (details: object) => void

    • विवरण

      ऑब्जेक्ट

      • विवरण

        स्ट्रिंग

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

      • गड़बड़ी

        स्ट्रिंग

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

      • fatal

        बूलियन

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