如何获取仅适用于指定域的iframe源代码?

时间:2016-09-29 06:37:13

标签: c# html iframe

所以我试图阅读网址的来源,让我们说域名.xyz。没问题,我可以使用HttpWebRequest简单地使用它。

HttpWebRequest request = (HttpWebRequest)WebRequest.Create(urlAddress);
HttpWebResponse response = (HttpWebResponse)request.GetResponse();

我的问题是它将返回页面源,但是没有此页面内的iframe源。我只得到这样的东西:

<iframe src="http://anotherdomain.xyz/frame_that_only_works_on_domain_xyz"></iframe>

我发现我可以轻松地使用WebBrowser或基本字符串函数(结果相同)获取iframe的src,并使用该地址创建另一个HttpWebRequest。问题是如果我在浏览器(Chrome)中查看整个页面(插入框架的位置),我会得到预期的结果。但是如果我将src复制到另一个选项卡,内容就不一样了。它说我想要查看的内容被阻止,因为它只能通过domain.xyz。

所以我的最后一个问题是: 如何通过指定的域模拟请求,或获取完整的呈现页面源?

1 个答案:

答案 0 :(得分:0)

这可能是网络请求的referer属性:通常是浏览器告诉网络服务器它找到了它所请求页面的链接。

这意味着,当您为iframe创建Web请求时,将该请求的referer属性设置为包含该链接的页面。

如果这不起作用,cookie可能是另一种选择。即您必须收集第一个请求发送的cookie,并在第二个请求时发送它们。