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