ลงทะเบียนตัวรับฟังการตรวจสอบสิทธิ์พร็อกซี Chrome MV3 หนึ่งตัวสำหรับการสลับโปรไฟล์
ลงทะเบียนตัวรับฟังการตรวจสอบสิทธิ์ Manifest V3 อย่างซิงโครนัสและอ่านบัญชีพร็อกซีปัจจุบันภายในคอลแบ็กของเหตุการณ์
การสลับโปรไฟล์พร็อกซีควรเปลี่ยนบัญชีที่เลือก ไม่ใช่เพิ่มตัวรับฟัง onAuthRequired อีกตัว มิฉะนั้น closures เก่าอาจตอบกลับด้วยบัญชีจากการเลือกครั้งก่อนต่อไป
ลงทะเบียนตัวรับฟังที่มีชื่อหนึ่งตัวที่ระดับบนสุดของ service worker อ่านบัญชีปัจจุบันเมื่อมีเหตุการณ์เข้ามา:
function answerProxyChallenge(details, reply) {
if (!details.isProxy) {
reply({});
return;
}
chrome.storage.session.get('selectedProxy').then(({selectedProxy: p}) => {
if (!p || details.challenger.host !== p.host ||
details.challenger.port !== p.port) {
reply({});
return;
}
reply({authCredentials: {username: p.username, password: p.password}});
}).catch(() => reply({cancel: true}));
}
chrome.webRequest.onAuthRequired.addListener(
answerProxyChallenge,
{urls: ['<all_urls>']},
['asyncBlocking'],
);ส่วนย่อยนี้ถือว่าส่วนขยายเก็บพร็อกซี HTTP ที่เลือกไว้แล้วภายใต้ selectedProxy พร้อมพอร์ตที่เป็นตัวเลขและบัญชีที่ตั้งใจไว้ แมนิเฟสต์ต้องมี webRequest, webRequestAuthProvider, storage และสิทธิ์โฮสต์ที่จำเป็น การเลือกพร็อกซีเองก็ต้องมีสิทธิ์ proxy ด้วย
การลงทะเบียนเกิดขึ้นแบบซิงโครนัส ที่เก็บข้อมูลถูกอ่านภายในคอลแบ็ก หลังจากที่ Chrome มีตัวรับฟังที่ติดตั้งไว้ให้ส่งถึง การลงทะเบียนหลังสัญญาณ storage เริ่มต้นได้รับการแก้ไขเท่านั้นจะสร้างช่องว่างการตื่น
เพิ่มขีดจำกัดการปฏิเสธก่อนเผยแพร่
ส่วนย่อยแสดงการลงทะเบียนและการเลือกบัญชี เพิ่มบันทึกการลองใหม่แบบจำกัดสำหรับแต่ละคำขอ เพื่อไม่ให้รหัสผ่านที่ถูกปฏิเสธถูกส่งซ้ำไม่สิ้นสุด ล้างบันทึกนั้นเมื่อเสร็จหรือล้มเหลว ตัวแปรโกลบอลของ worker อาจหายไปเมื่อ worker หยุด ดังนั้นเก็บสถานะที่จำเป็นระหว่างการตื่นไว้ในพื้นที่เก็บข้อมูลของส่วนขยายที่เหมาะสม
storage.session อยู่รอดจากการรีสตาร์ต worker ภายในเซสชันเบราว์เซอร์ มันไม่ใช่ที่เก็บบัญชีถาวรระหว่างการรีสตาร์ตเบราว์เซอร์ กำหนดสิ่งที่ส่วนขยายทำเมื่อไม่มีบัญชีที่เลือกไว้
การตรวจสอบ isProxy และ challenger ป้องกันไม่ให้ความท้าทายจากเว็บไซต์ที่ไม่เกี่ยวข้องได้รับบัญชีนี้ หากเบราว์เซอร์ไม่ส่งเหตุการณ์เลย การล้างตัวรับฟังเพียงอย่างเดียวไม่สามารถสร้างมันได้ ตรวจสอบคำขอจริง สิทธิ์ และพฤติกรรมของเบราว์เซอร์แยกกัน