2016-02-06 56 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,謝謝你指出,你會建議什麼呢? –

相關問題