【问题标题】:Does http_proxy automatically work in Linux for all applications?http_proxy 是否自动在 Linux 中适用于所有应用程序?
【发布时间】:2020-01-15 00:46:22
【问题描述】:

如果我export http_proxy,那么curl 将自动使用代理。这是因为curl 查找http_proxy 并在源代码内部设置代理还是它只是自动工作?似乎很多其他应用程序都自动支持 http_proxy,所以我认为 http_proxy 可能是由 Linux 处理的??

我正在编写一个需要支持代理(http_proxy ENV)的应用程序,想知道我是否应该在源代码中处理 http_proxy。

【问题讨论】:

    标签: c linux proxy http-proxy


    【解决方案1】:

    这是因为 curl 在源代码内部查找 http_proxy 并设置代理,还是它只是自动工作?

    curl 获取curl/lib/url.c 中的环境变量http_proxy 的值并进行处理。它不能“自动”工作。

    我想也许 http_proxy 是由 Linux 处理的?

    不,不是。它由 curl 显式处理。

    想知道我是否应该在源代码中处理 http_proxy。

    您可以保持与curl 等其他工具的兼容性,并在您的应用程序中支持http_proxy 环境变量。

    【讨论】:

      【解决方案2】:

      通过工作代理运行,我发现它不一致。许多程序寻找http_proxy,但其他程序使用自己的配置文件。我不知道使用哪些指南,这取决于您用于访问网络的库。

      如果您使用的是curlthe API curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy) says

      libcurl 尊重名为 http_proxy、ftp_proxy、sftp_proxy 等的代理环境变量。如果设置,libcurl 将使用该 URL 方案的指定代理。因此,对于“FTP://” URL,会考虑 ftp_proxy。如果未设置协议特定代理,则使用 all_proxy。

      如果设置了 no_proxy(或 NO_PROXY),则与设置 CURLOPT_NOPROXY 选项完全相同。

      CURLOPT_PROXY 和 CURLOPT_NOPROXY 选项会覆盖环境变量。

      【讨论】:

        【解决方案3】:

        curl 应该读取环境变量http_proxy 并设置代理,而不是 linux 系统。

        【讨论】:

          【解决方案4】:

          来自: https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html

          libcurl 尊重名为 http_proxy、ftp_proxy、sftp_proxy 等的代理环境变量。如果设置,libcurl 将使用该 URL 方案的指定代理。因此,对于“FTP://” URL,会考虑 ftp_proxy。如果未设置协议特定代理,则使用 all_proxy。

          将代理字符串设置为“”(空字符串)将显式禁用代理,即使已为其设置了环境变量。

          【讨论】:

            猜你喜欢
            • 2011-10-13
            • 2014-09-18
            • 1970-01-01
            • 1970-01-01
            • 2023-03-03
            • 1970-01-01
            • 2011-01-26
            • 2011-10-21
            • 2010-12-11
            相关资源
            最近更新 更多