Для Firefox вам необходимо установить следующие accept_untrusted_certs
FirefoxProfile()
параметры True
:
from selenium import webdriver
profile = webdriver.FirefoxProfile()
profile.accept_untrusted_certs = True
driver = webdriver.Firefox(firefox_profile=profile)
driver.get('https://cacert.org/')
driver.close()
Для Chrome вам нужно добавить аргумент:--ignore-certificate-errors
ChromeOptions()
from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_argument('ignore-certificate-errors')
driver = webdriver.Chrome(chrome_options=options)
driver.get('https://cacert.org/')
driver.close()
Для Internet Explorer вам необходимо установить acceptSslCerts
желаемую возможность:
from selenium import webdriver
capabilities = webdriver.DesiredCapabilities().INTERNETEXPLORER
capabilities['acceptSslCerts'] = True
driver = webdriver.Ie(capabilities=capabilities)
driver.get('https://cacert.org/')
driver.close()
На самом деле, согласно Desired Capabilities
документации , настройка acceptSslCerts
возможности True
должна работать для всех браузеров, поскольку это общая возможность чтения / записи:
acceptSslCerts
логический
Должен ли сеанс принимать все сертификаты SSL по умолчанию.
Рабочая демонстрация для Firefox:
>>> from selenium import webdriver
Настройка acceptSslCerts
на False
:
>>> capabilities = webdriver.DesiredCapabilities().FIREFOX
>>> capabilities['acceptSslCerts'] = False
>>> driver = webdriver.Firefox(capabilities=capabilities)
>>> driver.get('https://cacert.org/')
>>> print(driver.title)
Untrusted Connection
>>> driver.close()
Настройка acceptSslCerts
на True
:
>>> capabilities = webdriver.DesiredCapabilities().FIREFOX
>>> capabilities['acceptSslCerts'] = True
>>> driver = webdriver.Firefox(capabilities=capabilities)
>>> driver.get('https://cacert.org/')
>>> print(driver.title)
Welcome to CAcert.org
>>> driver.close()
driver.get("javascript:document.getElementById('overridelink').click()")
allow-running-insecure-content
и andignore-certificate-errors
andallow-insecure-localhost
andunsafely-treat-insecure-origin-as-secure
(вы можете попытаться найти больше с помощью:strings /opt/google/chrome/chrome | grep insecure
и аналогичного grepping)Для Firefox:
ProfilesIni profile = new ProfilesIni(); FirefoxProfile myprofile = profile.getProfile("default"); myprofile.setAcceptUntrustedCertificates(true); myprofile.setAssumeUntrustedCertificateIssuer(true); WebDriver driver = new FirefoxDriver(myprofile);
Для Chrome мы можем использовать:
DesiredCapabilities capabilities = DesiredCapabilities.chrome(); capabilities.setCapability("chrome.switches", Arrays.asList("--ignore-certificate-errors")); driver = new ChromeDriver(capabilities);
Для Internet Explorer мы можем использовать:
источник
Для Firefox Python:
Исправлена ошибка самоподписанного сертификата Firefox : принять сертификат ssl с марионеткой firefox webdrive python splinter
"acceptSslCerts" следует заменить на "acceptInsecureCerts"
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities from selenium.webdriver.firefox.firefox_binary import FirefoxBinary caps = DesiredCapabilities.FIREFOX.copy() caps['acceptInsecureCerts'] = True ff_binary = FirefoxBinary("path to the Nightly binary") driver = webdriver.Firefox(firefox_binary=ff_binary, capabilities=caps) driver.get("https://expired.badssl.com")
источник
И в С # (ядро .net), используя
Selenium.Webdriver
иSelenium.Chrome.Webdriver
вот так:ChromeOptions options = new ChromeOptions(); options.AddArgument("--ignore-certificate-errors"); using (var driver = new ChromeDriver(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location),options)) { ... }
источник
Для людей, которые задаются этим вопросом, связанным с безголовым хромом через python selenium, может оказаться полезным https://bugs.chromium.org/p/chromium/issues/detail?id=721739#c102 .
Похоже, вы можете сделать
chrome_options = Options() chrome_options.add_argument('--allow-insecure-localhost')
или что-то вроде следующего (может потребоваться адаптация для python):
ChromeOptions options = new ChromeOptions() DesiredCapabilities caps = DesiredCapabilities.chrome() caps.setCapability(ChromeOptions.CAPABILITY, options) caps.setCapability("acceptInsecureCerts", true) WebDriver driver = new ChromeDriver(caps)
источник
ChromeOptions options = new ChromeOptions().addArguments("--proxy-server=http://" + proxy); options.setAcceptInsecureCerts(true);
источник
Javascript:
const capabilities = webdriver.Capabilities.phantomjs(); capabilities.set(webdriver.Capability.ACCEPT_SSL_CERTS, true); capabilities.set(webdriver.Capability.SECURE_SSL, false); capabilities.set('phantomjs.cli.args', ['--web-security=no', '--ssl-protocol=any', '--ignore-ssl-errors=yes']); const driver = new webdriver.Builder().withCapabilities(webdriver.Capabilities.chrome(), capabilities).build();
источник
Я столкнулся с той же проблемой с Selenium и Behat. Если вы хотите передать параметры через
behat.yml
, вот как это должно выглядеть:источник
Создание профиля и драйвера помогает нам обойти проблему с сертификатом в Firefox:
var profile = new FirefoxProfile(); profile.SetPreference("network.automatic-ntlm-auth.trusted-uris","DESIREDURL"); driver = new FirefoxDriver(profile);
источник
В selenium python вам нужно установить
desired_capabilities
как:desired_capabilities = { "acceptInsecureCerts": True }
источник
Для тех, кто сталкивается с этой проблемой с помощью Firefox, а вышеуказанные решения не работают, вы можете попробовать приведенный ниже код (мой исходный ответ здесь ).
from selenium import webdriver profile = webdriver.FirefoxProfile() profile.DEFAULT_PREFERENCES['frozen']['marionette.contentListener'] = True profile.DEFAULT_PREFERENCES['frozen']['network.stricttransportsecurity.preloadlist'] = False profile.DEFAULT_PREFERENCES['frozen']['security.cert_pinning.enforcement_level'] = 0 profile.set_preference('webdriver_assume_untrusted_issuer', False) profile.set_preference("browser.download.folderList", 2) profile.set_preference("browser.download.manager.showWhenStarting", False) profile.set_preference("browser.download.dir", temp_folder) profile.set_preference("browser.helperApps.neverAsk.saveToDisk", "text/plain, image/png") driver = webdriver.Firefox(firefox_profile=profile)
источник
Удалите все сертификаты, кроме необходимого, из хранилища сертификатов вашего браузера, а затем настройте браузер на автоматический выбор сертификата, если присутствует только один сертификат.
источник
Просто обновление по этой проблеме.
Требуются драйверы:
Linux: Centos 7 64bit, Window 7 64bit
Firefox: 52.0.3
Selenium Webdriver: 3.4.0 (Windows), 3.8.1 (Linux Centos)
GeckoDriver: v0.16.0 (Windows), v0.17.0 (Linux Centos)
Код
System.setProperty("webdriver.gecko.driver", "/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver"); ProfilesIni ini = new ProfilesIni(); // Change the profile name to your own. The profile name can // be found under .mozilla folder ~/.mozilla/firefox/profile. // See you profile.ini for the default profile name FirefoxProfile profile = ini.getProfile("default"); DesiredCapabilities cap = new DesiredCapabilities(); cap.setAcceptInsecureCerts(true); FirefoxBinary firefoxBinary = new FirefoxBinary(); GeckoDriverService service =new GeckoDriverService.Builder(firefoxBinary) .usingDriverExecutable(new File("/home/seleniumproject/geckodrivers/linux/v0.17/geckodriver")) .usingAnyFreePort() .usingAnyFreePort() .build(); try { service.start(); } catch (IOException e) { e.printStackTrace(); } FirefoxOptions options = new FirefoxOptions().setBinary(firefoxBinary).setProfile(profile).addCapabilities(cap); driver = new FirefoxDriver(options); driver.get("https://www.google.com"); System.out.println("Life Title -> " + driver.getTitle()); driver.close();
источник
Я смог сделать это на .net С # с PhantomJSDriver с веб-драйвером selenium 3.1
[TestMethod] public void headless() { var driverService = PhantomJSDriverService.CreateDefaultService(@"C:\Driver\phantomjs\"); driverService.SuppressInitialDiagnosticInformation = true; driverService.AddArgument("--web-security=no"); driverService.AddArgument("--ignore-ssl-errors=yes"); driver = new PhantomJSDriver(driverService); driver.Navigate().GoToUrl("XXXXXX.aspx"); Thread.Sleep(6000); }
источник
Всякий раз, когда я сталкиваюсь с этой проблемой в новых браузерах, я просто использую версию AppRobotic Personal, чтобы щелкнуть определенные координаты экрана или перейти с помощью кнопок и щелкнуть.
В основном он просто использует свои макро-функции, но не работает с настройками без головы.
источник
У меня была такая же проблема. Однако, когда я попытался открыть веб-сайт вручную в браузере, сертификат был правильным, но в деталях имя было «НЕ ДОВЕРЯТЬ».
Разница в сертификате была вызвана тем, что Fiddler работал в фоновом режиме и расшифровывал весь контент HTTPS перед его повторным шифрованием.
Чтобы решить мою проблему, просто закройте Fiddler на машине. Если вам нужно, чтобы Fiddler оставался открытым, вы можете снять флажок «Расшифровать SSL» в настройках Fiddler.
источник
WebDriverManager.chromedriver().setup(); ChromeOptions options = new ChromeOptions(); options.addArguments("--ignore-certificate-errors"); driver = new ChromeDriver(options);
Я использовал его для Java с браузером Chrome, он отлично работает
источник
Стандартного решения этой проблемы, похоже, до сих пор нет. Другими словами, вы все равно не можете сказать: «Хорошо, пройдите сертификацию, независимо от того, используете ли вы Internet Explorer, Mozilla или Google Chrome». Но я нашел одно сообщение, в котором показано, как решить проблему в Mozilla Firefox. Если вам это интересно, вы можете проверить это здесь .
источник