0

的HTML内容我有网址:想获得微软Live登录页面

https://login.live.com/login.srf?wa=wsignin1.0&wtrealm=http%3a%2f%2fcorp.sts.microsoft.com&wctx=7b4cd04b-7dc2-4880-9f77-20c8c6ef64c4&wct=2013-03-11T06%3a54%3a42Z&whr=uri%3aWindowsLiveID.

我想这个网页为字符串的htmlcotent。我的代码看起来像这样。

WebClient wc = new WebClient(); 
string html = wc.DownloadString("url"); 

当我检查html字符串的内容我看到一条错误消息:

Microsoft帐户需要JavaScript才能登录这要么不支持JavaScript,或脚本被阻止的网页浏览器 。 。至 了解您的浏览器是否支持JavaScript,或者是否允许 脚本,请参阅浏览器的联机帮助。

+0

我知道你是什么原因报废网页? – 2013-03-11 07:18:42

+0

基本上我想爬一个微软的网页,这是真正的身份验证。所以我只是想要获得webage的html内容。 – user2155788 2013-03-11 07:55:14

回答

0

您可以设置User-Agent请求头的一些知识的浏览器,这将欺骗网站,以为它支持JavaScript:

using (WebClient wc = new WebClient()) 
{ 
    client.Headers[HttpRequestHeader.UserAgent] = "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.22 (KHTML, like Gecko) Chrome/25.0.1364.152 Safari/537.22"; 
    string html = wc.DownloadString("https://www.microsoft.com/en-/itacademy/members/default.aspx"); 
} 

显然,如果站点执行一些JavaScript的任务,他们将不会被执行,你不能依赖它们,因为WebClient不支持它。

如果另一方面您尝试使用Live ID进行身份验证,我强烈建议您使用OAuth来达到此目的。以下是documentation,它解释了在将应用程序注册为依赖方后,如何将这种类型的身份验证与Live ID集成。

+0

嗨达林谢谢你的回应。我已经将Windows Live Javascript API集成到asp.net mvc3中,并且我能够执行身份验证。但我只是努力获取网页内容。我尝试在Request对象中设置Headers,但结果仍然与前面提到的相同。我也使用httpwebrequest。 – user2155788 2013-03-11 07:40:33