תיאור
אפשר להשתמש ב-chrome.proxy API כדי לנהל את הגדרות לשרת proxy של Chrome. ממשק ה-API הזה מסתמך על אב-טיפוס ChromeSetting מסוג API כדי לקבל ולהגדיר את הגדרות ה-proxy.
הרשאות
proxyמניפסט
כדי להשתמש ב-API של הגדרות שרת proxy, צריך להצהיר על ההרשאה proxy במניפסט של התוסף. לדוגמה:
{
"name": "My extension",
...
"permissions": [
"proxy"
],
...
}
אובייקטים ומאפיינים
הגדרות לשרת proxy מוגדרות באובייקט proxy.ProxyConfig. בהתאם להגדרות לשרת proxy ב-Chrome, יכול להיות שההגדרות יכללו proxy.ProxyRules או proxy.PacScript.
מצבי שרת proxy
המאפיין mode של אובייקט ProxyConfig קובע את ההתנהגות הכוללת של Chrome בנוגע לשימוש ב-proxy. הוא יכול לקבל את הערכים הבאים:
direct- במצב
direct, כל החיבורים נוצרים ישירות, בלי שמעורב שרת proxy. במצב הזה אי אפשר להוסיף פרמטרים לאובייקטProxyConfig. auto_detect- במצב
auto_detectהגדרת ה-Proxy נקבעת על ידי סקריפט PAC שאפשר להוריד בכתובת http://wpad/wpad.dat. במצב הזה אי אפשר להוסיף עוד פרמטרים לאובייקטProxyConfig. pac_script- במצב
pac_script, הגדרת ה-Proxy נקבעת על ידי סקריפט PAC שאוחזר מכתובת ה-URL שצוינה באובייקטproxy.PacScriptאו נלקח באופן מילולי מהרכיבdataשצוין באובייקטproxy.PacScript. בנוסף, במצב הזה אי אפשר להוסיף עוד פרמטרים לאובייקטProxyConfig. fixed_servers
במצב - , הגדרת ה-Proxy מקודדת באובייקט
proxy.ProxyRules.fixed_serversהתיאור של המבנה שלו מופיע במאמר בנושא כללי פרוקסי. בנוסף, במצבfixed_serversאי אפשר להוסיף עוד פרמטרים לאובייקטProxyConfig. system- במצב
system, הגדרת ה-proxy נלקחת ממערכת ההפעלה. במצב הזה אי אפשר להוסיף פרמטרים לאובייקטProxyConfig. שימו לב: מצבsystemשונה מהגדרה של שרת Proxy ללא הגדרות. במקרה האחרון, Chrome חוזר להגדרות המערכת רק אם אף אפשרות של שורת הפקודה לא משפיעה על הגדרת ה-proxy.
כללי Proxy
האובייקט proxy.ProxyRules יכול להכיל מאפיין singleProxy או קבוצת משנה של proxyForHttp, proxyForHttps, proxyForFtp ו-fallbackProxy.
במקרה הראשון, תעבורת הנתונים של HTTP, HTTPS ו-FTP מועברת דרך שרת ה-Proxy שצוין. תנועה אחרת נשלחת ישירות. במקרה האחרון, ההתנהגות קצת יותר מורכבת: אם מוגדר שרת proxy לפרוטוקול HTTP, HTTPS או FTP, התנועה הרלוונטית עוברת דרך שרת ה-proxy שצוין. אם לא מצוין שרת proxy כזה או שהתנועה משתמשת בפרוטוקול שונה מ-HTTP, HTTPS או FTP, נעשה שימוש ב-fallbackProxy. אם לא מציינים fallbackProxy, התעבורה נשלחת ישירות ללא שרת proxy.
אובייקטים של שרתי Proxy
שרת proxy מוגדר באובייקט proxy.ProxyServer. החיבור לשרת ה-proxy (שמוגדר במאפיין host) משתמש בפרוטוקול שמוגדר במאפיין scheme. אם לא מציינים scheme, חיבור ה-proxy מוגדר כברירת מחדל ל-http.
אם לא מוגדר port באובייקט proxy.ProxyServer, היציאה נגזרת מהסכימה.
יציאות ברירת המחדל הן:
| Scheme | יציאה |
|---|---|
| http | 80 |
| https | 443 |
| socks4 | 1080 |
| socks5 | 1080 |
רשימת העקיפה
אפשר להחריג שרתים ספציפיים מהעברת נתונים דרך שרת proxy באמצעות 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]התאמה של כתובות URL שהן כתובות IP מילוליות. מבחינה רעיונית, זה דומה למקרה הראשון, אבל יש מקרים מיוחדים לטיפול בקנוניזציה של כתובות IP. לדוגמה, התאמה ל-[0:0:0::1] זהה להתאמה ל-[::1] כי הקנוניזציה של IPv6 מתבצעת באופן פנימי.
דוגמאות:
127.0.1,[0:0::1],[::1]:80,https://[::1]:443IP_LITERAL/PREFIX_LENGTH_IN_BITSהתאמה לכל כתובת URL שמכילה כתובת IP מילולית (
IP_LITERAL) בטווח הנתון. טווח כתובות ה-IP (PREFIX_LENGTH_IN_BITS) מצוין באמצעות סימון CIDR.התאמה לכל כתובת URL שמכילה כתובת IP מילולית בטווח הנתון. טווח כתובות ה-IP מצוין באמצעות סימון CIDR. דוגמאות:
"192.168.1.1/16", "fefe:13::abc/33"<local>המחרוזת המילולית
<local>תואמת לשמות מארחים פשוטים. שם מארח פשוט הוא שם שלא מכיל נקודות ולא מופיע בו IP מילולי. לדוגמה,exampleו-localhostהם שמות מארחים פשוטים, אבלexample.com,example.ו-[::1]לא.לדוגמה:
"<local>"
דוגמאות
הקוד הבא מגדיר שרת proxy מסוג SOCKS 5 לחיבורי HTTP לכל השרתים מלבד 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() {}
);
הקוד הבא מגדיר סקריפט 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" +
"}"
}
};
chrome.proxy.settings.set(
{value: config, scope: 'regular'},
function() {}
);
בקטע הקוד הבא מתבצעת שאילתה לגבי הגדרות לשרת proxy שבתוקף כרגע. הגדרות לשרת proxy שבתוקף יכולות להיקבע על ידי תוסף אחר או על ידי מדיניות. פרטים נוספים זמינים במסמכי התיעוד של Types API.
chrome.proxy.settings.get(
{'incognito': false},
function(config) {
console.log(JSON.stringify(config));
}
);
שימו לב שהאובייקט value שמועבר אל set() לא זהה לאובייקט value שמועבר אל פונקציית הקריאה החוזרת של get(). האחרון יכיל רכיב rules.proxyForHttp.port.
סוגים
Mode
Enum
"direct"
"auto_detect"
"pac_script"
"fixed_servers"
"system"
PacScript
אובייקט שמכיל מידע על קובץ PAC. אחד מהשדות צריך להיות לא ריק.
מאפיינים
-
נתונים
מחרוזת אופציונלי
סקריפט PAC.
-
חובה
boolean אופציונלי
אם הערך הוא True, סקריפט PAC לא תקין ימנע ממערך הרשת לחזור לחיבורים ישירים. ברירת המחדל היא False.
-
כתובת אתר
מחרוזת אופציונלי
כתובת ה-URL של קובץ ה-PAC שבו רוצים להשתמש.
ProxyConfig
אובייקט שמכיל הגדרת proxy מלאה.
מאפיינים
-
מצב
'direct' = אף פעם לא להשתמש ב-proxy 'auto_detect' = זיהוי אוטומטי של הגדרות לשרת proxy 'pac_script' = שימוש בסקריפט PAC שצוין 'fixed_servers' = ציון שרתי proxy באופן ידני 'system' = שימוש בהגדרות לשרת proxy של המערכת
-
pacScript
PacScript אופציונלי
סקריפט ההגדרה האוטומטית של שרת ה-proxy (PAC) של ההגדרה הזו. משתמשים בזה במצב 'pac_script'.
-
כללים
ProxyRules אופציונלי
כללי ה-proxy שמתארים את ההגדרה הזו. משתמשים בהגדרה הזו במצב fixed_servers.
ProxyRules
אובייקט שמכיל את קבוצת כללי ה-proxy לכל הפרוטוקולים. אפשר להשתמש בערך singleProxy או בחלק מהערכים proxyForHttp, proxyForHttps, proxyForFtp ו-fallbackProxy.
מאפיינים
-
bypassList
string[] אופציונלי
רשימת השרתים שאליהם מתחברים בלי שרת proxy.
-
fallbackProxy
ProxyServer אופציונלי
שרת ה-proxy שישמש לכל שאר הפעולות או אם לא צוין אף אחד משרתי ה-proxy הספציפיים מסוג proxyFor... .
-
proxyForFtp
ProxyServer אופציונלי
שרת ה-proxy שישמש לבקשות FTP.
-
proxyForHttp
ProxyServer אופציונלי
שרת ה-Proxy שישמש לבקשות HTTP.
-
proxyForHttps
ProxyServer אופציונלי
שרת ה-Proxy שישמש לבקשות HTTPS.
-
singleProxy
ProxyServer אופציונלי
שרת ה-proxy שישמש לכל הבקשות לכתובות URL (כלומר http, https ו-ftp).
ProxyServer
אובייקט שמכיל את המפרט של שרת proxy יחיד.
מאפיינים
-
מארח
מחרוזת
שם המארח או כתובת ה-IP של שרת ה-Proxy. שמות המארחים חייבים להיות ב-ASCII (בפורמט Punycode). עדיין אין תמיכה ב-IDNA.
-
ניוד
מספר אופציונלי
היציאה של שרת ה-proxy. ברירת המחדל היא יציאה שתלויה בסכימה.
-
סכמה
סכימה אופציונלי
הסכימה (הפרוטוקול) של שרת ה-proxy עצמו. ברירת המחדל היא 'http'.
Scheme
Enum
"http"
"https"
"quic"
'socks4'
"socks5"
מאפיינים
settings
הגדרות שרת proxy לשימוש. הערך של ההגדרה הזו הוא אובייקט ProxyConfig.
אירועים
onProxyError
chrome.proxy.onProxyError.addListener(
callback: function,
)
התראות על שגיאות בשרת ה-proxy.
פרמטרים
-
callback
פונקציה
הפרמטר
callbackנראה כך:(details: object) => void
-
פרטים
אובייקט
-
פרטים
מחרוזת
פרטים נוספים על השגיאה, כמו שגיאת זמן ריצה של JavaScript.
-
error
מחרוזת
תיאור השגיאה.
-
fatal
בוליאני
אם הערך הוא True, השגיאה הייתה קריטית והעסקה ברשת בוטלה. אחרת, נעשה שימוש בחיבור ישיר.
-
-