繁体   English   中英

如何使用CURL登录网站

[英]how to use CURL to login site

我对cURL非常陌生,因此希望可以得到一些帮助。 当前,我在Windows环境中,并且使用Visual Studio。

我正在尝试使用cURL通过DLink网站( https://mydlink.com/login )访问DLink IP摄像机。 并通过IP摄像机抓取视频流进行一些处理。 但是要做到这一点,我必须先登录。 但是我不确定该怎么做。 下面是我的代码。

int main() { CURL *curl; CURLcode result; char *url_1 = "https://mydlink.com/login"; char *postdata = "email=xyz@gmail.com&password=123456"; char *cookiefile = "tempcookie"; curl = curl_easy_init(); if( curl ) { curl_easy_setopt(curl, CURLOPT_COOKIEFILE, cookiefile); curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, 1); curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, dummy); curl_easy_setopt(curl, CURLOPT_URL, url_1); curl_easy_setopt(curl, CURLOPT_POSTFIELDS, postdata); // Connect to target (login) result = curl_easy_perform(curl); if( result ) cout << "Cannot connect to site, check your url!\n"; else { //... } } return 0; }

有人可以启发我,或者提供一些代码吗? 谢谢

1)您的示例代码不完整:您使用的虚拟函数不在列表中。 虚拟函数返回size * nmemb(请参见CURLOPT_WRITEFUNCTION的手册)非常重要,因此很难说出问题所在。

2)您不会输出错误代码:请使用curl_easy_strerror解码结果中的错误,然后您就会知道为什么失败。

3)如果我提供了自己的“虚拟”回调,那么我将获得一个没有错误的HTML页面,并且页面本身不会抱怨密码错误或任何错误(这很奇怪,但确实可行)。

这是我的假人:

    size_t dummy(char *ptr, size_t size, size_t nmemb, void *userdata)
    {
      printf("%.*s", size*nmemb, ptr);
      return size*nmemb;
    }

我进一步看了一下mydlink.com在做什么,它正在用电子邮件地址进行杂技表演(例如确定它是否是本地的,试图猜测一个区域等),然后操作cookie -都是在javascript中,因此我害怕有人必须挖掘该Javascript才能模拟正确的登录POST,或者可能找到有关mydlink.com服务的适当文档,对不起。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM