如何在安全的网站中使用webclient?

Ode*_*ded 7 .net screen-scraping

我需要自动化涉及使用登录表单的网站的流程.我需要在登录页面后面的页面中捕获一些数据.

我知道如何屏幕抓取普通网页,而不是安全网站背后的网页.

  1. 可以使用.NET WebClient类完成吗?
    • 我将如何自动登录?
    • 我如何继续登录其他页面?

Haf*_*hor 9

一种方法是通过自动化浏览器 - 你提到了WebClient,所以我猜你可能指的是.NET中的WebClient.

两个要点:

  • 与WebClient相关的https没有什么特别之处 - 它只是起作用
  • Cookie通常用于进行身份验证 - 您需要捕获并重放它们

这是我要遵循的步骤:

  1. 获取登录表单,捕获响应中的cookie.
  2. 使用Xpath和HtmlAgilityPack,找到"input type = hidden"字段名称和值.
  3. 使用用户名,密码和请求正文中的隐藏字段值POST登录表单的操作.在请求标头中包含cookie.再次,在响应中捕获cookie.
  4. 再次使用请求标头中的cookie获取所需的页面.

在第2步,我提到了一种有点复杂的自动登录方法.通常,您可以使用用户名和密码直接发布到已知的登录表单操作,而无需获取初始表单或中继隐藏字段.某些网站在其表单上进行了表单验证(与字段验证不同),这使得此方法无效.

HtmlAgilityPack是一个.NET库,允许您将格式错误的HTML转换为XmlDocument,以便您可以对其进行XPath.非常有用.

最后,您可能会遇到这样一种情况,即表单依赖客户端脚本在提交之前更改表单值.您可能需要模拟此行为.

使用工具查看此类工作的http流量非常有用 - 我推荐ieHttpHeaders,FiddlerFireBug(网络标签).