我正在将 html 页面加载到 C# webbrowser 对象中。 html 页面中的 script 标记之间有一些远程 javascript 文件的链接。其中之一有许多错误,我无法纠正,因为我无法更改 JavaScript。由于不需要它,我宁愿禁用它。
我想阻止网络浏览器从特定域加载任何 javascript,或者只是让浏览器返回该 javascript 文件的“404”。这可以在 Fiddler 中使用自动回复器来完成。
有没有办法在C#中做到这一点?就像一个迷你代理转发除 *.domainwitherrors.com 之外的所有请求?如果不行,有没有办法在C#中直接使用Fiddler?
在 Web 浏览器中捕获“导航”事件不会在 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 控件不提供任何允许您阻止仅从一个域进行子下载的请求过滤机制。您可以使用 IE 的工具 > Internet 选项 > 将域添加到您的受限站点区域(这将阻止其在系统上每个基于 IE 的浏览器中运行脚本的能力)安全选项卡。
FiddlerCore是一个 .NET 类库,可以嵌入到应用程序中以提供您所描述的功能类型。您甚至可以使用它公开的 URLMonInterop.SetProxyInProcess
API,以便只有您的应用程序(而不是整个系统)通过代理路由其流量。
关于javascript - 防止浏览器控制从特定域加载 javascript,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29763137/