ब्यौरा
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
तय नहीं किया गया है, तो पोर्ट को स्कीम से लिया जाता है.
डिफ़ॉल्ट पोर्ट हैं:
स्कीम | पोर्ट |
---|---|
http | 80 |
https | 443 |
socks4 | 1080 |
socks5 | 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]
उन यूआरएल को मैच करें जो आईपी पते की लिटरल वैल्यू हैं. सैद्धान्तिक तौर पर, यह पहले मामले से मिलता-जुलता है. हालांकि, आईपी लिटरल तौर पर कैननिकल होने की जांच करने के लिए, खास मामलों में भी ऐसा किया जाता है. उदाहरण के लिए, "[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
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
Enum
"http"
"https"
"quic"
"socks4"
"socks5"
प्रॉपर्टी
settings
इस्तेमाल की जाने वाली प्रॉक्सी सेटिंग. इस सेटिंग की वैल्यू एक ProxyConfig ऑब्जेक्ट है.
इवेंट
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
प्रॉक्सी गड़बड़ियों के बारे में सूचना देता है.
पैरामीटर
-
कॉलबैक
फ़ंक्शन
callback
पैरामीटर ऐसा दिखता है:(details: object) => void
-
विवरण
ऑब्जेक्ट
-
विवरण
स्ट्रिंग
गड़बड़ी के बारे में ज़्यादा जानकारी, जैसे कि JavaScript रनटाइम की गड़बड़ी.
-
गड़बड़ी
स्ट्रिंग
गड़बड़ी की जानकारी.
-
fatal
boolean
अगर सही है, तो गंभीर गड़बड़ी थी और नेटवर्क लेन-देन रद्द हो गया था. ऐसा न होने पर, डायरेक्ट कनेक्शन का इस्तेमाल किया जाता है.
-
-