防止webbrowser控件从某个域加载javascript

时间:2015-04-21 04:47:44

标签: javascript c# webbrowser-control fiddler fiddlercore

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

我想停止webbrowser加载来自特定域的任何javascript,或者只是让浏览器返回' 404'对于那个javascript文件。这可以通过自动回复器在Fiddler中完成。

有没有办法在C#中这样做?就像迷你代理转发除* .domainwitherrors.com之外的所有请求?如果不这样,有没有办法在C#中直接使用Fiddler?

诱捕'导航' webbrowser中的事件在加载到DOM之前不会捕获javascript。

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

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

}

1 个答案:

答案 0 :(得分:2)

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

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