在Python Selenium中从加密的JSON文件中传递加密的用户名和密码

问题描述 投票:0回答:1

[因此,我试图从git存储库中特定目录中的secrets.json文件中传递加密数据,该文件被.gitignore文件忽略。我安装了gpg,并且能够实际加密文件,并且在向*.gpg文件添加.gitignore属性的同一目录中也忽略了该文件。但是,我不知道如何从加密的JSON文件中传递加密的数据。

我的Json文件看起来像这样,标题为secrets.json

{
        "user": {
            "name": "username",
            "password": "password"
  }
}

当我在基于Windows的计算机上使用gpg加密时,我使用:

gpg --output secrets.gpg --encrypt .\secrets.json

这将在该目录中创建secrets.json文件的加密json文件。我想通过Python和Selenium将加密的数据传递到网站。我尝试使用的代码位于以下link中:

我有特定的部分可以正确发送json:

import json
with open('secrets.json','r') as f:
      config = json.load(f)

但是我该如何使用已加密的secrets.gpg呢?我不喜欢在没有加密的情况下将平面文件仅放在系统中。用gpg命令制作文件,如果我把它编出来,它将看起来像这样:

…☻♀♥þÁã/æ#5☺☼ÿPÒÁÑg*af˜…‘o►⌂S.▬qd„huÖÏÜr∟       /QVuÆóë♀*3♠ž%♂ÅB☻jKÓ£+û☻¦~q~FyÎïê ☺↓Dlœ*Mgt#ɤx“gú™Ò´ee2f∟y•š„ãe@' ► 2ì4x↑hpòCž½↔¾I‡[¬Ék—F_¹]£ÂO—A♀„NÉ·/aLÄÆÚ☻òHš<›Eò£z'äÇf◄WÐr¨Cµw.→u…j⌂⌂š¯…kS↕={˜→)s~ŸÊ‡Ä^‰6h•Or>♀#È¿¿Ò"♥ºFEu^F…×f*-Bðüƒü/9
gë›t†wmî7ct§þwv]Úf:`Ì~ñ®+˜š↕¬Þí­↑·O=ç<ýL↕7übV )D→.£×Ð☻»♫à‚ŠÃǶÜÿ³H”X~q” ÀOI0kÌù„¥È½Â↓b)᫬ñ⌂ÍÄ3ð¿ÀùÁà,‹A→Æ▼X0↑♣Ž↔xE‡ÿ®2Á♥aÃøÚì▲B\WSä♥ú☺dþ8ȵi8{↑(¢ËXác☼éqÍu+ôŒDA↑♣Ÿ¥→¼I1n↨rN¦ÿô0r!"ªÕ*Á‚´¡↨²€ÏXWz*³µún1u(„ÞäÇO:$iÖ(×ÃÍDÒEòp↕²Q☻pé♫6”.‰q¹ý@ÓÒAUägÊÊ#@^GQ☺;-§7™Ð±”­ø›↕V@SºVK☻HãÒ,↓€W²`⌂CºŠYÕZòø®ÄwW
¯/☺Ħëa"³+(ŠM~^TÕ0Ñ↕‼ÈßZV}Q£FEû´ÏuußaæT☻ƽ„Ý?†ñ↑~↕GÎ↓2”Z£däÿÌi`m‹÷ ♂0&Õž#<”#ËZ‰§Ì§µ
☻ˆÜ¬8÷§2µù®ŒËïM×▬òkÊü+‼Í–

我意识到这是随机的,因此对于其他将使用gpg来重现此问题的人来说,它看起来可能有所不同。

python selenium encryption gnupg browser-automation
1个回答
0
投票

所以我找到了答案,只是我后来无法弄清楚如何清理文件。但基本上,您必须从加密文件中创建文件,然后将其删除。以下内容使我可以使用subprocess模块​​将信息实际解密为json文件。

#!/bin/python
# ===========================================================
# Created By: Richard Barrett
# Organization: DVISD
# DepartmenT: Data Services
# Purpose: Test Score & 3rd Party Website Data Pull Automation
# Date: 01/20/2020
# ===========================================================

import selenium
import shutil
import xlsxwriter
import os
import unittest
import requests
import subprocess
import getpass
import time 
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait 
from datetime import date

decrypt = "gpg --output secrets_test.json --decrypt secrets.gpg" 
returned_value = subprocess.call(decrypt, shell=True)

remove = "rm .\secrets_test.json" 

import json
with open('secrets_test.json','r') as f:
      config = json.load(f)

它基本上是解密文件,并使用gpg将其存储在json输出中。我使用了无密码加密,我知道这是不安全的,但是它允许我以加密方式存储数据,并在硒中通过密码和凭据的解密过程,现在唯一的问题是删除文件。但是我发现了如何使用os.remove()函数从os模块中删除文件。

© www.soinside.com 2019 - 2024. All rights reserved.