如何借助python第三方库存取不同应用程序的用户名、密码

在之前的一系列文章中,小爬分享了很多用Pywin32、uiAutomation、sap Gui Script等技术实现应用程序或者Web网站(如SAP、Excel、outLook邮件系统、OA系统)的自动化操作的文章。但是,这些文章都绕开了一个知识点:如何优雅地实现自动登录。与其说是想聊聊如何实现自动登录,其实是绕到了另一个技术问题:如何安全可靠的存储、更新和读取用户名、密码?

都2023年了,即使是给自己用的python脚本,小爬也绝不建议直接在脚本中写下明文的密码,亦或是在某个ini配置文件中直接写密码,这样密码泄露的风险非常高。如果咱们开发的脚本是准备封装为exe文件给他人使用,更是应该做好这些用户名、密码信息的安全存储,不然谁敢用你提供的工具。

不卖关子,如果您刚好喜欢用python编程,这里推荐使用python第三方包,keyring(keyring · PyPI),非常方便。

Python keyring库使我们轻松访问系统的keyring服务,它可以用于任何 需要安全密码存储的应用程序。在windows系统中,keyring支持的后端服务:Windows Credential Locker

Keyring简单上手

keyring最基础的用法很简单,只需要用到 keyring.set_password 以及keyring.get_password 方法:

复制代码
>>> import keyring
>>> keyring.set_password("system", "username", "password")
>>> keyring.get_password("system", "username")
'password'

命令行用法

当我们通过pip install keyring安装完之后,我们便可以在命令行(CMD、Powershell)下轻松设置、获取以及删除密码。

复制代码
PS C:\Users\Admin> keyring -h
usage: keyring [-h] [-p KEYRING_PATH] [-b KEYRING_BACKEND] [--list-backends] [--disable]
               [--print-completion {bash,zsh,tcsh}]
               [{get,set,del,diagnose}] [service] [username]

positional arguments:
  {get,set,del,diagnose}
  service
  username

optional arguments:
  -h, --help            show this help message and exit
  -p KEYRING_PATH, --keyring-path KEYRING_PATH
                        Path to the keyring backend
  -b KEYRING_BACKEND, --keyring-backend KEYRING_BACKEND
                        Name of the keyring backend
  --list-backends       List keyring backends and exit
  --disable             Disable keyring and exit
  --print-completion {bash,zsh,tcsh}
                        print shell completion script

知道这些之后,假如我们想存储比如OA的用户名 NewJune、密码mypsd,在命令行中的效果是这样:

复制代码
PS C:\Users\admin> keyring set oa newjune
Password for 'newjune' in 'oa':
PS C:\Users\adminn> keyring get oa newjune
mypsw

API

keyring库给我们提供了这些API来调用:

  • get_keyring(): Return the currently-loaded keyring implementation.返回当前载入的keyring实现。

  • get_password(service, username): Returns the password stored in the active keyring. If the password does not exist, it will return None.返回当前活跃keyring中存储的密码,如果密码不存在,则返回None。

  • get_credential(service, username): 返回活跃keyring中的一个credential对象,对象中包含特定服务的username和password属性。username参数可以设置为None,如果某个服务存储了多组用户名密码,则会随机返回一组。

  • set_password(service, username, password): Store the password in the keyring.将密码存储入keyring中。

  • delete_password(service, username): Delete the password stored in keyring. If the password does not exist, it will raise an exception.删除存储在keyring中的密码,如果密码不存在,则会抛出异常。

有了Keyring库,我们就可以轻松将SAP、OA、浏览器等应用的用户名、密码进行系统安全级别的存储,也可以随时用脚本取出对应的凭据credential,为程序的自动登录、后台作业等场景提供支持,赶紧试试吧!

快来关注本公众号 获取更多爬虫、数据分析的知识!

相关推荐
aliceDingYM3 小时前
Linux python3.6安装mayavi报错
linux·python·ui
.生产的驴6 小时前
SpringBoot AOP切入点表达式
spring boot·后端·python
逆水寻舟7 小时前
算法学习记录2
python·学习·算法
B站计算机毕业设计超人7 小时前
计算机毕业设计Python深度学习美食推荐系统 美食可视化 美食数据分析大屏 美食爬虫 美团爬虫 机器学习 大数据毕业设计 Django Vue.js
大数据·python·深度学习·机器学习·数据分析·课程设计·推荐算法
码农超哥同学7 小时前
Python面试题:请解释 `lambda` 函数是什么,并举一个例子
开发语言·python·面试·编程
sssjjww7 小时前
python输出日志out.log相关问题(缓存机制)
java·python·缓存
Uluoyu7 小时前
python爬虫爬取中国国际招标有限公司
开发语言·爬虫·python
Python私教8 小时前
zdppy+onlyoffice+vue3解决文档加载和文档强制保存时弹出警告的问题
vue.js·python
菜鸟赵大宝8 小时前
【Python】Python中TODO的用法解析
python·pycharm
Narutolxy8 小时前
如何高效管理和迁移Python开发环境:从Conda到纯Python的转换指南
开发语言·python·conda