我很难找到一种方法来选择在网页上的证书,使用python。我试过这些例子,但仍然不起作用。有人能帮我吗?
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
navegador = webdriver.Chrome("C:\Program Files\Google\Chrome\Application\chromedriver.exe")
navegador.get("https://cav.receita.fazenda.gov.br/ecac/")
navegador.find_element_by_id("login-dados-certificado").click()
navegador.find_element_by_id("cert-digital").click()
1条答案
按热度按时间wh6knrhe1#
如果你想尝试使用注册表编辑器和使用ChromeDriver尝试:
1-)按Windwos + R并键入“regedit”。
2-)右键点击“Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies”,选择new -> Key并输入名称“Google”,然后在此键中添加密钥“Chrome”,并在此键中添加名为“AutoSelectCertificateForUrls”的密钥。完整路径必须是“Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome\AutoSelectCertificateForUrls”。
3-)右键点击AutoSelectCertificateForUrls,new -> String Value,并输入名称“1”。
4-)右键点击“1”,修改后复制粘贴此JSON“{“pattern”:“https://urlFromTheSiteYouWantAccess”,“filter”:{“ISSUER”:{“CN”:“your cn”},“SUBJECT”:{“CN”:“your certificate cn”}}}"。
如果您只想使用一个证书访问E-CAC,您可以手动编辑上面的JSON,其中包含按钮发送证书的URL以及您希望chrome为您选择的证书的颁发者和主题信息。
但是如果你想使用多个证书,你可以使用python的这段代码来打开一个证书,获取颁发者和主题的信息,并在注册表AutoSelectCertificateForUrls中更改StringValue“1”中的JSON。
进口。
打开证书的方法:
更新注册表项“AutoSelectCertificateForUrls”中StringValue中Json的方法:
主要的地方,我声明2变量的路径,其中是字符串值和字符串值的名称。在我的例子中是“1”:
获取证书及签发人、主体信息:
第一个URL是证书发送的地址,另一个是我们有证书登录按钮的页面:
构建json,(抱歉处理字符串的方式很难看)并调用方法编辑字符串值注册表:
最后点击证书登录按钮代码:
下载代码请访问我的github here