你可能首先会想到是不可能的,因为XSS的限制。但我正在尝试从托管 WebBrowser
的应用程序访问此内容,而不是从站点中的 javascript 代码。
我知道不可能也不应该通过非 hacky 方式从 javascript 访问此内容,因为这将是一个很大的安全问题。但是从托管 WebBrowser
的应用程序中获得此限制是没有意义的。如果我想获取我的应用程序用户的 Facebook 信息,我可以执行 Navigate("facebook.com")
并在其中做任何我想做的事。这是托管 WebBrowser
而非网页的应用程序。
此外,如果您使用 Google Chrome 浏览器访问任何包含 iFrame 的网页,该 iFrame 的来源在另一个域中,然后右键单击其内容并单击“检查元素”,它会向您显示该内容。更简单的是,如果您导航到包含另一个域中的 iFrame 的任何网页,您将看到其内容。如果您可以在 WebBrowser
上看到它,那么您应该能够以编程方式访问它,因为它必须位于内存中的某个位置。
有没有办法,不是来自 DOM 对象,因为它们似乎基于与 javascript 相同的引擎,因此受到 XSS 限制,而是来自一些更底层的对象,例如 MSHTML
或SHDocVw
,访问此文本?
最佳答案
这对你有用吗?
foreach (HtmlElement elm in webBrowser1.Document.GetElementsByTagName("iframe"))
{
string src = elm.GetAttribute("src");
if (src != null && src != "")
{
string content = new System.Net.WebClient().DownloadString(src); //or using HttpWebRequest
MessageBox.Show(content);
}
}
关于c# - 在 WebBrowser 的另一个域的 iFrame 中获取文本的任何解决方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7505515/