通过c / libcurl访问具有有效密码的受密码保护的新闻站点

时间:2012-05-22 10:02:46

标签: c web-scraping libcurl password-protection http-authentication

我使用libcurl在C中编写了一个网站爬虫,如果我们愿意,可以从任何网站上抓取文本内容。

但是,我们需要的是能够使用有效订阅来抓取受密码保护的网站,例如大型新闻发布者。所以我们有这些网站的用户名/密码。

任何人都可以使用libcurl提供有关实现此目的的建议。我知道你可以在libcurl选项中添加用户名/密码。我认为这样做,只需访问可能受密码保护的正确页面,就可以了。以下是CURL代码的摘录:

curl_easy_setopt(curlTestHandle, CURLOPT_URL, "mypasswordprotectedwebsiteurl");
curl_easy_setopt(curlTestHandle, CURLOPT_WRITEFUNCTION, WriteMemoryCallback);
curl_easy_setopt(curlTestHandle, CURLOPT_FOLLOWLOCATION, 1);
curl_easy_setopt(curlTestHandle, CURLOPT_MAXREDIRS, 5);

curl_easy_setopt(curlTestHandle, CURLOPT_USERPWD, "myusername:mypassword");

res = curl_easy_perform(curlTestHandle);
curl_easy_getinfo (curlTestHandle, CURLINFO_RESPONSE_CODE, &httpResponse);

但是,也许我太简单了?也许它可能适用于某些网站,但不适用于其他网站?有人完成并取得了类似的成就吗?

谢谢,

的Manoj

1 个答案:

答案 0 :(得分:0)

这取决于。如果站点在登录表单中为隐藏字段生成不同的编号,则必须解析(或简单搜索)HTML文件以将隐藏字段附加到请求。否则,您可以对代码中的值进行硬编码。

这还取决于您要抓取多少个不同的网站。如果有许多不同的网站,那么最好的办法是解析HTML(或以某种方式阅读带有字符串搜索的表单)并获取登录时要填写的字段。

您还必须阅读并设置Cookie。我认为libcurl应该具有处理这个问题的功能。

---我很困,我可能会偏离主题。如果这篇文章没有任何帮助,请告诉我删除它。