想要获取Microsoft Live登录页面的html内容

时间:2013-03-11 07:17:11

标签: asp.net-mvc-3 c#-4.0 https windows-live system.net.httpwebrequest

我有网址:

  

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才能登录。此Web浏览器   要么不支持JavaScript,要么阻止脚本。至   了解您的浏览器是支持JavaScript,还是允许   脚本,请参阅浏览器的在线帮助。

1 个答案:

答案 0 :(得分: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集成。