首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从需要登录的页面获取网页源代码的最简单方法-- C#

从需要登录的页面获取网页源代码的最简单方法-- C#
EN

Stack Overflow用户
提问于 2010-02-05 06:59:49
回答 3查看 1.2K关注 0票数 1

所以我玩了一个基于网络的在线游戏,我想用C#自动完成某些事情。问题是我不能简单地使用WebClient.DownloadData(),因为我需要登录才能真正接收源代码。另一种选择是使用内置的web浏览器控件,但这并不能让我访问源代码。有什么建议吗?

EN

回答 3

Stack Overflow用户

发布于 2010-02-05 07:27:06

我不认为NetworkCredentials在所有情况下都能工作。这只适用于“基本”或“协商”身份验证。

我以前用内部网站做过一些负载测试,但听起来你是想“玩”这个游戏。由于这个原因,我不会深入讨论细节,但是当您点击登录按钮时,站点的登录可能是以HTTP POST的形式完成的。

您必须捕获POST请求并将其复制到您的代码中,并确保您的实现也维护会话状态,因为如果游戏站点编写得很好,它将确保在执行任何与游戏相关的操作之前,当前会话已经登录。

票数 1
EN

Stack Overflow用户

发布于 2010-02-05 07:17:55

在调用DownloadData之前,可以使用set客户端的Credentials属性设置登录凭据

代码语言:javascript
复制
WebClient client = new WebClient();
client.Credentials = new NetworkCredential("username", "password");

EDIT:正如mjmarsh指出的那样,这只适用于在单个请求中使用质询-响应身份验证方法的站点(我非常习惯在工作中处理这个问题,我没有考虑过其他类型!)。如果站点使用窗体身份验证(或者实际上是任何其他形式的身份验证),则此方法将不起作用,因为身份验证不是单个请求的一部分-需要您自己处理多个请求。

票数 0
EN

Stack Overflow用户

发布于 2010-02-05 13:30:18

正如mjmarsh已经指出的那样,网络凭证将不起作用。

在网页抓取的过程中,我们遇到了很多需要登录的页面。我使用的方法之一是安装fiddler,并在手动登录站点时监控POST和获取数据包。这使您可以了解浏览器如何模拟登录。然后,您需要通过Code重新创建相同的流程。

例如,大多数web服务器使用cookies来假定会话已通过身份验证。因此,您可以使用凭据在网站上发布UserName和密码,并记录Cookie。然后,可以使用此cookie访问网站上的任何进一步详细信息。

请查看以下链接,了解有关高级Web抓取的更多信息:

http://krishnan.co.in/blog/post/Web-Scraping-Yahoo-Mail.aspx

在这个博客中,您将了解如何登录到Yahoo帐户,然后在验证后阅读页面。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2203881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档