יש דרכים שונות להטמיע סינון תוכן ורשתות בתוספים ל-Chrome. המדריך הזה מספק סקירה כללית של יכולות סינון התוכן הזמינות לתוספים, ושל גישות הסינון, הטכניקות וממשקי ה-API השונים שבהם אפשר להשתמש בתוספים ל-Chrome.
סינון בקשות רשת
הדרך העיקרית לסנן בקשות רשת בתוספי Chrome היא באמצעות API של chrome.declarativeNetRequest
. באמצעות Declarative Net Request, מפתחים יכולים לחסום או לשנות בקשות רשת על ידי ציון כללים הצהרתיים. פורמט הכללים של Declarative Net Request מבוסס על היכולות של התחביר של רשימת המסננים, שמשמש את רוב חוסמי המודעות.
הכללים האלה יכולים:
- חסימה של בקשת רשת.
- מומלץ לשדרג את סכימת כתובת ה-URL לסכימה מאובטחת (http ל-https או ws ל-wss).
- הפניה אוטומטית של בקשת רשת.
- משנים את הכותרות של הבקשה או התגובה.
Chrome תומך בכללים בחבילה עם תוסף, וכאלה שמתעדכנים באופן דינמי (למשל בתגובה להגדרה מרחוק או לקלט של משתמשים).
מקבץ כללי סינון יחד עם התוסף
הכללים שכלולים בחבילת התוספים נקראים "כללים סטטיים". הכללים האלה מותקנים ומתעדכנים כאשר תוסף מותקן או משודרג. Chrome מגביל את מספר הכללים הסטטיים שתוסף יכול להצהיר עליהם.
עבור כללים סטטיים של Declarative Net Request, ל-Chrome יש מאגר משותף גלובלי של 300,000 כללים, שקבוצת התוספים המותקנים יכולה להשתמש בו במשותף. בנוסף, לכל הרחבה מובטחת הקצאה של 30,000 כללים סטטיים. לדוגמה, אם למשתמש מותקן רק תוסף אחד לסינון תוכן, התוסף יכול להשתמש ב-330,000 כללים סטטיים של Declarative Net Request. כדי לקבל מושג לגבי מספר הכללים האלה, רשימת המסננים הפופולרית של EasyList, שמשמשת את רוב חוסמי המודעות, כוללת כ-35,000 כללי רשת.
אפשר לארגן את כללי Static Declarative Net Request לפי קבוצות כללים שונות. תוסף יכול לציין עד 100 מערכי כללים סטטיים, וניתן להפעיל עד 50 מערכי כללים אלה בכל פעם.
הוספה של כללי סינון באופן דינמי בזמן הריצה
יש כללים שאי אפשר לכלול בחבילה עם התוסף. במקום זאת, צריך להוסיף את התוספים בזמן הריצה. הכללים האלו נקראים "כללים דינמיים".
בכללי בקשה דינמיים של Declarative Net, ב-Chrome אפשר להוסיף עד 30,000 כללים דינמיים בטוחים לכל תוסף. רוב הכללים נחשבים לכללים בטוחים: block
, allow
, allowAllRequests
או upgradeScheme
. גם אם כלל לא נחשב בטוח (לדוגמה redirect
), עדיין ניתן להוסיף אותם באופן דינמי, אבל עם המגבלה המקסימלית (5,000) – גם במגבלה של 30,000 כללים דינמיים. כדי להמחיש את המצב הזה, 98-99% מהכללים ברשימת הסינון של הרשימה הקלה הם כללים בטוחים.
תוספים לסינון תוכן יכולים להשתמש בכללים סטטיים ודינמיים בהתאמה, כדי לצרף כללי סינון מוכרים לתוסף שלהם, ולעדכן את התוספים בכללי סינון תוכן חדשים מהשרתים שלהם לפי הצורך.
התאמה של כללים על סמך בקשות שתועדו
סביבת הפרסום מתפתחת כל הזמן, וצריך לעדכן את מסנני התוכן בהתאם. שילוב של chrome.webRequest
וכללים דינמיים של Declarative Net Request מאפשר לנתח בקשות לרשת לזיהוי הפרות פוטנציאליות של פרטיות ולחסום אותן בעתיד.
הגישה הבסיסית היא:
- אפשר לנתח בקשות אינטרנט באמצעות ה-API של
chrome.webRequest
ולנסות לזהות באופן אוטומטי בקשות שלא עומדות בדרישות הפרטיות שלכם. למשל, באמצעות למידת מכונה. - יוצרים כלל דינמי של בקשות נטו להצהרה (DAI) לכל בקשה שזוהתה בשלב השני, כדי שבקשות דומות ייחסמו בעתיד.
- (אופציונלי) שולחים חזרה את הכלל של Declarative Net Request [בקשות רשת הצהרה] שזוהו, כדי שניתן יהיה להוסיף אותו בתור כלל סטטי של בקשות נטו של Declarative Net בעדכון הבא של התוסף.
היתרון של גישה זו הוא שהניתוח מתבצע באופן אסינכרוני ולא ישפיע לרעה על ביצועי האתר.
המשתמשים יכולים להגדיר כללי סינון משלהם
כדי לאפשר למשתמשים להגדיר כללים משלהם לסינון תוכן, אפשר לספק בתוסף ממשק משתמש להגדרת מסנן. יש להמיר את הכללים בהגדרת המשתמש האלה לכללי Declarative Net Request ולהוסיף אותם ככללים דינמיים. הכללים האלה ימשיכו להיות זמינים למשתמשים בזמן שהם פועלים באופן קבוע במסגרת סשנים בדפדפן ושדרוגים של תוספים. בגישה הזו, משתמשים יכולים להוסיף עד 30,000 כללים בהתאמה אישית.
סינון רכיבים בדפי אינטרנט
סינון בקשות רשת הוא רק חלק חשוב אחד בסינון תוכן. חשוב נוסף הוא הסרת תוכן לא רצוי ישירות מדפי אינטרנט. לדוגמה, יותר מ-40% מהכללים ברשימת המסננים של easylist מגדירים איך לקוחות צריכים להסתיר רכיבי דף.
אפשר לעשות זאת באמצעות סקריפטים של תוכן. סקריפטים של תוכן פועלים בהקשר של דפי אינטרנט ויכולים לבצע בהם שינויים באמצעות ה-DOM.
לתוספים ל-Chrome אין הרשאה להפעיל קוד באירוח מרוחק. עם זאת, נתונים משרת לגבי הרכיבים שצריך להסתיר לא מושפעים, כי הם נחשבים לנתוני תצורה. לכן, אפשר לעדכן כללים לגבי רכיבים בזמן הריצה, אם יש צורך.
סינון בקשות רשת בתוספים שהותקנו באמצעות מדיניות
בתרחישים לדוגמה של ארגונים ומוסדות חינוך יש בדרך כלל דרישות מחמירות מאוד לסינון תוכן ורשתות, כמו בקשות לסינון תוכן לפי התוכן שלהם. כדי להפעיל את התרחישים האלה לדוגמה, לתוספים שהותקנו לפי מדיניות יש דרך נוספת לסנן ולחסום בקשות רשת. באמצעות האפשרות 'חסימה' עם אירועים ב-API של webRequest
, ניתן להטמיע מסנן תוכן פרוגרמטי שמפעיל לוגיקה מותאמת אישית על כל בקשה כדי לקבוע אם יש לחסום בקשה או לא. האפשרות הזו מוגבלת לתוספים שהותקנו באמצעות מדיניות, כי רמת האמון בהם גבוהה יותר.
יירוט בקשות ניווט
אפשר לסנן בקשות ניווט באמצעות כללי Declarative Net Request. לדוגמה, יכול להיות שתרצו לעקוף את כתובות ה-URL למעקב שמפנות את המשתמשים ליעד שהם התכוונו להגיע אליו. אחת הדרכים לטפל בכך היא להפנות בקשת ניווט https://tracker.com?redirect=https%3A%2F%2Fexample.com
לדף של תוסף (שצריך להגדיר אותו כמשאב נגיש לאינטרנט), ולאחר מכן להריץ סקריפט כדי לחלץ את היעד של ההפניה האוטומטית ולהפנות אוטומטית ליעד באמצעות window.location.replace("https://example.com")
שעוקפת את הכלי למעקב אחרי קישורים.