browser.proxy

বিবরণ

Chrome-এর প্রক্সি সেটিংস ম্যানেজ করতে chrome.proxy API ব্যবহার করুন। প্রক্সি কনফিগারেশন পাওয়া ও সেট করার জন্য এই API API-এর ChromeSetting প্রোটোটাইপের উপর নির্ভর করে।

অনুমতি

proxy

প্রক্সি সেটিংস API ব্যবহার করতে, আপনাকে এক্সটেনশন ম্যানিফেস্টে "প্রক্সি" অনুমতি ঘোষণা করতে হবে। যেমন:

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

ধারণা ও ব্যবহার

proxy.ProxyConfig অবজেক্টে প্রক্সি সেটিংস সংজ্ঞায়িত করা হয়। Chrome-এর প্রক্সি সেটিংসের উপর নির্ভর করে, সেটিংসে proxy.ProxyRules বা proxy.PacScript থাকতে পারে।

প্রক্সি মোড

ProxyConfig অবজেক্টের mode অ্যাট্রিবিউট, প্রক্সি ব্যবহার সংক্রান্ত Chrome-এর সামগ্রিক আচরণ নির্ধারণ করে। এটি নিম্নলিখিত মান নিতে পারে:

direct
direct মোডে, কোনও প্রক্সি ব্যবহার না করেই সরাসরি সব কানেকশন তৈরি করা হয়। এই মোডে ProxyConfig অবজেক্টে
কোনও প্যারামিটার যোগ করা যায় না।
auto_detect
auto_detect মোডে প্রক্সি কনফিগারেশন একটি PAC স্ক্রিপ্ট দ্বারা নির্ধারিত হয় যা http://wpad/wpad.dat থেকে ডাউনলোড করা যেতে পারে। এই মোডে ProxyConfig অবজেক্টে
আর কোনও প্যারামিটার ব্যবহার করা যায় না।
pac_script
pac_script মোডে, প্রক্সি কনফিগারেশন একটি PAC স্ক্রিপ্ট দ্বারা নির্ধারিত হয় যা proxy.PacScript অবজেক্টে নির্দিষ্ট করা URL থেকে রিট্রিভ করা হয় অথবা 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-এর সাবসেট থাকতে পারে।

প্রথম ক্ষেত্রে, HTTP, HTTPS ও FTP ট্রাফিক নির্দিষ্ট প্রক্সি সার্ভারের মাধ্যমে প্রক্সি করা হয়। অন্যান্য ট্রাফিক সরাসরি পাঠানো হয়। পরের ক্ষেত্রে আচরণটি কিছুটা বেশি সূক্ষ্ম: HTTP, HTTPS বা FTP প্রোটোকলের জন্য কোনও প্রক্সি সার্ভার কনফিগার করা থাকলে, সংশ্লিষ্ট ট্রাফিক নির্দিষ্ট সার্ভারের মাধ্যমে প্রক্সি করা হয়। এই ধরনের কোনও প্রক্সি সার্ভার নির্দিষ্ট করা না থাকলে অথবা ট্রাফিক যদি HTTP, HTTPS বা FTP-এর থেকে আলাদা কোনও প্রোটোকল ব্যবহার করে, তাহলে fallbackProxy ব্যবহার করা হয়। কোনও fallbackProxy নির্দিষ্ট করা না থাকলে, প্রক্সি সার্ভার ছাড়াই সরাসরি ট্রাফিক পাঠানো হয়।

প্রক্সি সার্ভার অবজেক্ট

proxy.ProxyServer অবজেক্টে প্রক্সি সার্ভার কনফিগার করা হয়। প্রক্সি সার্ভারের সাথে কানেকশন (host অ্যাট্রিবিউট দ্বারা সংজ্ঞায়িত) scheme অ্যাট্রিবিউটে সংজ্ঞায়িত প্রোটোকল ব্যবহার করে। কোনও scheme উল্লেখ করা না থাকলে, প্রক্সি কানেকশন ডিফল্ট হিসেবে http হবে।

proxy.ProxyServer অবজেক্টে কোনও port নির্দিষ্ট করা না থাকলে, স্কিম থেকে পোর্ট নেওয়া হয়। ডিফল্ট পোর্টগুলি হল:

স্কিমপোর্ট
http৮০
https443
socks41080
socks51080

বাইপাস তালিকা

bypassList-এর মাধ্যমে প্রক্সি করা থেকে আলাদা আলাদা সার্ভার বাদ দেওয়া হতে পারে। এই তালিকায় নিম্নলিখিত এন্ট্রি থাকতে পারে:

[SCHEME://]HOST_PATTERN[:PORT]

HOST_PATTERN প্যাটার্নের সাথে মিলে যাওয়া সব হোস্টনেম ম্যাচ করে। শুরুতে থাকা "."-কে "*." হিসেবে ব্যাখ্যা করা হয়।

উদাহরণ: "foobar.com", "*foobar.com", "*.foobar.com", "*foobar.com:99", "https://x.*.y.com:99".

প্যাটার্নম্যাচনা মেলা URL
".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 অ্যাড্রেস লিটেরাল URL-এর সাথে ম্যাচ করে। ধারণাগতভাবে এটি প্রথম কেসের মতোই, তবে 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) আছে এমন যেকোনও URL-এর সাথে ম্যাচ করে। IP রেঞ্জ (PREFIX_LENGTH_IN_BITS) CIDR notation ব্যবহার করে নির্দিষ্ট করা হয়।

প্রদত্ত রেঞ্জের মধ্যে IP লিটেরাল আছে এমন যেকোনও URL ম্যাচ করে। IP রেঞ্জ CIDR নোটেশন ব্যবহার করে নির্দিষ্ট করা হয়। উদাহরণ: "192.168.1.1/16", "fefe:13::abc/33"

<local>

লিটারেল স্ট্রিং <local> সাধারণ হোস্টনেমের সাথে ম্যাচ করে। সহজ হোস্টনেম হল এমন একটি নাম যাতে কোনও ডট থাকে না এবং এটি কোনও IP লিটেরাল নয়। যেমন, example ও localhost হল সাধারণ হোস্টনেম, কিন্তু example.com, example. ও [::1] তা নয়।

উদাহরণ: "<local>"

উদাহরণ

নিচের কোডটি foobar.com ছাড়া সব সার্ভারের সাথে HTTP কানেকশনের জন্য SOCKS 5 প্রক্সি সেট করে এবং অন্যান্য সব প্রোটোকলের জন্য সরাসরি কানেকশন ব্যবহার করে। এই সেটিংস সাধারণ ও ছদ্মবেশী উইন্ডো, দু'টির ক্ষেত্রেই প্রযোজ্য হয়, কারণ ছদ্মবেশী উইন্ডো সাধারণ উইন্ডো থেকে সেটিংস পায়। এছাড়াও, 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));
  }
);

মনে রাখবেন, set()-এ পাস করা value অবজেক্টটি get()-এর কলব্যাক ফাংশনে পাস করা value অবজেক্টের মতো নয়। পরেরটিতে একটি rules.proxyForHttp.port এলিমেন্ট থাকবে।

ধরন

Mode

Chrome 54+

Enum

"সরাসরি"

"auto_detect"

"pac_script"

"fixed_servers"

"সিস্টেম"

PacScript

প্রক্সি অটো-কনফিগার সংক্রান্ত তথ্য সহ একটি অবজেক্ট। ফিল্ডগুলির মধ্যে ঠিক একটিতে কিছু লিখতে হবে।

প্রপার্টি

  • ডেটা

    স্ট্রিং ঐচ্ছিক

    একটি PAC স্ক্রিপ্ট।

  • বাধ্যতামূলক

    বুলিয়ান ঐচ্ছিক

    সত্য হলে, ভুল PAC স্ক্রিপ্ট নেটওয়ার্ক স্ট্যাককে সরাসরি কানেকশনে ফলব্যাক করতে বাধা দেবে। ডিফল্ট হিসেবে false থাকে।

  • URL

    স্ট্রিং ঐচ্ছিক

    ব্যবহার করা হবে এমন PAC ফাইলের URL.

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

    string[] ঐচ্ছিক

    প্রক্সি সার্ভার ছাড়া কানেক্ট করার জন্য সার্ভারের তালিকা।

  • fallbackProxy

    ProxyServer ঐচ্ছিক

    অন্য সবকিছুর জন্য বা নির্দিষ্ট proxyFor... উল্লেখ করা না থাকলে ব্যবহার করা হবে এমন প্রক্সি সার্ভার।

  • proxyForFtp

    ProxyServer ঐচ্ছিক

    FTP অনুরোধের জন্য ব্যবহার করা প্রক্সি সার্ভার।

  • proxyForHttp

    ProxyServer ঐচ্ছিক

    HTTP অনুরোধের জন্য ব্যবহার করা প্রক্সি সার্ভার।

  • proxyForHttps

    ProxyServer ঐচ্ছিক

    HTTPS অনুরোধের জন্য ব্যবহার করা প্রক্সি সার্ভার।

  • singleProxy

    ProxyServer ঐচ্ছিক

    প্রতিটি URL-এর অনুরোধের জন্য (যেমন, http, https ও ftp) ব্যবহার করা হবে এমন প্রক্সি সার্ভার।

ProxyServer

একটি অবজেক্ট যা একটি প্রক্সি সার্ভারের স্পেসিফিকেশনকে এনক্যাপসুলেট করে।

প্রপার্টি

  • হোস্ট

    স্ট্রিং

    প্রক্সি সার্ভারের হোস্টনেম বা IP অ্যাড্রেস। হোস্টনেম অবশ্যই 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 রানটাইম সমস্যার মতো সমস্যা সম্পর্কিত অতিরিক্ত বিবরণ।

      • সমস্যা

        স্ট্রিং

        সমস্যার বিবরণ।

      • মারাত্মক

        বুলিয়ান

        ট্রু হলে, সমস্যাটি গুরুতর এবং নেটওয়ার্ক ট্রানজ্যাকশন বাতিল করা হয়েছে। অন্যথায়, এর পরিবর্তে সরাসরি কানেকশন ব্যবহার করা হয়।