2016-02-06 57 views
0

我想获取网站的HTML代码。 我使用的代码是使用https获取网站的源代码,使用cURL

static size_t write_data(void *ptr, size_t size, size_t nmemb, void *stream) 
{ 
    int written = fwrite(ptr, size, nmemb, (FILE *)stream); 
    return written; 
} 

int main(void) 
{ 
    CURL *curl_handle; 
    static const char *headerfilename = "head.txt"; 
    FILE *headerfile; 
    static const char *bodyfilename = "body.txt"; 
    FILE *bodyfile; 

    curl_global_init(CURL_GLOBAL_ALL); 

      curl_handle = curl_easy_init(); 

    curl_easy_setopt(curl_handle, CURLOPT_URL, "http://www.chess.com"); 

      curl_easy_setopt(curl_handle, CURLOPT_NOPROGRESS, 1L); 

    curl_easy_setopt(curl_handle, CURLOPT_WRITEFUNCTION, write_data); 
    curl_easy_setopt(curl_handle,CURLOPT_FOLLOWLOCATION,1); 

    headerfile = fopen(headerfilename,"w"); 
    if (headerfile == NULL) { 
    curl_easy_cleanup(curl_handle); 
    return -1; 
    } 
    bodyfile = fopen(bodyfilename,"w"); 
    if (bodyfile == NULL) { 
    curl_easy_cleanup(curl_handle); 
    return -1; 
    } 
    curl_easy_setopt(curl_handle, CURLOPT_WRITEDATA, headerfile); 

    curl_easy_perform(curl_handle); 
      fclose(headerfile); 

    curl_easy_cleanup(curl_handle); 
     return 0; 
} 

这个代码适用于谷歌(使用HTTP),而不是chess.com(使用HTTPS)。 我怎样才能让它为两者工作?

回答

0

以下添加到卷曲代码:

curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYHOST, 0); 
curl_easy_setopt(curl_handle, CURLOPT_SSL_VERIFYPEER, 0); 
+0

我想如果没有仔细考虑先做这是一个彻头彻尾的适得其反的建议,并打开该用户的MITM攻击等等。 –

+0

嗨@DanielStenberg,谢谢你指出,你会建议什么呢? –

相关问题