所以我试图阅读网址的来源,让我们说域名.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。
所以我的最后一个问题是: 如何通过指定的域模拟请求,或获取完整的呈现页面源?
答案 0 :(得分:0)
这可能是网络请求的referer
属性:通常是浏览器告诉网络服务器它找到了它所请求页面的链接。
这意味着,当您为iframe创建Web请求时,将该请求的referer属性设置为包含该链接的页面。
如果这不起作用,cookie可能是另一种选择。即您必须收集第一个请求发送的cookie,并在第二个请求时发送它们。