我目前正在使用libproxy来获取RedHat和Debian Linux上的代理信息(如果有的话)。它不能很好地工作,但它是我知道我可以用来从我的代码中获取代理信息的唯一方法。 我需要停止使用lib,因为在大多数情况下它不能识别代理。 有没有办法获取代理信息?我的意思是,是否有我可以阅读的文件(或文件组),或者我可以用来获取信息的env变量或API或系统调用? 基于Gnome的代码是可以的,KDE可能也有帮助,但我正在寻找更通用的东西。 代码是C。
现在,在有人要求之前,我不想再使用libproxy了。期。我不想开始调查它为什么不起作用。我真的不想知道是否有新版本的lib。我知道它可能有效,我只是不想使用它。我不能使用它(只是因为)。所以请不要指我那样。
感谢代码。
感谢。
答案 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
。