【问题标题】:Why am I getting CURLE_NOT_BUILT_IN when using libcurl with CURLOPT_PROXY?为什么在将 libcurl 与 CURLOPT_PROXY 一起使用时会出现 CURLE_NOT_BUILT_IN?
【发布时间】:2020-12-11 23:09:10
【问题描述】:

我正在使用代理 (Burp) 调试一些 HTTP 请求。

假设我们有这个命令,运行正常。 Burp 正在捕捉一切

curl --proxy localhost:8080 -k https://www.ipchicken.com/

现在我正在尝试以编程方式做同样的事情:

CURL     *curlHandle;
CURLcode curlErrorCode;
curlHandle=curl_easy_init();
curlErrorCode=curl_easy_setopt(curlHandle,CURLOPT_URL,"https://www.ipchicken.com/");
curlErrorCode=curl_easy_setopt(curlHandle,CURLOPT_PROXY,"https://127.0.0.1:8080");
curlErrorCode=curl_easy_setopt(curlHandle,CURLOPT_SSL_VERIFYPEER,0);
curlErrorCode=curl_easy_setopt(curlHandle,CURLOPT_HTTPGET,1L);
// ...
curlErrorCode=curl_easy_perform(curlHandle);
// ...
curl_easy_cleanup(curlHandle);

所有 curl_easy_setopt() 调用都返回 CURLE_OK。但是 curl_easy_perform() 正在返回 CURLE_NOT_BUILT_IN。

这没有意义,因为 curl 可执行文件是在与我正在使用的库相同的版本中制作的。

知道会发生什么吗?

谢谢。

【问题讨论】:

    标签: c++ libcurl burp


    【解决方案1】:

    对于 CURLOPT_PROXY 选项,我必须将 https:// 替换为 http://:

    curlErrorCode=curl_easy_setopt(curlHandle,CURLOPT_PROXY,"http://127.0.0.1:8080");
    

    现在可以了。

    为了记录,即使使用所有功能/包构建 libcurl 也不允许我将 HTTPS 用于代理类型。

    【讨论】:

    • 那么你使用了太旧的 curl 版本或不支持 HTTPS 代理的 TLS 后端
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-28
    • 2013-10-08
    • 1970-01-01
    • 2013-04-04
    • 2022-06-17
    • 1970-01-01
    • 2011-12-03
    相关资源
    最近更新 更多