如何从python中的osx钥匙串获取代理密码?

k4v*_*vin 5 python macos shell proxy keychain

目前我正在通过在 python 中运行以下 shell 命令来获取密码

对于 Http 代理密码

security find-internet-password -s 192.168.1.38 -r htsx -P 808 -w
Run Code Online (Sandbox Code Playgroud)

对于 Https 代理密码

security find-internet-password -s 192.168.1.38 -r htpx -P 808 -w
Run Code Online (Sandbox Code Playgroud)

我通过运行以下代码获得所有这些主机名和端口

>>> import urllib
>>> urllib.getproxies()
{'http': 'http://192.168.1.38:808', 'https': 'http://192.168.1.38:808'}
Run Code Online (Sandbox Code Playgroud)

但是每次我从 python 运行上述 shell 命令时,我都会被要求允许“安全”访问钥匙串,如果我给了始终允许应用程序访问钥匙串以获得代理密码,那么代理密码甚至可以被其他应用程序访问我没有明确允许。他们可以通过运行相同的命令来访问代理密码(我已经在命令提示符下尝试过,这次它没有提示我并尝试从其他 python 脚本访问它,它也没有征求我的许可)。

在此处输入图片说明

但是其他应用程序(如 AuthBroker)在访问代理时显示以下消息

在此处输入图片说明

我知道我正在授予应用程序安全性访问钥匙串的权限,但其他应用程序正在为自己请求权限。我的方法可能会危及系统的安全性。

我有两个问题:

  1. 访问代理密码的钥匙串的推荐方法是什么?
  2. 有没有可以做到这一点的python库?

Qui*_*lor 7

在Python中使用keyring库超级方便。安装对我来说很简单:

$ sudo easy_install keyring
Run Code Online (Sandbox Code Playgroud)

然后,使用这里描述的简单 API:https : //alexwlchan.net/2016/11/you-should-use-keyring/

$ python
>>> import keyring
>>> import getpass
>>> keyring.set_password('twitter', 'xkcd', getpass.getpass())
Password: 
>>> keyring.get_password('twitter', 'xkcd')
u'correct horse battery staple'
Run Code Online (Sandbox Code Playgroud)

有关此密码背后的故事,请参阅https://xkcd.com/936/。:-)

我不确定这是否与您所指的代理密码完全集成,因为我只是使用它来存储简单脚本的密码。