以编程方式获取Linux上的代理信息

时间:2009-11-10 16:07:19

标签: c linux proxy

我目前正在使用libproxy来获取RedHat和Debian Linux上的代理信息(如果有的话)。它不能很好地工作,但它是我知道我可以用来从我的代码中获取代理信息的唯一方法。 我需要停止使用lib,因为在大多数情况下它不能识别代理。 有没有办法获取代理信息?我的意思是,是否有我可以阅读的文件(或文件组),或者我可以用来获取信息的env变量或API或系统调用? 基于Gnome的代码是可以的,KDE可能也有帮助,但我正在寻找更通用的东西。 代码是C。

现在,在有人要求之前,我不想再使用libproxy了。期。我不想开始调查它为什么不起作用。我真的不想知道是否有新版本的lib。我知道它可能有效,我只是不想使用它。我不能使用它(只是因为)。所以请不要指我那样。

感谢代码。

感谢。

3 个答案:

答案 0 :(得分:6)

在linux中,“全局代理设置”通常只是通常在/etc/profile中设置的环境变量。您可以检查这些变量以查看设置了什么代理。

变量是:

  • http_proxy - HTTP连接的代理
  • ftp_proxy - FTP连接的代理

使用Gnome下的网络代理首选项工具可以保存GConf数据库中的信息。密钥的路径为/system/http_proxy/system/proxy。您可以在this page了解这些树中的详细信息。

您可以使用library API访问GConf数据库。请注意,GConf基于GObject。要使用命令行检查此树的内容,请尝试以下操作:

gconftool-2 -R /system/http_proxy

这将提供树的“name = value”列表,可以在您的应用程序中使用。请注意,这需要system()调用,因此不建议将其用于已部署的应用程序,但它可能会帮助您开始使用。

答案 1 :(得分:1)

GNOME有自己的存储代理设置的地方,我相信KDE或任何其他DE也有它自己的位置。也许你可以在Linux Standard Base中找到代理设置应存储的位置。无论Distro还是DE,这都可能暗示你做这个标准。

DE - >桌面环境

答案 2 :(得分:1)

char* proxy = getenv("all_proxy");

此语句将称为all_proxy的环境变量的值放在C变量中,该值由系统用作全局代理。

要以bash打印,请尝试env | grep 'all_proxy' | cut -d= -f 2