סינון תוכן

יש כמה דרכים להטמיע סינון של תוכן ורשת בתוספים ל-Chrome. במדריך הזה מוסבר על יכולות סינון התוכן שזמינות לתוספים, ועל הגישות, הטכניקות וממשקי ה-API השונים שבהם אפשר להשתמש בתוספי Chrome.

סינון בקשות רשת

הדרך העיקרית לסנן בקשות רשת בתוספי Chrome היא באמצעות chrome.declarativeNetRequest API. באמצעות Declarative Net Request, מפתחים יכולים לחסום או לשנות בקשות רשת על ידי ציון כללים דקלרטיביים. פורמט הכללים של Declarative Net Request מבוסס על היכולות של תחביר רשימת המסננים שמשמש את רוב חוסמי המודעות.

הכללים האלה יכולים:

  • חסימה של בקשת רשת.
  • משדרגים את סכימת כתובת ה-URL לסכימה מאובטחת (http ל-https או ws ל-wss).
  • הפניה מחדש של בקשת רשת.
  • לשנות את הכותרות של הבקשות או התגובות.

‫Chrome תומך בכללים שמצורפים לתוסף, ובכללים שמתעדכנים באופן דינמי (למשל בתגובה להגדרת תצורה מרחוק או לקלט של משתמשים).

איך מאגדים כללי סינון עם התוסף

כללים שנכללים בחבילת התוסף נקראים 'כללים סטטיים'. הכללים האלה מותקנים ומעודכנים כשמתקינים תוסף או משדרגים אותו. ב-Chrome יש הגבלה על מספר הכללים הסטטיים שתוסף יכול להצהיר עליהם.

בכללים סטטיים של Declarative Net Request, ל-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 הם כללים בטוחים.

תוספים לסינון תוכן יכולים להשתמש בכללים סטטיים ודינמיים כדי לאגד כללי סינון מוכרים עם התוסף שלהם, וכדי לעדכן את התוספים שלהם בכללי סינון תוכן חדשים מהשרתים שלהם כשצריך.

התאמת כללים על סמך בקשות שנצפו

סביבת הפרסום משתנה כל הזמן, ולכן צריך לעדכן את מסנני התוכן בהתאם. אפשר לשלב בין chrome.webRequest לבין כללים דינמיים של בקשות רשת הצהרתיות כדי לנתח בקשות רשת ולזהות הפרות פוטנציאליות של פרטיות, ולחסום אותן בעתיד.

הגישה הבסיסית היא:

  1. לנתח בקשות אינטרנט באמצעות chrome.webRequest API ולנסות לזהות באופן אוטומטי בקשות שלא עומדות בדרישות בנושא פרטיות שלכם, למשל באמצעות למידת מכונה.
  2. יוצרים כלל דינמי של בקשת רשת הצהרתית לכל בקשה שזוהתה בשלב השני, כדי שבקשות דומות ייחסמו בעתיד.
  3. (אופציונלי) שולחים את כלל ה-Declarative Net Request שזוהה בחזרה לשרת, כדי שניתן יהיה להוסיף אותו ככלל סטטי של Declarative Net Request בעדכון הבא של התוסף.

היתרון בגישה הזו הוא שהניתוח מתבצע באופן אסינכרוני ולא משפיע לרעה על ביצועי האתר.

המשתמשים יכולים להגדיר כללי סינון משלהם

אתם יכולים לאפשר למשתמשים להגדיר כללים משלהם לסינון תוכן על ידי הוספת ממשק משתמש להגדרת מסנן בתוסף. להמיר את הכללים האלה שהוגדרו על ידי המשתמש לכללי בקשות רשת הצהרתיות ולהוסיף אותם ככללים דינמיים. הכללים האלה ימשיכו להיות זמינים למשתמשים כי הם נשמרים בין הפעלות של הדפדפן ובין שדרוגים של התוסף. בגישה הזו, משתמשים יכולים להוסיף עד 30,000 כללים מותאמים אישית.

סינון רכיבים בדפי אינטרנט

סינון בקשות רשת הוא רק חלק חשוב אחד בסינון תוכן. חלק חשוב נוסף הוא הסרת תוכן לא רצוי ישירות מדפי אינטרנט. לדוגמה, יותר מ-40% מהכללים ברשימת המסננים של easylist מגדירים איך הלקוחות צריכים להסתיר רכיבי דף.

אפשר לעשות את זה באמצעות סקריפטים של תוכן. סקריפטים של תוכן פועלים בהקשר של דפי אינטרנט ויכולים לבצע בהם שינויים באמצעות DOM.

לתוספים ל-Chrome אין הרשאה להפעיל קוד שמתארח מרחוק. עם זאת, נתונים משרת לגבי רכיבים להסתרה לא מושפעים, כי הם נחשבים לנתוני הגדרה. לכן, אפשר לעדכן את כללי הרכיבים בזמן הריצה כשצריך.

סינון בקשות רשת בתוספים שהותקנו בהתאם למדיניות

תרחישי שימוש בארגונים ובמוסדות חינוכיים כוללים לעיתים קרובות דרישות מחמירות במיוחד לסינון תוכן ורשת, כמו סינון בקשות על סמך התוכן שלהן. כדי לאפשר את תרחישי השימוש האלה, לתוספים שהותקנו באמצעות מדיניות יש דרך נוספת לסנן ולחסום בקשות רשת. באמצעות האפשרות 'חסימה' באירועים ב-API של webRequest, אפשר להטמיע מסנן תוכן פרוגרמטי שמבצע לוגיקה מותאמת אישית בכל בקשה כדי להחליט אם לחסום את הבקשה או לא. ההגדרה הזו מוגבלת לתוספים שמותקנים באמצעות מדיניות, כי יש להם רמת מהימנות גבוהה יותר.

יירוט בקשות ניווט

אפשר לסנן בקשות ניווט באמצעות כללים של בקשת רשת דקלרטיבית. לדוגמה, יכול להיות שתרצו לדלג על כתובות URL למעקב שמפנות את המשתמש ליעד המיועד שלו. אחת הדרכים לטפל בבעיה הזו היא להפנות בקשת ניווט https://tracker.com?redirect=https%3A%2F%2Fexample.com לדף של תוסף (שצריך להגדיר אותו כמשאב שאפשר לגשת אליו באינטרנט). הדף הזה יפעיל סקריפט לחילוץ יעד ההפניה האוטומטית ולהפניה ליעד באמצעות window.location.replace("https://example.com"), וכך יעקוף את הכלי למעקב אחר קישורים.