如果我是export http_proxy
,则curl
将自动使用代理。这是因为curl
在源代码中内部查找http_proxy
并设置代理,还是只是自动工作?似乎许多其他应用程序自动支持http_proxy,所以我认为http_proxy是由Linux处理的?
我正在编写一个需要支持代理(http_proxy ENV)的应用程序,想知道我是否应该在源代码中处理http_proxy。
通过工作代理运行,我发现它不一致。许多程序寻找http_proxy
,但其他程序使用其自己的配置文件。我不知道该使用什么准则,这取决于您用来访问网络的库。
如果使用curl
,the 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选项将覆盖环境变量。
它应该curl读取环境变量curl_easy_setopt(CURL *handle, CURLOPT_PROXY, char *proxy)
和设置代理,而不是linux系统。
发件人:http_proxy
libcurl尊重名为http_proxy,ftp_proxy,sftp_proxy等的代理环境变量。如果设置,libcurl将为该URL方案使用指定的代理。因此,对于“ FTP://” URL,将考虑使用ftp_proxy。如果未设置协议特定的代理,则使用all_proxy。
将代理字符串设置为“”(空字符串)将显式禁用代理的使用,即使已为其设置了环境变量。
这是因为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
环境变量。