当前位置: 首页 > news >正文

做网站需要空间/seo刷关键词排名免费

做网站需要空间,seo刷关键词排名免费,网站 方案,网站建设方案书范文很多浏览器都贴心地提供了保存用户密码功能,用户一旦开启,就不需要每次都输入用户名、密码,非常方便。作为python脚本,能否拿到用户提前保存在浏览器中的用户名密码,用以自动登录呢?必须有,小爬…

很多浏览器都贴心地提供了保存用户密码功能,用户一旦开启,就不需要每次都输入用户名、密码,非常方便。作为python脚本,能否拿到用户提前保存在浏览器中的用户名密码,用以自动登录呢?必须有,小爬已经提前踩过很多坑,找到了可行的方案。

以Chrome浏览器为例,浏览器中的用户数据(包含加密后的密码)都存在下图所示的位置中:

img

文件的路径就像这样 C: => Users => <Your_Name> => AppData =>Local => Google => Chrome => User Data =>Local State

由于每台电脑的用户名是不确定的,因此小爬这里用python中的OS库来动态得到:

local_computer_directory_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome","User Data", "Local State")

知道了具体位置后,我们需要先拿到加密后的密文,显然该密码肯定不是以明文的形式保存在文件中,否则安全无法保证。获取密文之前,还得先知道用于加密的密钥,这需要先安装pycryptodomex库,直接用pip来安装即可。一切就绪,现在编写一个获取密钥的python函数:

 import os,json,base64,sqlite3,win32crypt,shutilfrom Cryptodome.Cipher import AES#需要安装pip install pycryptodomex 库from datetime import  datetime, timedeltadef fetching_encryption_key():'''动态获取保存用户数据的文件的路径,然后读出加密后的密文'''local_computer_directory_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local", "Google", "Chrome","User Data", "Local State")with open(local_computer_directory_path, "r", encoding="utf-8") as f:local_state_data = f.read()local_state_data = json.loads(local_state_data)# decoding the encryption key using base64encryption_key = base64.b64decode(local_state_data["os_crypt"]["encrypted_key"])# remove Windows Data Protection API (DPAPI) strencryption_key = encryption_key[5:]# return decrypted keyreturn win32crypt.CryptUnprotectData(encryption_key, None, None, None, 0)[1]

有了这个密钥,咱们还需要编写一个解密的方法将密码变成明文,考虑到Chrome浏览器的版本80之前和之后用了截然不同的加密手段,因此,对应的解密方法也不同,小爬将他们一并整合到解密的函数中:

def password_decryption(password, encryption_key):try:iv = password[3:15]password = password[15:]# generate ciphercipher = AES.new(encryption_key, AES.MODE_GCM, iv)# decrypt passwordreturn cipher.decrypt(password)[:-16].decode()except:try:return str(win32crypt.CryptUnprotectData(password, None, None, None, 0)[1])except:return "No Passwords"

核心搞定之后,还涉及到一个知识点,用于某个网站登录的用户名 以及加密后的密文存储在哪里?别急,还是之前提到的Local State文件,其实它是一个本地sqlite3数据库文件,我们可以借助sqlite3库以及sql语法轻松获取。当然需要先知道目标网站的域名,比如小爬就想取本地chrome浏览器中我自己保存用于登录博客园网站(base_url="cnblogs.com")的用户名密码。另外需要注意的是,同一个网站,浏览器是支持同时保存几组用户名密码的。代码示例如下:

  def get_url_credential(base_url):'''如果chrome浏览器本地存储了OA密码,则返回用户和密码列表,否则返回False'''key = fetching_encryption_key()db_path = os.path.join(os.environ["USERPROFILE"], "AppData", "Local","Google", "Chrome", "User Data", "default", "Login Data")filename = "ChromePasswords.db"shutil.copyfile(db_path, filename) # 为了避免程序bug将原有的login Data 文件损坏,复制一份出来供程序用# connecting to the databasedb = sqlite3.connect(filename)cursor = db.cursor()cursor.execute("select origin_url, action_url, username_value, password_value, date_created, date_last_used from logins order by date_last_used")user_name,pass_word=None,NoneuserInfos=[] # 用于存放多组同一个网站的用户名 密码for row in cursor.fetchall():main_url = row[0]if base_url in main_url:user_name = row[2]pass_word = password_decryption(row[3], key)userInfos.append([user_name,pass_word])cursor.close()db.close()try:os.remove(filename)except:passreturn userInfos

还在围观吗?动手能力强的已经跃跃欲试,把它用到真正的办公自动化场景中了。希望这些对现实业务的思考和代码实现,能对您的工作有所启发。不管咋说,活到老,学到老。拒绝躺平,一起卷起来!

http://www.whsansanxincailiao.cn/news/31954674.html

相关文章:

  • 镇江做网站的/谷歌手机版浏览器官网
  • 网站的宣传方法有哪些/如何在网上推广自己的产品
  • wordpress 浏览器上显示错位/seo工具不包括
  • 深圳软件定制开发服务/长沙seo咨询
  • 东莞微网站制作/如何制作一个自己的网站
  • 网站产品关键词导出/市场调研报告万能模板
  • 餐饮手机微网站怎么做/网址生成短链接
  • 做宣传片的网站/广告优化师的工作内容
  • 做网站用别人图片文章会侵权吗/网站搜索引擎优化案例
  • ccd深圳设计公司/石家庄网站建设seo
  • 快印店网站建设84wzjs/近期国内外重大新闻10条
  • 河南南阳最新消息今天/seo网络优化师招聘
  • 广告网站建设公司/国外推广渠道平台
  • 花店网站建设课程设计论文/在线工具
  • 网站维护提醒php文件/百度公司怎么样
  • 网络营销推广方法工具/济南网站seo哪家公司好
  • 免费申请电信卡/南昌seo优化公司
  • 驻马店哪里做网站/查看网站流量的工具
  • 微信公众平台推广网站/百度seo搜索引擎优化厂家
  • 做服装网站需要什么条件/网络营销 长沙
  • 网站建设和前端开发的区别/百度权重
  • 北京好网站制作公司/关键词查询工具有哪些
  • 重庆外贸网站建设公司/我要推广网
  • 牛商网建设的食品网站/外贸网站推广怎么做
  • 备案 网站名称 重复/网络营销中的seo是指
  • 河北 网站建设/2022最新国际新闻10条简短
  • 什么网站可以在线做考教师岗位的题/网络营销渠道策略
  • 广告策划活动公司/北京债务优化公司
  • 网站域名购买方法/百度企业号
  • 深圳正规网站开发团队/软文之家