The-OP / Fox

The Unlicense
161 stars 24 forks source link

Альтернатива Self-Destructing Cookies #94

Closed JustOff closed 7 years ago

JustOff commented 7 years ago

Cookies Exterminator

The-OP commented 7 years ago

0ab8e3d

Вы автор, как я понимаю? Совместимость с E10S планируется? UPD: Ага, уже сам нашел ответ.

JustOff commented 7 years ago

Да, я автор. С e10s там ситуация следующая: в Mozilla решили похерить глобальные уведомления dom-storage2-changed в многопроцессорном режиме. Т.е. непонятно как отслеживать новые ключи в localStorage и эта проблема общая для Self-Destructing Cookies и Cookies Exterminator - про изменения в localStorage они узнают только при следующем рестарте браузера. В остальном мой код полностью протестирован на совместимость с e10s и каких-либо проблем создавать не будет.

The-OP commented 7 years ago

А разве нельзя просто при каждой выгрузке вкладки проверять, есть ли еще вкладки с этого домена и очищать все, если нет?

JustOff commented 7 years ago

Так и делается, но для localStorage, в отличии от cookies, в браузере не существует API чтобы получить все существующие объекты, поэтому приходится при старте читать их напрямую из sqlite файла и отслеживать новые. И даже если читать файл периодически (что гарантированно просадит производительность и плохая идея), из-за кеширования все равно нет гарантии что там будет все что нужно.

The-OP commented 7 years ago

А зачем их получать? Можно удалять все для домена как Ctrl+Shift+Del делает:

// https://hg.mozilla.org/mozilla-central/file/23dc78b7b57e9f91798ea44c242a04e112c37db0/dom/storage/DOMStorageObserver.cpp#l231
Components.classes["@mozilla.org/observer-service;1"]
          .getService(Components.interfaces.nsIObserverService)
          .notifyObservers(null, "browser:purge-domain-data", "youtube.com");
JustOff commented 7 years ago

Это замечательно, но как узнать для каких доменов кроме того который в location было что-то добавлено в localStorage? Ведь главная проблема именно в том что успевают нагадить все сторонние рекламные и трекинговые скрипты ... плюс еще iframe ...

The-OP commented 7 years ago

Да, действительно. Можно еще uMatrix попробовать глянуть - он вроде умеет чистить localStorage и даже Web Extension API при этом обходится как-то.