如何借助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,为程序的自动登录、后台作业等场景提供支持,赶紧试试吧!
快来关注本公众号 获取更多爬虫、数据分析的知识!

如何借助python第三方库存取不同应用程序的用户名、密码的更多相关文章
- python 循环使用 while 或 for 语句实现用户名密码输错三次退出
如有错误欢迎大家指出,新手初来乍到.程序没那么复杂,是最简单的. 一.需求 编写登录文件 .py1. 输入用户名密码2. 正确,输出欢迎登录3. 当输入用户名和密码小于 3 次,输入用户名或者密码错误 ...
- Python第三方库资源
[转载]Python第三方库资源 转自:https://weibo.com/ttarticle/p/show?id=2309404129469920071093 参考:https://github ...
- python爬虫抓取数据
URL管理器实现方式:1. 内存python内存待爬取URL集合:set()已爬取URL集合:set() 2. 关系数据库MySQLurls(url, is_crawled) 3. 缓存数据库(高性能 ...
- python第三方模块精选
python不但有着强大丰富的“内置电池”,同样的,第三方模块也是非常的多.目前收集了requests.paramiko.pymsql,以后会陆续添加: 一.requests Python标准库中提供 ...
- python第三方库,你要的这里都有
Python的第三方库多的超出我的想象. python 第三方模块 转 https://github.com/masterpy/zwpy_lst Chardet,字符编码探测器,可以自动检测文本. ...
- Python第三方库wordcloud(词云)快速入门与进阶
前言: 笔主开发环境:Python3+Windows 推荐初学者使用Anaconda来搭建Python环境,这样很方便而且能提高学习速度与效率. 简介: wordcloud是Python中的一个小巧的 ...
- Python第三方库matplotlib(2D绘图库)入门与进阶
Matplotlib 一 简介: 二 相关文档: 三 入门与进阶案例 1- 简单图形绘制 2- figure的简单使用 3- 设置坐标轴 4- 设置legend图例 5- 添加注解和绘制点以及在图形上 ...
- 离线安装 python 第三方库
离线安装 python 第三方库 首先你需要在联网的服务器上已经安装了一个第三方库,比如是paramiko,也就是说你已经执行了 pip install paramiko ,小提示: 如果在安 ...
- Python第三方库之openpyxl(8)
Python第三方库之openpyxl(8) 饼图 饼图将数据绘制成一个圆片,每个片代表整体的百分比.切片是按顺时针方向绘制的,0在圆的顶部.饼图只能取一组数据.该图表的标题将默认为该系列的标题. 2 ...
- python爬虫——爬取网页数据和解析数据
1.网络爬虫的基本概念 网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的程序.只要浏览器能够做的事情,原则上,爬虫都能够做到. 2 ...
随机推荐
- Git无法push提示报错443
更新 设置代理不能完美解决问题,需要检查本地的SSH配置是否正确,以及正确配置SSH密钥关联github账户 配置SSH参考链接: <GitHub如何配置SSH Key> https:// ...
- 图片转ASCII字符图案的原理(可调整亮度对比度 宽高度)
来, 先看效果哈哈哈哈! 演示地址: http://ascii-picture.imlht.com/ "\` """ . "\`"" ...
- MAUI Blazor 加载本地图片的解决方案
前言 为了解决MAUI Blazor无法加载本地图片,https://github.com/dotnet/maui/issues/2907,所以写了这篇文章. 有token大佬珠玉在前,https:/ ...
- vulnhub billu:b0x
知识点 SQLi.目录爆破.数据库操作.文件包含漏洞.提权.反弹shell 解题步骤 nmap扫描有80,22端口 nmap -sV -Pn -T 4 192.168.220.132 访问网页提示sq ...
- 关于NOI2010“超级钢琴”的反思
[NOI2010] 超级钢琴 题目描述 小 Z 是一个小有名气的钢琴家,最近 C 博士送给了小 Z 一架超级钢琴,小 Z 希望能够用这架钢琴创作出世界上最美妙的音乐. 这架超级钢琴可以弹奏出 \(n\ ...
- Django: request.query_params取值
取值 request.query_params.dict(),将querydict对象转换为字典 参考链接 https://www.jianshu.com/p/f2f73c426623 https:/ ...
- Swiper.vue?56a2:132 Uncaught DOMException: Failed to execute 'insertBefore' on 'Node': The node before which the new node is to be inserted is not a child of this node.
错误代码 解决方案 删除div标签.修改后,如下所示:
- 如何在达梦数据库中追踪慢SQL
在达梦数据库中,我们可以通过开启日志记录和设置最小执行时间来追踪慢SQL.下面是具体的步骤: 1. 修改dm.ini文件 使用以下命令编辑dm.ini文件: cd /home/dmdba/dmdbms ...
- 渗透小tis
知己知彼,百战不殆 1.如果提示缺少参数,如{msg:params error},可尝使用字典模糊测试构造参数,进一步攻击. 2.程序溢出,int最大值为2147483647,可尝试使用该值进行整数溢 ...
- CutLER:一种用于无监督目标检测和实例分割的方法
本文分享自华为云社区<CutLER:一种用于无监督目标检测和实例分割的方法>,作者:Hint. 目标检测是计算机视觉中的一种重要任务,使AI系统感知.推理.理解目标.训练定位模型需要特别的 ...