阻止从特定域加载 Web 浏览器控件 javascript

Prevent webbrowser control loading javascript from certain domain

我正在将 html 页面加载到 C# webbrowser 对象中。在 html 页面的脚本标签之间有一些远程 javascript 文件的链接。其中之一有一些我无法修复的错误,因为我无法更改 javascript。由于不需要,我宁愿禁用它。

我想停止网络浏览器从特定域加载任何 javascript,或者只是让浏览器返回 javascript 文件的“404”。这可以在带有自动回复器的 Fiddler 中完成。

在 C# 中有什么方法可以做到这一点吗?就像一个迷你代理转发所有请求,除了 *.domainwitherrors.com?如果做不到这一点,有没有办法直接在 C# 中使用 Fiddler?

在网络浏览器中捕获 'Navigating' 事件不会在 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;
        }

}

不,WebBrowser 控件不提供任何请求过滤机制来阻止仅从一个域进行子下载。您可以将该域添加到您的受限站点区域(这将阻止其在 every 基于 IE 的浏览器中 运行 脚本的能力您的系统)使用 IE 的工具 > Internet 选项 > 安全选项卡。

FiddlerCore 是一个 .NET class 库,可以嵌入到应用程序中以提供您所描述的那种功能。您甚至可以使用它公开的 URLMonInterop.SetProxyInProcess API,这样只有您的应用程序(而不是整个系统)通过代理路由其流量。