WebBrowser控件:禁用跨站点XSS过滤或其他在HTML上完全处理JS的方法

我正在尝试使用我的Web浏览器控件从特定页面获取检索日期,包括所有子页面内容。 问题是某些子页面位于一个单独的域上,因此当我尝试访问框架[通过document.windows.frames(i).document]时,我得到了一个权限设计错误。

现在我理解这种情况发生的原因,如http://msdn.microsoft.com/en-us/library/ms533028.aspx所述 。 但是,与浏览不希望javascript嗅探其历史记录/ cookie的网站的用户不同,我实际打开我的程序并运行应用程序。

即使我必须手动更改安全设置,还有任何工作要做吗? 我尝试将IE中的所有设置都设置为允许并且仍然出现相同的错误。 我将只在本地运行应用程序,没有人会在IE上浏览,所以我可以逐字地更改使其工作所需的任何东西(甚至安装旧的IE版本,可能允许它,但仍然可以处理JS处理)。

注意我使用Web浏览器的原因是我将访问的绝大部分数据都是JS生成的,所以我需要在JS处理/生成HTML后访问DOM。 因此,仅使用SOCKETS获取HTML实际上不是一种选择。 即使我有HTML,我仍然需要某种类型的引擎来处理所有基于javascript的DOM元素。 如果您知道替代方案,那也完全可以接受!

提前致谢!

您可以在服务器上创建代理来获取数据,然后将它从您自己的域加载到隐藏的div中,然后您就可以使用JS从HTML获取所需的数据

您可以像这样创建动态代理页面:

using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Net; using System.Web; using System.Web.UI; public partial class TestPage : Page { private WebRequest _request; protected void Page_Load(object sender, EventArgs e) { string text; string url = Request["UrlToGet"]; _request = (HttpWebRequest) WebRequest.Create(url); using (WebResponse response = _request.GetResponse()) { using (StreamReader reader = new StreamReader(response.GetResponseStream())) { text = reader.ReadToEnd(); } } } } 

您需要做的就是将请求的URL放在QueryString或post数据中,您将获得字符串文本内的页面内容

在这种情况下,超文本应用程序可能是一个选项。 HTA应用程序在其基本浏览器窗口内运行,但具有可执行文件的权限。 有关HTA的更多信息,请参见此页面 。 请注意,HTA 确实为非应用程序框架和iframe 提供安全性。