http_proxy是否可以在Linux中对所有应用程序自动运行?

问题描述 投票:0回答:4

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

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

c linux proxy http-proxy
4个回答
0
投票

通过工作代理运行,我发现它不一致。许多程序寻找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选项将覆盖环境变量。


0
投票

它应该curl读取环境变量curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy)和设置代理,而不是linux系统。


0
投票

发件人:http_proxy

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

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


0
投票

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

https://curl.haxx.se/libcurl/c/CURLOPT_PROXY.html获取curl中环境变量http_proxy的值并对其进行处理。它不能“自动”工作。

我认为也许http_proxy由Linux处理?

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

很奇怪我应该在源代码中处理http_proxy。

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

© www.soinside.com 2019 - 2024. All rights reserved.