Запретить веб-браузер загружать javascript из определенного домена

Я загружаю html-страницу в объект веб-браузера C #. Между тегами скриптов на странице html есть ссылки на некоторые удаленные файлы javascript. В одной из них есть ряд ошибок, которые я не могу исправить, так как не могу изменить javascript. Поскольку это не нужно, я лучше отключу его.

Я хотел бы остановить загрузку веб-браузером любого javascript из определенного домена или просто чтобы браузер возвращал 404 для этого файла javascript. Это можно сделать в Fiddler с помощью автоответчика.

Есть ли способ сделать это на C #? Как мини-прокси, перенаправляющий все запросы, кроме тех, что на * .domainwitherrors.com? В противном случае есть ли способ использовать Fiddler непосредственно в C #?

Захват события «Навигация» в веб-браузере не позволяет перехватить javascript до его загрузки в DOM.

   webBrowser1.Navigate("http://www.somedomain.com");
   webBrowser1.Navigating += webBrowser1_Navigating;

    void webBrowser1_Navigating(object sender, WebBrowserNavigatingEventArgs e)
    {
        if (e.Url.ToString().Contains("domainwitherrors"))
        {
            return;
        }

}


person user2146441    schedule 21.04.2015    source источник


Ответы (1)


Нет, элемент управления WebBrowser не предлагает никаких механизмов фильтрации запросов, которые позволили бы предотвратить субзагрузку только из одного домена. Вы можете добавить домен в зону ограниченных сайтов (что заблокирует его возможность запускать скрипт в каждом браузере на основе IE в вашей системе) с помощью инструментов IE> Свойства обозревателя> Вкладка Безопасность.

FiddlerCore - это библиотека классов .NET, которую можно встраивать в приложения для обеспечения именно тех функций, которые вы описываете. Вы даже можете использовать URLMonInterop.SetProxyInProcess API, который он предоставляет, так что только ваше приложение (а не система в целом) направляет свой трафик через прокси.

person EricLaw    schedule 21.04.2015
comment
Хотя это и нетривиально, но все же должна быть возможность зарегистрировать внутрипроцессный Асинхронный подключаемый обработчик для фильтрации URL-адресов HTTP и / или HTTPS и использовать WinInet для его реализации. Это не? - person noseratio; 21.04.2015
comment
@Noseratio: я подумал об этом, но это нетривиально и технически не поддерживается Microsoft. Каждая попытка сделать это, что мы видели, была источником ошибок безопасности и надежности. - person EricLaw; 23.04.2015
comment
Эрик, достаточно честно. Я помню, как экспериментировал с подключаемыми протоколами в эпоху до IE9, и это действительно была ухабистая дорога. - person noseratio; 23.04.2015