বর্ণনা
chrome.events
নেমস্পেসে এমন সাধারণ ধরন রয়েছে যা API-এর দ্বারা ব্যবহৃত ইভেন্টগুলি প্রেরণ করে যখন আকর্ষণীয় কিছু ঘটে তখন আপনাকে অবহিত করতে।
ধারণা এবং ব্যবহার
একটি Event
হল এমন একটি বস্তু যা আকর্ষণীয় কিছু ঘটলে আপনাকে অবহিত করতে দেয়। এখানে chrome.alarms.onAlarm
ইভেন্ট ব্যবহার করার একটি উদাহরণ দেওয়া হল যখনই একটি অ্যালার্ম অতিবাহিত হয় তখনই সূচিত হয়:
chrome.alarms.onAlarm.addListener((alarm) => {
appendToLog(`alarms.onAlarm -- name: ${alarm.name}, scheduledTime: ${alarm.scheduledTime}`);
});
উদাহরণ দেখায়, আপনি addListener()
ব্যবহার করে বিজ্ঞপ্তির জন্য নিবন্ধন করেন। addListener()
এর আর্গুমেন্টটি সর্বদা একটি ফাংশন যা আপনি ইভেন্টটি পরিচালনা করার জন্য সংজ্ঞায়িত করেন, তবে ফাংশনের পরামিতিগুলি আপনি কোন ইভেন্টটি পরিচালনা করছেন তার উপর নির্ভর করে। alarms.onAlarm
এর জন্য ডকুমেন্টেশন চেক করলে, আপনি দেখতে পাবেন যে ফাংশনটির একটি একক প্যারামিটার রয়েছে: একটি alarms.Alarm
অবজেক্ট যা অতিবাহিত অ্যালার্ম সম্পর্কে বিশদ রয়েছে।
ইভেন্ট ব্যবহার করে উদাহরণ API: অ্যালার্ম , i18n , পরিচয় , রানটাইম । বেশিরভাগ ক্রোম এপিআই করে।
ঘোষণামূলক ইভেন্ট হ্যান্ডলার
ঘোষণামূলক ইভেন্ট হ্যান্ডলাররা ঘোষণামূলক শর্ত এবং কর্মের সমন্বয়ে নিয়মগুলি সংজ্ঞায়িত করার একটি উপায় প্রদান করে। শর্তাবলী জাভাস্ক্রিপ্ট ইঞ্জিনের পরিবর্তে ব্রাউজারে মূল্যায়ন করা হয় যা রাউন্ডট্রিপ লেটেন্সি হ্রাস করে এবং খুব উচ্চ দক্ষতার জন্য অনুমতি দেয়।
ডিক্লারেটিভ ইভেন্ট হ্যান্ডলার ব্যবহার করা হয় উদাহরণ স্বরূপ ডিক্লারেটিভ কনটেন্ট এপিআই- এ। এই পৃষ্ঠাটি সমস্ত ঘোষণামূলক ইভেন্ট হ্যান্ডলারের অন্তর্নিহিত ধারণাগুলি বর্ণনা করে।
নিয়ম
সহজতম সম্ভাব্য নিয়ম এক বা একাধিক শর্ত এবং এক বা একাধিক ক্রিয়া নিয়ে গঠিত:
const rule = {
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
শর্তগুলির মধ্যে যেকোনটি পূরণ করা হলে, সমস্ত কর্ম সম্পাদন করা হয়।
শর্তাবলী এবং ক্রিয়াগুলি ছাড়াও আপনি প্রতিটি নিয়মকে একটি শনাক্তকারী দিতে পারেন, যা পূর্বে নিবন্ধিত নিয়মগুলিকে নিবন্ধনমুক্ত করাকে সহজ করে এবং নিয়মগুলির মধ্যে অগ্রাধিকারগুলিকে সংজ্ঞায়িত করার জন্য অগ্রাধিকার দেয়৷ যদি নিয়ম একে অপরের সাথে সাংঘর্ষিক হয় বা একটি নির্দিষ্ট ক্রমে কার্যকর করার প্রয়োজন হয় তবেই অগ্রাধিকারগুলি বিবেচনা করা হয়। ক্রিয়াগুলি তাদের নিয়মের অগ্রাধিকারের ক্রমানুসারে সম্পাদিত হয়।
const rule = {
id: "my rule", // optional, will be generated if not set.
priority: 100, // optional, defaults to 100.
conditions: [ /* my conditions */ ],
actions: [ /* my actions */ ]
};
ঘটনা বস্তু
ইভেন্ট অবজেক্ট নিয়ম সমর্থন করতে পারে. এই ইভেন্ট অবজেক্টগুলি ইভেন্টগুলি ঘটলে কলব্যাক ফাংশনকে কল করে না তবে কোনও নিবন্ধিত নিয়মে কমপক্ষে একটি পূর্ণ শর্ত রয়েছে কিনা তা পরীক্ষা করে এবং এই নিয়মের সাথে যুক্ত ক্রিয়াগুলি সম্পাদন করে। ঘোষণামূলক API সমর্থনকারী ইভেন্ট অবজেক্টের তিনটি প্রাসঙ্গিক পদ্ধতি রয়েছে: events.Event.addRules()
, events.Event.removeRules()
, এবং events.Event.getRules()
।
নিয়ম যোগ করুন
নিয়ম যোগ করতে ইভেন্ট অবজেক্টের addRules()
ফাংশনকে কল করুন। এটির প্রথম পরামিতি হিসাবে নিয়ম দৃষ্টান্তগুলির একটি অ্যারে লাগে এবং একটি কলব্যাক ফাংশন যা সমাপ্তিতে বলা হয়।
const rule_list = [rule1, rule2, ...];
addRules(rule_list, (details) => {...});
নিয়মগুলি সফলভাবে সন্নিবেশ করা হলে, details
প্যারামিটারে ঢোকানো নিয়মগুলির একটি অ্যারে থাকে যা পাস করা rule_list
মতো একই ক্রমে প্রদর্শিত হয় যেখানে ঐচ্ছিক পরামিতি id
এবং priority
জেনারেট করা মান দিয়ে পূর্ণ হয়। যদি কোনো নিয়ম অবৈধ হয়, উদাহরণস্বরূপ, কারণ এটিতে একটি অবৈধ শর্ত বা ক্রিয়া রয়েছে, কোনো নিয়ম যোগ করা হয় না এবং কলব্যাক ফাংশন কল করা হলে runtime.lastError ভেরিয়েবল সেট করা হয়। rule_list
প্রতিটি নিয়মে একটি অনন্য শনাক্তকারী থাকতে হবে যা ইতিমধ্যে অন্য নিয়ম বা খালি শনাক্তকারী দ্বারা ব্যবহৃত হয় না।
নিয়ম সরান
নিয়ম অপসারণ করতে removeRules()
ফাংশন কল করুন। এটি প্রথম প্যারামিটার হিসাবে নিয়ম শনাক্তকারীর একটি ঐচ্ছিক অ্যারে এবং দ্বিতীয় প্যারামিটার হিসাবে একটি কলব্যাক ফাংশন গ্রহণ করে।
const rule_ids = ["id1", "id2", ...];
removeRules(rule_ids, () => {...});
rule_ids
শনাক্তকারীর একটি অ্যারে হলে, অ্যারেতে তালিকাভুক্ত শনাক্তকারী থাকা সমস্ত নিয়ম সরানো হয়। যদি rule_ids
একটি শনাক্তকারীকে তালিকাভুক্ত করে, যা অজানা, এই শনাক্তকারীটি নীরবে উপেক্ষা করা হয়। rule_ids
undefined
থাকলে, এই এক্সটেনশনের সমস্ত নিবন্ধিত নিয়ম মুছে ফেলা হয়। নিয়মগুলি সরানো হলে callback()
ফাংশনটি বলা হয়।
নিয়ম পুনরুদ্ধার
নিবন্ধিত নিয়মগুলির একটি তালিকা পুনরুদ্ধার করতে, getRules()
ফাংশনটি কল করুন। এটি removeRules()
এবং একটি কলব্যাক ফাংশনের মত একই শব্দার্থবিদ্যা সহ নিয়ম শনাক্তকারীর একটি ঐচ্ছিক বিন্যাস গ্রহণ করে।
const rule_ids = ["id1", "id2", ...];
getRules(rule_ids, (details) => {...});
callback()
ফাংশনে পাস করা details
প্যারামিটারটি ভরা ঐচ্ছিক পরামিতি সহ নিয়মের একটি অ্যারে বোঝায়।
কর্মক্ষমতা
সর্বাধিক কর্মক্ষমতা অর্জন করতে, আপনাকে নিম্নলিখিত নির্দেশিকাগুলি মনে রাখা উচিত।
বাল্ক নিয়ম নিবন্ধন এবং আননিবন্ধন. প্রতিটি রেজিস্ট্রেশন বা রেজিস্ট্রেশনের পরে, Chrome-এর অভ্যন্তরীণ ডেটা স্ট্রাকচার আপডেট করতে হবে। এই আপডেট একটি ব্যয়বহুল অপারেশন.
const rule1 = {...}; const rule2 = {...}; chrome.declarativeWebRequest.onRequest.addRules([rule1]); chrome.declarativeWebRequest.onRequest.addRules([rule2]);
const rule1 = {...}; const rule2 = {...}; chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
একটি ইভেন্টে রেগুলার এক্সপ্রেশনের চেয়ে সাবস্ট্রিং ম্যাচিং পছন্দ করুন।UrlFilter। সাবস্ট্রিং ভিত্তিক ম্যাচিং অত্যন্ত দ্রুত।
const match = new chrome.declarativeWebRequest.RequestMatcher({ url: {urlMatches: "example.com/[^?]*foo" } });
const match = new chrome.declarativeWebRequest.RequestMatcher({ url: {hostSuffix: "example.com", pathContains: "foo"} });
যদি একই ক্রিয়াগুলি ভাগ করে এমন অনেকগুলি নিয়ম থাকে তবে নিয়মগুলিকে একটিতে একত্রিত করুন৷ নিয়মগুলি একটি শর্ত পূরণ হওয়ার সাথে সাথে তাদের ক্রিয়াকলাপ ট্রিগার করে। এটি মিলের গতি বাড়ায় এবং ডুপ্লিকেট অ্যাকশন সেটের জন্য মেমরি খরচ হ্রাস করে।
const condition1 = new chrome.declarativeWebRequest.RequestMatcher({ url: { hostSuffix: 'example.com' } }); const condition2 = new chrome.declarativeWebRequest.RequestMatcher({ url: { hostSuffix: 'foobar.com' } }); const rule1 = { conditions: [condition1], actions: [new chrome.declarativeWebRequest.CancelRequest()] }; const rule2 = { conditions: [condition2], actions: [new chrome.declarativeWebRequest.CancelRequest()] }; chrome.declarativeWebRequest.onRequest.addRules([rule1, rule2]);
const condition1 = new chrome.declarativeWebRequest.RequestMatcher({ url: { hostSuffix: 'example.com' } }); const condition2 = new chrome.declarativeWebRequest.RequestMatcher({ url: { hostSuffix: 'foobar.com' } }); const rule = { conditions: [condition1, condition2], actions: [new chrome.declarativeWebRequest.CancelRequest()] }; chrome.declarativeWebRequest.onRequest.addRules([rule]);
ফিল্টার করা ঘটনা
ফিল্টার করা ইভেন্টগুলি এমন একটি প্রক্রিয়া যা শ্রোতাদের তাদের আগ্রহের ইভেন্টগুলির একটি উপসেট নির্দিষ্ট করতে দেয়৷ ফিল্টার ব্যবহার করে এমন একটি শ্রোতাকে ইভেন্টের জন্য আহ্বান করা হবে না যা ফিল্টারটি পাস করে না, যা শোনার কোডটিকে আরও ঘোষণামূলক এবং দক্ষ করে তোলে . একজন পরিষেবা কর্মীকে এমন ইভেন্টগুলি পরিচালনা করার জন্য জাগ্রত করা উচিত নয় যা এটিকে গুরুত্ব দেয় না।
ফিল্টার করা ইভেন্টগুলি ম্যানুয়াল ফিল্টারিং কোড থেকে একটি ট্রানজিশনের অনুমতি দেওয়ার উদ্দেশ্যে করা হয়েছে৷
chrome.webNavigation.onCommitted.addListener((event) => { if (hasHostSuffix(event.url, 'google.com') || hasHostSuffix(event.url, 'google.com.au')) { // ... } });
chrome.webNavigation.onCommitted.addListener((event) => { // ... }, {url: [{hostSuffix: 'google.com'}, {hostSuffix: 'google.com.au'}]});
ইভেন্টগুলি নির্দিষ্ট ফিল্টার সমর্থন করে যা সেই ইভেন্টের জন্য অর্থপূর্ণ। একটি ইভেন্ট সমর্থন করে এমন ফিল্টারগুলির তালিকা "ফিল্টার" বিভাগে সেই ইভেন্টের জন্য ডকুমেন্টেশনে তালিকাভুক্ত করা হবে।
ইউআরএল-এর সাথে মিলে যাওয়ার সময় (উপরের উদাহরণের মতো), ইভেন্ট ফিল্টার একই ইউআরএল ম্যাচিং ক্ষমতাকে সমর্থন করে যা events.UrlFilter
সাথে প্রকাশযোগ্য। UrlFilter, স্কিম এবং পোর্ট ম্যাচিং ছাড়া।
প্রকারভেদ
Event
একটি বস্তু যা একটি Chrome ইভেন্টের জন্য শ্রোতাদের যোগ এবং অপসারণের অনুমতি দেয়।
বৈশিষ্ট্য
- অ্যাডলিসনার
অকার্যকর
একটি ইভেন্ট শ্রোতা কলব্যাক একটি ইভেন্ট নিবন্ধন.
addListener
ফাংশনটি দেখতে এরকম দেখাচ্ছে:(callback: H) => {...}
- কলব্যাক
এইচ
কোনো ঘটনা ঘটলে ডাকা হয়। এই ফাংশনের প্যারামিটারগুলি ইভেন্টের ধরণের উপর নির্ভর করে।
- নিয়ম যোগ করুন
অকার্যকর
ঘটনা পরিচালনা করার নিয়ম নিবন্ধন করে।
addRules
ফাংশন এর মত দেখাচ্ছে: [], callback?: function) => {...}(rules: Rule<anyany>
- getRules
অকার্যকর
রিটার্ন বর্তমানে নিবন্ধিত নিয়ম.
getRules
ফাংশন এর মত দেখাচ্ছে:(ruleIdentifiers?: string[], callback: function) => {...}
- আছে লিসেনার
অকার্যকর
hasListener
ফাংশন এর মত দেখাচ্ছে:(callback: H) => {...}
- কলব্যাক
এইচ
শ্রোতা যার নিবন্ধন অবস্থা পরীক্ষা করা হবে.
- রিটার্ন
বুলিয়ান
ইভেন্টে কলব্যাক নিবন্ধিত হলে সত্য।
- আছে শ্রোতা
অকার্যকর
hasListeners
ফাংশন এর মত দেখাচ্ছে:() => {...}
- রিটার্ন
বুলিয়ান
সত্য যদি কোনো অনুষ্ঠান শ্রোতা ইভেন্টে নিবন্ধিত হয়.
- রিমুভ লিসনার
অকার্যকর
একটি ইভেন্ট থেকে একটি ইভেন্ট লিসেনার কলব্যাক ডিরেজিস্টার করে।
removeListener
ফাংশনটি দেখতে এরকম দেখাচ্ছে:(callback: H) => {...}
- কলব্যাক
এইচ
শ্রোতা যে অনিবন্ধিত হবে.
- রিমুভ করার নিয়ম
অকার্যকর
অনিবন্ধিত বর্তমানে নিবন্ধিত নিয়ম.
removeRules
ফাংশনটি দেখতে এরকম দেখাচ্ছে:(ruleIdentifiers?: string[], callback?: function) => {...}
- নিয়ম শনাক্তকারী
স্ট্রিং[] ঐচ্ছিক
যদি একটি অ্যারে পাস করা হয়, শুধুমাত্র এই অ্যারেতে থাকা শনাক্তকারীর নিয়মগুলি নিবন্ধনহীন থাকে৷
- কলব্যাক
ফাংশন ঐচ্ছিক
callback
প্যারামিটারটি এর মতো দেখাচ্ছে:() => void
Rule
ঘটনা পরিচালনার জন্য একটি ঘোষণামূলক নিয়মের বর্ণনা।
বৈশিষ্ট্য
- কর্ম
যেকোনো []
কোনো একটি শর্ত পূরণ হলে ট্রিগার করা কর্মের তালিকা।
- শর্তাবলী
যেকোনো []
ক্রিয়াগুলিকে ট্রিগার করতে পারে এমন অবস্থার তালিকা৷
- আইডি
স্ট্রিং ঐচ্ছিক
ঐচ্ছিক শনাক্তকারী যা এই নিয়ম উল্লেখ করার অনুমতি দেয়।
- অগ্রাধিকার
সংখ্যা ঐচ্ছিক
এই নিয়মের ঐচ্ছিক অগ্রাধিকার। ডিফল্ট 100।
- ট্যাগ
স্ট্রিং[] ঐচ্ছিক
ট্যাগগুলি নিয়মগুলি টীকা করতে এবং নিয়মগুলির সেটগুলিতে ক্রিয়াকলাপ সম্পাদন করতে ব্যবহার করা যেতে পারে।
UrlFilter
বিভিন্ন মানদণ্ডের জন্য ইউআরএল ফিল্টার করে। ইভেন্ট ফিল্টারিং দেখুন। সমস্ত মানদণ্ড কেস সংবেদনশীল।
বৈশিষ্ট্য
- cidrBlocks
স্ট্রিং[] ঐচ্ছিক
Chrome 123+যদি URL-এর হোস্ট অংশটি একটি IP ঠিকানা হয় এবং অ্যারেতে নির্দিষ্ট করা যেকোনো CIDR ব্লকের মধ্যে থাকে তাহলে মেলে।
- হোস্ট ধারণ করে
স্ট্রিং ঐচ্ছিক
ইউআরএল-এর হোস্ট নামের একটি নির্দিষ্ট স্ট্রিং থাকলে মেলে। হোস্ট নামের কম্পোনেন্টে 'foo' উপসর্গ আছে কিনা তা পরীক্ষা করতে, hostContains: '.foo' ব্যবহার করুন। এটি 'www.foobar.com' এবং 'foo.com'-এর সাথে মেলে, কারণ হোস্ট নামের শুরুতে একটি অন্তর্নিহিত বিন্দু যোগ করা হয়েছে। একইভাবে, hostContains ব্যবহার করা যেতে পারে কম্পোনেন্ট সাফিক্স ('foo.') এর সাথে মেলে এবং কম্পোনেন্টের সাথে হুবহু মেলে ('.foo.')। হোস্টসাফিক্স ব্যবহার করে শেষ উপাদানগুলির জন্য প্রত্যয়- এবং সঠিক-ম্যাচিং আলাদাভাবে করা দরকার, কারণ হোস্টের নামের শেষে কোনও অন্তর্নিহিত বিন্দু যোগ করা হয় না।
- হোস্ট সমান
স্ট্রিং ঐচ্ছিক
ইউআরএল-এর হোস্টের নাম নির্দিষ্ট স্ট্রিংয়ের সমান হলে মেলে।
- হোস্টপ্রিফিক্স
স্ট্রিং ঐচ্ছিক
ইউআরএল-এর হোস্ট নাম একটি নির্দিষ্ট স্ট্রিং দিয়ে শুরু হলে মেলে।
- হোস্টসাফিক্স
স্ট্রিং ঐচ্ছিক
URL-এর হোস্টের নাম নির্দিষ্ট স্ট্রিং দিয়ে শেষ হলে মেলে।
- originAndPathMatchs
স্ট্রিং ঐচ্ছিক
যদি ক্যোয়ারী সেগমেন্ট এবং ফ্র্যাগমেন্ট আইডেন্টিফায়ার ছাড়া ইউআরএল একটি নির্দিষ্ট রেগুলার এক্সপ্রেশনের সাথে মেলে তাহলে মেলে। পোর্ট নম্বরগুলি যদি ডিফল্ট পোর্ট নম্বরের সাথে মেলে তবে URL থেকে ছিনিয়ে নেওয়া হয়৷ রেগুলার এক্সপ্রেশন RE2 সিনট্যাক্স ব্যবহার করে।
- পথ ধারণ করে
স্ট্রিং ঐচ্ছিক
URL-এর পাথ সেগমেন্টে একটি নির্দিষ্ট স্ট্রিং থাকলে মেলে।
- পথ সমান
স্ট্রিং ঐচ্ছিক
URL এর পাথ সেগমেন্ট একটি নির্দিষ্ট স্ট্রিং এর সমান হলে মেলে।
- পথ উপসর্গ
স্ট্রিং ঐচ্ছিক
URL-এর পাথ সেগমেন্ট একটি নির্দিষ্ট স্ট্রিং দিয়ে শুরু হলে মেলে।
- pathSuffix
স্ট্রিং ঐচ্ছিক
URL এর পাথ সেগমেন্ট একটি নির্দিষ্ট স্ট্রিং দিয়ে শেষ হলে মেলে।
- বন্দর
(সংখ্যা | সংখ্যা[])[] ঐচ্ছিক
URL-এর পোর্টটি নির্দিষ্ট পোর্ট তালিকার যেকোন একটিতে থাকলে মেলে। উদাহরণস্বরূপ
[80, 443, [1000, 1200]]
পোর্ট 80, 443 এবং 1000-1200 রেঞ্জের সমস্ত অনুরোধের সাথে মেলে। - query ধারণ করে
স্ট্রিং ঐচ্ছিক
URL-এর ক্যোয়ারী সেগমেন্টে একটি নির্দিষ্ট স্ট্রিং থাকলে মেলে।
- প্রশ্ন সমান
স্ট্রিং ঐচ্ছিক
URL এর ক্যোয়ারী সেগমেন্ট একটি নির্দিষ্ট স্ট্রিং এর সমান হলে মেলে।
- queryPrefix
স্ট্রিং ঐচ্ছিক
URL-এর ক্যোয়ারী সেগমেন্ট একটি নির্দিষ্ট স্ট্রিং দিয়ে শুরু হলে মেলে।
- querySuffix
স্ট্রিং ঐচ্ছিক
ইউআরএল-এর ক্যোয়ারী সেগমেন্ট একটি নির্দিষ্ট স্ট্রিং দিয়ে শেষ হলে মেলে।
- স্কিম
স্ট্রিং[] ঐচ্ছিক
ইউআরএল-এর স্কিম অ্যারেতে নির্দিষ্ট করা যেকোনো স্কিমের সমান হলে মেলে।
- url ধারণ করে
স্ট্রিং ঐচ্ছিক
ইউআরএলে (ফ্র্যাগমেন্ট শনাক্তকারী ছাড়া) একটি নির্দিষ্ট স্ট্রিং থাকলে মেলে। পোর্ট নম্বরগুলি যদি ডিফল্ট পোর্ট নম্বরের সাথে মেলে তবে URL থেকে ছিনিয়ে নেওয়া হয়৷
- urlEquals
স্ট্রিং ঐচ্ছিক
ইউআরএল (ফ্র্যাগমেন্ট শনাক্তকারী ছাড়া) একটি নির্দিষ্ট স্ট্রিংয়ের সমান হলে মেলে। পোর্ট নম্বরগুলি যদি ডিফল্ট পোর্ট নম্বরের সাথে মেলে তবে URL থেকে ছিনিয়ে নেওয়া হয়৷
- url ম্যাচ
স্ট্রিং ঐচ্ছিক
ইউআরএল (ফ্র্যাগমেন্ট শনাক্তকারী ছাড়া) একটি নির্দিষ্ট রেগুলার এক্সপ্রেশনের সাথে মিলে গেলে মেলে। পোর্ট নম্বরগুলি যদি ডিফল্ট পোর্ট নম্বরের সাথে মেলে তবে URL থেকে ছিনিয়ে নেওয়া হয়৷ রেগুলার এক্সপ্রেশন RE2 সিনট্যাক্স ব্যবহার করে।
- urlPrefix
স্ট্রিং ঐচ্ছিক
ইউআরএল (ফ্র্যাগমেন্ট শনাক্তকারী ছাড়া) একটি নির্দিষ্ট স্ট্রিং দিয়ে শুরু হলে মেলে। পোর্ট নম্বরগুলি যদি ডিফল্ট পোর্ট নম্বরের সাথে মেলে তবে URL থেকে ছিনিয়ে নেওয়া হয়৷
- urlSuffix
স্ট্রিং ঐচ্ছিক
ইউআরএল (ফ্র্যাগমেন্ট শনাক্তকারী ছাড়া) একটি নির্দিষ্ট স্ট্রিং দিয়ে শেষ হলে মেলে। পোর্ট নম্বরগুলি যদি ডিফল্ট পোর্ট নম্বরের সাথে মেলে তবে URL থেকে ছিনিয়ে নেওয়া হয়৷