2016-11-15 5 views
1

Я начал простое расширение для Firefox, которое теоретически должно блокировать доступ к определенным веб-сайтам на основе ответа от удаленного сервера. Пользователь пытается перейти, новая страница не будет загружена, пока подтверждение не будет получено с удаленного сервера. К сожалению, удаленный сервер «проверки» ограничен несколькими запросами в секунду для каждого пользователя, поэтому я не могу (и это необязательно) проверять каждый запрос, сделанный после того, как пользователь перейдет на какую-либо страницу. Есть ли способ прослушивать «настоящую» навигацию не все эти запросы и перенаправлять целую вкладку где-нибудь до того, как будут сделаны какие-либо запросы?WebExtension перенаправляет и блокирует сайты

Я попытался надстройка API:

  • вкладки событие, выпущенное после содержимого уже получено, что не приятно.

  • Событие «http-on-modify-request» запускается для каждого отдельного сервера проверки удаленных спамов.

WebExtensions:

  • browser.webNavigation.onBeforeNavigate кажется, что мне нужно, но не может требовать чек я ни отправить ни перенаправляют оттуда, и я не уверен, что я буду в состоянии.
+0

Как вы не загружаете, пока что-то не будет получено * (таймаут?)? (т.е. «новая страница будет * не загружена», пока подтверждение * не будет получено * с удаленного сервера ». – Makyen

+0

Этот вопрос действительно слишком широк для формата переполнения стека. Существует слишком много возможных способов его реализации. чтобы отслеживать URL/домены, которые разрешены. Затем вы только запрашиваете авторизацию в первый раз, когда запрашивается что-то в этом домене. Затем вы помните этот ответ и используете его для любых будущих запросов в этот домен. Даже если вы точно * реализовать это слишком широко. – Makyen

ответ

1

"HTTP-на-изменение-запрос" событие вызывается для каждого запроса отдельно SPAMMING удаленный сервер проверки.

, что уведомление наблюдателя дает вам канал HTTP, канал has a loadInfo свойство, которое имеет externalContentPolicyType свойство, которое позволяет фильтровать нагрузки верхних документов уровня путем сопоставления одного из content policy constants.

WebRequest.jsm и browser.webRequest являются абстракциями над наблюдателями http и обеспечивают аналогичную функциональность.

 Смежные вопросы

  • Нет связанных вопросов^_^