首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言獲取 HTTPS 網頁內容:使用 libcurl 庫

     編輯:程式設計疑難解答

為什麼選 libcurl?

  • 支援 HTTP/HTTPS、FTP、SFTP 等多協議。
  • 處理 SSL/TLS 握手、證書驗證、Cookie、重定向、代理等複雜細節。
  • 跨平台(Linux、Windows、macOS、嵌入式),API 穩定成熟。

最小化 HTTPS GET 範例

#include <stdio.h>
#include <curl/curl.h>

size_t write_cb(void *ptr, size_t size, size_t nmemb, void *userdata) {
    fwrite(ptr, size, nmemb, (FILE*)userdata);
    return size * nmemb;
}

int main() {
    CURL *curl = curl_easy_init();
    if (!curl) return 1;

    FILE *fp = fopen("output.html", "wb");
    curl_easy_setopt(curl, CURLOPT_URL, "https://example.com");
    curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_cb);
    curl_easy_setopt(curl, CURLOPT_WRITEDATA, fp);
    // 生產環境務必驗證證書
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 1L);
    curl_easy_setopt(curl, CURLOPT_SSL_VERIFYHOST, 2L);
    // 可選:指定 CA 憑證束
    // curl_easy_setopt(curl, CURLOPT_CAINFO, "/etc/ssl/certs/ca-certificates.crt");

    CURLcode res = curl_easy_perform(curl);
    if (res != CURLE_OK) fprintf(stderr, "curl_easy_perform() failed: %s\n", curl_easy_strerror(res));

    fclose(fp);
    curl_easy_cleanup(curl);
    return 0;
}

編譯鏈結

gcc https_get.c -o https_get -lcurl

進階主題

  • POST 請求:CURLOPT_POSTFIELDS、CURLOPT_POSTFIELDSIZE。
  • 自定義 Header:CURLOPT_HTTPHEADER。
  • 非同步/多介面:curl_multi 系列 API。

libcurl 官方教程 libcurl tutorial 涵蓋所有常見場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved