5

我想知道您是否可以帮助我使用 C 和 libcurl 访问登录页面后面的 html。

具体例子:

我要访问的网站是https://onlineservices.ubs.com/olsauth/ex/pbl/ubso/dl

有可能做这样的事情吗?

问题是我们有很多客户,每个客户都有一个单独的登录名。我们需要每天从他们的每个帐户中获取数据。如果我们可以在 C 中编写一些东西来执行此操作并将所有相关数据保存到一个文件中,那将是非常巧妙的。(就像我可以从 html 解析的账户和头寸的值)

你们有什么感想?这是可能的吗?你能用一些例子等帮助我指出正确的方向吗?

4

1 回答 1

7

粗略浏览登录页面后,可以使用 libcurl 执行此操作,方法是将用户名/密码组合发布到他们的身份验证页面,并假设他们使用 cookie 来表示登录会话。第一步是确保您已设置以下选项:

  • CURLOPT_FOLLOWLOCATION - 服务器在认证后可能会重定向,这很常见。
  • CURLOPT_POST - 这告诉 libcurl 切换到 post 模式。
  • CURLOPT_POSTFIELDS - 这告诉 libcurl 为 post 字段设置的值。将此选项设置为“ userId=<insert username>&password=<insert password>”。该值来自该页面的源代码。
  • CURLOPT_USERAGENT - 设置一个简单的用户代理,这样网络服务器就不会把它扔掉(一些严格的会这样做)。

然后,一旦发布完成,libcurl 实例应该包含站点使用的某种授权 cookie,以识别登录用户。Curl 应该跟踪给定实例中的 cookie。如果您想调整 cookie 的行为方式,Curl 有很多选项。

确保一旦您“登录”,该帐户下的每个请求都使用相同的 libcurl 实例,否则它会将您视为已注销。

至于解析结果页面,有大量的 HTML 解析器用于 c - just google。我唯一要说的是不要尝试自己编写 HTML 解析器。这是出了名的棘手,因为很多网站不产生好的(甚至工作)HTML。

于 2010-08-23T17:40:21.580 回答