如何使用libcurl登录安全网站并获取登录后面的html

时间:2010-08-23 17:21:40

标签: c html-parsing libcurl http-authentication

嘿伙计们,我想知道你们是否可以帮助我使用C和libcurl访问登录页面后面的html。

具体例子:

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

是否可以做这样的事情?

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

你们觉得怎么样?这是可能的吗?你可以用一些例子等帮我指出正确的方向......?

1 个答案:

答案 0 :(得分:6)

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

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

然后,一旦帖子完成,libcurl实例应该包含某种类型的授权cookie,用于识别登录用户。 Curl应该跟踪给定实例中的cookie。如果你想调整cookie的行为方式,Curl有很多选项。

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

至于解析生成的页面,有很多用于c的HTML解析器 - 只是google。我唯一要说的是不要自己编写HTML解析器。众所周知,这很棘手,因为很多网站都没有产生好的(甚至是工作的)HTML。