Cookies Permissions 0.2.0.1 (2013-05-14)
Совместимость: Firefox, SeaMonkey
Автор: Infocatcher
Описание: позволяет быстро открыть список исключений для куков, открыть список самих куков, в 1-2 клика добавить просматриваемый сайт в исключения, также по таймеру удаляет все незащищённые (то есть все, кроме разрешенных в списке исключений) куки.
Установить: cookiesPermissions.html
Исходный код, инициализация: cookiesPermissions.js
Отредактировано Infocatcher (14-05-2013 21:27:53)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Тестовая версия, будьте осторожны!
Отредактировано Infocatcher (03-03-2013 23:35:03)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Суперская кнопка! Огромное спасибо!
Перепробовал несколько расширения для управления кукисами - всё не то. Максимально приближенным к идеалу оказался CookieSafe (идеология интерфейса как у NoScript). Но к сожалению это расширения оказалось сырым и местами сильно глючным
И тут я нашёл эту кнопку Cookies Permissions - это просто праздник какой-то!
Правда сразу захотелось слегка изменить функционал. Насколько я понимаю, CB-кнопки не могут сохранять свои настройки (в файл или ещё куда-то). Но вот если поместить некие константы в начало программы и юзер смог бы их править ручками - возможно это было бы решением для индивидуальных настроек?
Хотелось бы немного.
1. Отключить таймер и автоматическое удаление кукисов (подскажите где подправить?)
2. Картинка-статус кукисов имеет в данный момент четыре положения:
- если сайт есть в списке исключений, то показывается статус из этого списка (кукисы разрешены полностью, только на сессию, заблокированы).
- если сайта нет в списке исключений, то показывается состояние Default.
Однако, в зависимости от настроек в браузере, Default фактически также имеет одно из значений: кукисы разрешены полностью, только на сессию, заблокированы.
Нельзя ли в качестве картинки показывать фактическое состояние кукисов для текущей страницы? Т.е. если сайта нет в списке исключений, а в настройках браузера кукисы заблокированы, то и картинка должна показывать, что кукисы заблокированы, а не Default. Я понимаю, что для этого необходимо считать настройки браузера и выяснить, что фактически означает Default. Но возможно это легко сделать?
Ещё раз спасибо за отличную кнопку! Надеюсь, автор посчитает моё предложение по изменению поведения кнопки разумным
Отсутствует
Насколько я понимаю, CB-кнопки не могут сохранять свои настройки (в файл или ещё куда-то)
Могут. Просто нет API для простого добавления настроек, так что или в about:config править придется, или нужно писать дополнительный код.
В общем, мне как-то лень.
Но вот если поместить некие константы в начало программы и юзер смог бы их править ручками - возможно это было бы решением для индивидуальных настроек?
Такие настройки уже есть:
this.options = { removeUnprotectedCookiesInterval: 30*60*1000, // -1 for disable useBaseDomain: false // Use google.com instead of www.google.com };
и в разрабатываемой версии:
var options = { removeUnprotectedCookiesInterval: 30*60*1000, // -1 to disable removeAllUnprotectedCookies: false, useBaseDomain: { // If set to true, will use short domain like google.com instead of www.google.com addPermission: false, openPermissions: false, showCookies: true, removeCurrentSiteCookies: true, preserveCurrentSiteCookies: true }, prefillMode: 1, // 0 - move caret to start, 1 - select all, 2 - move caret to end };
В частности,
1. Отключить таймер и автоматическое удаление кукисов
– это
removeUnprotectedCookiesInterval: 30*60*1000, // -1 to disable
Нельзя ли в качестве картинки показывать фактическое состояние кукисов для текущей страницы?
Это не реализовано, но сделать можно.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Такие настройки уже есть:
Выделить кодКод:
this.options = { removeUnprotectedCookiesInterval: 30*60*1000, // -1 for disable useBaseDomain: false // Use google.com instead of www.google.com };
Вечный праздник!
Zhorik пишетНельзя ли в качестве картинки показывать фактическое состояние кукисов для текущей страницы?
Это не реализовано, но сделать можно.
Я думаю, можно для состояния Default использовать те же иконки, что и для списка исключений, добавив где-нибудь в углу какую нибудь точку, или слегка изменив цвет печенек, или ещё что-то. Тогда будет сразу видна разница между состояниями "кукис только на текущую сессию" и "Default - кукис только на текущую сессию".
Нельзя ли ещё сделать, чтобы при left-click мышью проходились по кругу все состояния Default->Session->Allow->Block? В настоящий момент сделано Default->Allow. Приходится лезть в меню по right-click и выбирать Session. Я думаю, это имело бы смысл, т.к. сценарий использования браузера "Block all cookies, but allow session cookies for selected sites" достаточно распространён.
Отсутствует
чтобы при left-click мышью проходились по кругу все состояния Default->Session->Allow->Block?
Есть же контекстное меню со всеми этими пунктами.
В настоящий момент сделано Default->Allow.
Это задается в
this.onclick = function(e) { ... if(but == 0 && !hasModifier) { this.permissions.togglePermission(this.permissions.cp.ACCESS_ALLOW);
Там три варианта значений: ACCESS_DENY, ACCESS_SESSION и ACCESS_ALLOW.
Приделал нечто вроде: https://github.com/Infocatcher/Custom_B … b91cdf127e
Только вот рисование иконок не по моей части, так что тупо берутся старые с осветлением.
И еще там не очень очевидно с настройками по умолчанию:
network.cookie.cookieBehavior
network.cookie.lifetimePolicy
«The user is prompted for the cookie's lifetime» в результате считается за ACCESS_ALLOW.
Итого:
Cookies Permissions 0.2.0pre9 (2012-09-03)
[+] Добавлена возможность отображать политику по умолчанию (настройка "showDefaultPolicy").
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Нельзя ли ещё сделать, чтобы при left-click мышью проходились по кругу все состояния Default->Session->Allow->Block? В настоящий момент сделано Default->Allow. Приходится лезть в меню по right-click и выбирать Session. Я думаю, это имело бы смысл, т.к. сценарий использования браузера "Block all cookies, but allow session cookies for selected sites" достаточно распространён.
Не поддерживаю! Будет очень неудобно! Для этого используй контекстное меню.
Отсутствует
Мне кажется или ссылки на тестовую версию и стабильную совпадают?
Кажется
http://infocatcher.ucoz.net/js/cb/cookiesPermissions.js
http://infocatcher.ucoz.net/js/cb/cookiesPermissions-test.js
Отсутствует
А что насчет DOM Storage куков? Я не знаю ни одного расширения которое позволяет управлять ими. На странице about:permissions есть пункт который можно ставить в спрашивать/разрешать/блокировать. И есть расширение которое позволяет просматривать/удалять/изменять их:
Foundstone HTML5 Local Storage Explorer — позволяет управлять содержимым локального хранилища HTML5 (HTML5 Local Storage, DOM Storage) — просматривать, удалять, изменять. Это не флэш куки (LSO), а аналог обычных куков с расширенными возможностями.
Можете взять оттуда код и обьединить с вызовом функций со страницы about:permissions?
Кстати, не плохо бы было, если с помощью кнопки можно изменять куки.
Отсутствует
Кстати, не плохо бы было, если с помощью кнопки можно изменять куки.
Это уже не сюда. Обсуждаемая чудесная кнопка делает не более, чем может сам браузер (на самом деле чуть больше). Т.е. фактически стандартные функции браузера вынесены в отдельную удобную кнопку. И это есть гуд!
Для изменения кукисов есть несколько отдельных расширений.
Отсутствует
поставить пару тройку точек в нём вообще без проблем.
Не, с точками-то я справлюсь, только точки в данном случае как-то совсем не интуитивны.
А что насчет DOM Storage куков?
Во-первых, это нужно совсем другую кнопку делать – как-то я плохо представляю как отображать и удобно переключать сразу два вида разрешений. А во-вторых, там же «всегда спрашивать» по умолчанию. Так часто спрашивает?
Кстати, не плохо бы было, если с помощью кнопки можно изменять куки.
Это вряд ли. И приделывать полноценный редактор из кнопки не очень-то удобно.
Неужели нет ни одного расширения, улучшающего встроенный просмотровщик печенек?
А даже если свое окно используется, можно его же и вызывать вместо встроенного.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Только что опробовал последний вариант кнопки. Прозрачные значки для Default-состояний - это просто гениально! Поставил кнопку на постоянное использование. Спасибо!
Считаю, что данная кнопка может по праву претендовать на звание лучшего менеджера кукисов.
Думаю, можно ещё немного улучшить несколько непринципиальных мелочей, если автор сочтёт это разумным.
1. Заменить слово Deny на Block. В настройках браузера используется именно термин Block Cookies.
2. Добавить комментарии к опциям в useBaseDomain. Сразу было трудно разобраться, что означает каждая переменная - пришлось просматривать программу
3. Внести опции для скрытия/показа пунктов контекстного меню. Например, для отключения пунктов Remove*.
4. Пункты Remove* назвать точнее (поначалу проходится долго ломать голову). В названии всех пунктов использовать уточнения вроде "for current site only", "all sites include current site", "all sites except current site".
Кстати, можно пояснить, что означает "protected cookies"? Методом тыка точно определить не удалось. Сначала думал, что это кукисы, внесённые в список исключений, но потом вроде бы оказалось, что нет.
P.S. Не надо больше точек! Прозрачные значки для Default-состояний - просто гениальное решение!
Отсутствует
1. Заменить слово Deny на Block. В настройках браузера используется именно термин Block Cookies.
Согласен.
2. Добавить комментарии к опциям в useBaseDomain. Сразу было трудно разобраться, что означает каждая переменная - пришлось просматривать программу
Да, надо. Осталось только понятно сформулировать.
3. Внести опции для скрытия/показа пунктов контекстного меню. Например, для отключения пунктов Remove*.
Можно их скрыть:
<menuitem\
cb_id="removeCurrentSiteCookies"\
collapsed="true"\
oncommand="this.parentNode.parentNode.permissions.removeCurrentSiteCookies();"\
label="' + _localize("removeCurrentSiteCookiesLabel") + '"\
accesskey="' + _localize("removeCurrentSiteCookiesAccesskey") + '" />\
4. Пункты Remove* назвать точнее (поначалу проходится долго ломать голову). В названии всех пунктов использовать уточнения вроде "for current site only", "all sites include current site", "all sites except current site".
Слишком длинно.
Там у одного из пунктов всплывающая подсказка есть, можно и второму добавить.
что означает "protected cookies"? Методом тыка точно определить не удалось. Сначала думал, что это кукисы, внесённые в список исключений, но потом вроде бы оказалось, что нет.
Остаются только внесенные в список исключений как «разрешить».
Но при «removeAllUnprotectedCookies: false» не будут удалены cookies с открытых сайтов, при этом работает useBaseDomain.preserveCurrentSitesCookies.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Google.ru внес в защищенные, при очистке всех незащищенных куков заставляет заново войти, уже добавил страницу авторизации и google.com, все равно логиниться по новой заставляет, не критично, но может я что не так делаю.
Лучше спросить у знающих - чем лезть не зная.
Отсутствует
Google.ru внес в защищенные, при очистке всех незащищенных куков заставляет заново войти
У гугла выставляются cookies с доменом «.google.ru», так что в исключениях должен быть «google.ru», а не «www.google.ru».
С разрешением для «google.ru» у меня не воспроизводится.
Добавлено 04-09-2012 14:22:10
Пока вот так:
Add support for Cookies Manager+ extension
Correct English locale to match terminology of built-in exceptions dialog
Fix accesskey in English locale
Improve descriptions
Отредактировано Infocatcher (04-09-2012 14:22:10)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Происходит странное! Написал removeUnprotectedCookiesInterval: -1.
В стабильном релизе работает как надо. Т.е. никакие кукисы по таймеру не стираются. В последней версии, стираются время от времени все кукисы, кроме сайтов Allow в exception list!
Нельзя ли проверить?
P.S. Ну точно! Пришёл с обеда, кукисы потёрты, с форума выкинуло!
Отредактировано Zhorik (04-09-2012 15:21:35)
Отсутствует
Zhorik
А если перезапуститься, проблема сохраняется?
Проблема теоретически может возникать, если закрыть самое первое окно с кнопкой и попробовать отредактировать кнопку.
В консоль ошибок что-нибудь пишет?
Добавлено 04-09-2012 15:47:53
Воспроизвести у меня не получается, но можно попробовать добавить распорку:
Ensure Application.storage available
Отредактировано Infocatcher (04-09-2012 15:47:53)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
В общем, перестартовал браузер и всё стало нормально (кукисы больше не автоудаляются). Кстати, я бы по умолчанию эту фичу выключил. У непродвинутых пользователей могут возникнуть проблемы (особенно, если невнимательно прочитать описание кнопки и не узнать про наличие фичи автоудаления). А продвинутые пользователи сами включат
Вероятно, "баго-фича" была связана с:
* Удаление незащищенных cookies по таймеру теперь использует один глобальный таймер для всех окон.
Я действительно редактировал кнопку "по живому" и, видимо, таймер оставался после самого первого запуска.
Нельзя ли заодно пояснить на счёт самого Custom Buttons. Давно не заходил на addons.mozilla.org. А сегодня смотрю - есть какой то "Custom Buttons 2" - это плагиат, дериват или принципиально другое расширение?
Можно ли CB-кнопку засунуть вниз в статус-бар? Было бы очень полезно разместить Cookies Permissions рядом с иконкой NoScript в статус-баре. Нашёл расширение с подходящим названием Status-Bar Custom Buttons, но ещё не пробовал, будет ли оно работать с CB-кнопками.
Отсутствует
Кстати, я бы по умолчанию эту фичу выключил.
Да, пожалуй.
Просто изначально, кажется, просили именно удаление по таймеру.
Вероятно, "баго-фича" была связана с:
* Удаление незащищенных cookies по таймеру теперь использует один глобальный таймер для всех окон.
Да, вероятно. Но повторить у меня не получается.
Можно ли CB-кнопку засунуть вниз в статус-бар?
Можно, но только в Firefox.
Нашёл расширение с подходящим названием Status-Bar Custom Buttons, но ещё не пробовал, будет ли оно работать с CB-кнопками.
Если там не реализован this.onDestroy = ... , могут быть утечки памяти. И после редактирования надо будет перезапускаться.
В этой конкретной кнопке будет еще ругаться на cbu.getPrefs().
Нельзя ли заодно пояснить на счёт самого Custom Buttons. Давно не заходил на addons.mozilla.org. А сегодня смотрю - есть какой то "Custom Buttons 2" - это плагиат, дериват или принципиально другое расширение?
Custom Buttons 2 – это продолжение альфа-версии Custom Buttons.
Автор оригинального расширения прекратил разработку, потом другие авторы сделали Custom Buttons², а потом Anton взялся за разработку оригинальной версии.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
и в симанке тоже работает
Я про встроенную возможность размещать кнопки в строке состояния.
navBar.insertBefore(appButton, navBar.lastChild);
Будет две инициализации, кстати.
[Custom Buttons: id: custombuttons-button7@init, line: 1, name: ]
init
----------
[Custom Buttons: id: custombuttons-button7@init, line: 4, name: ]
destroy
----------
[Custom Buttons: id: custombuttons-button7@init, line: 1, name: ]
init
----------
[Custom Buttons: id: custombuttons-button7@init, line: 4, name: ]
destroy
А при редактировании сработает только
[Custom Buttons: id: custombuttons-button7@init, line: 4, name: ]
destroy
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Хорошая кнопка! Готов принять участие в тестировании. Допинайте, плиз, чтобы была настройка, засовывать кнопку в статус-бар или стандартным для CB способом выносить на панель инструментов.
Infocatcher
Будет две инициализации, кстати.
Вот тут я вообще не понял. Способ включения иконки в статус-бар от okkamas_knife будет приводить к нежелательным последствиям?
Из треда не совсем понятно, что же самое актуальное на сегодняшний момент: CB или CB2?
Отсутствует
Kaban
Допилить надо SeaMonkey до состояния Firefox.
И что считать нежелательным?
Код инициализации выполнится два раза без визуальных последствий, так что запуск кнопки замедлится вдвое.
И после редактирования/обновления надо будет перезапускаться.
Добавлено 05-09-2012 02:56:41
Вот так можно перенести:
this.classList.remove("toolbarbutton-1"); document.getElementById("statusbar-display").appendChild(this);
Хоть панель не распирает.
Отредактировано Infocatcher (05-09-2012 02:56:41)
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует
Infocatcher
Допилить надо SeaMonkey до состояния Firefox
Боюсь к этому и идёт
Код инициализации выполнится два раза
Почему? Один раз за счёт того, что кнопка будет приписана к статус-бару, и один раз за счёт того, что CB инициализирует все CB-кнопки, находящиеся в браузере?
Вот так можно перенести
Ээээ.... Сорри, я тут уже потерял нить. А можно сделать ещё одну настройку "стартовать также в статус-баре" и нужный код инициализации запускать соответственно этой настройке?
Новую версию со всеми изменениями готов протестировать немедленно
Кстати, при left-click состояние меняется Default->Allow. Это можно также вынести в настройку, типа ToggleMode = ALLOW | SESSION | BLOCK
Отсутствует
Почему? Один раз за счёт того, что кнопка будет приписана к статус-бару, и один раз за счёт того, что CB инициализирует все CB-кнопки, находящиеся в браузере?
При удалении DOM-узла из дерева сработает XBL-деструктор, а при добавлении – конструктор. В общем, это все особенности реализации.
А первоначальную инициализацию никто не отменял.
А почему после перемещения ломается инициализация, мне разбираться лень. Видимо, там проверка есть – при настройке панелей кнопки тоже будут находиться «не там».
А можно сделать ещё одну настройку "стартовать также в статус-баре" и нужный код инициализации запускать соответственно этой настройке?
«Также» сложно.
Add (commented) code to move button to Status Bar in SeaMonkey
Кстати, при left-click состояние меняется Default->Allow. Это можно также вынести в настройку, типа ToggleMode = ALLOW | SESSION | BLOCK
Add "toggleMode" options, version 0.2.0pre10 - 2012-09-05
Cookies Permissions 0.2.0pre10 (2012-09-05)
[+] Добавлена поддержка расширения Cookies Manager+.
[*] Улучшен текст всплывающих подсказок и пунктов меню.
[-] Периодическое удаление незащищенных cookies теперь отключено по умолчанию.
[+] Добавлена настройка "toggleMode" для изменения переключаемого разрешения.
Прошлое – это локомотив, который тянет за собой будущее. Бывает, что это прошлое вдобавок чужое. Ты едешь спиной вперед и видишь только то, что уже исчезло. А чтобы сойти с поезда, нужен билет. Ты держишь его в руках. Но кому ты его предъявишь?
Виктор Пелевин. Желтая стрела
Отсутствует