问题:
有没有办法使用python selenium安全地将密码发送/输入文本框?加密,基本身份验证标头等?
示例(不安全):
driver = webdriver.Chrome()
Pass = WebDriverWait(driver, timeout_time).until(
lambda driver : driver.find_element_by_id('Pass'))
Pass.send_keys(password)
说明
问题在于,密码以纯文本形式写入stdout
,stderr
。任何抓住您的日志文件的人都可以验证您的帐户。我可以将stdout
,stderr
发送给/dev/null
,但必须有更好的方法吗?
此外,如果将password
写入文件,那么有人可能会截取您的请求并轻松获取您的详细信息吗?
答案 0 :(得分:1)
我认为没有这样的方法。 Selenium的目的是自动化测试。如果您需要通过send_keys方法提供密码,您的密码将在某些时候可读。 从python的角度来看,你可以使用64位编码:
>>> import base64
>>> print base64.b64encode("password")
cGFzc3dvcmQ=
>>> print base64.b64decode("cGFzc3dvcmQ=")
password
使用此解决方案,您的密码不会直接写入代码中,但可以轻松解码。该技术不安全,因为64位编码易于识别(即'='字符)。
另一个想法是在单独的python文件中编写密码并进行编译。你会得到一个“toto.pyc”文件,因为它只是编译后的字节码,所以人类无法读取。在您的真实脚本中,您必须导入此模块,然后您将访问刚刚放置的密码变量。
如前所述,它不会完全安全,因为密码在某些时候是可读的。