编程语言
首页 > 编程语言> > c# – 在WebBrowser中的另一个域中获取iFrame中的文本的任何解决方法?

c# – 在WebBrowser中的另一个域中获取iFrame中的文本的任何解决方法?

作者:互联网

您可能会首先认为由于XSS限制而无法实现.但我试图从托管WebBrowser的应用程序访问此内容,而不是从站点中的javascript代码访问.

我理解是不可能的,并且不应该通过非hacky手段从javascript访问此内容,因为这将是一个很大的安全问题.但是从承载WebBrowser的应用程序中获得此限制是没有意义的.如果我想加强我的应用程序用户的Facebook信息,我可以做一个Navigate(“facebook.com”)并做我想做的任何事情.这是一个托管WebBrowser的应用程序,而不是网页.

此外,如果您使用Google Chrome浏览器访问包含其源位于其他域中的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,winforms,webbrowser-control,shdocvw,mshtml
来源: https://codeday.me/bug/20190518/1127196.html