Как установить Chrome экспериментальная опция same-site-by-default-cook ie в python селене - PullRequest
1 голос
/ 17 января 2020

Полагаю, это должно сработать:

from selenium import webdriver
options = webdriver.ChromeOptions()
options.add_experimental_option('same-site-by-default-cookies', 'true')
driver = webdriver.Chrome(chrome_options=options)

, чтобы включить те же ограничения для файлов cookie, которые запланированы для будущей версии chrome. Это не так, есть ошибка:

selenium.common.exceptions.InvalidArgumentException: 
Message: invalid argument: cannot parse capability: goog:chromeOptions
from invalid argument: unrecognized chrome option: same-site-by-default-cookies

Я могу вручную изменить параметр, используя chrome: // flags, и посмотреть, как он работает. Однако я хотел бы автоматизировать его и просто запустить скрипт тестирования, чтобы увидеть его.

Здесь есть код java: https://groups.google.com/forum/#! Topic / chromedriver-users / cI8hj7eihRo , который может это сделать, однако я не уверен, как перенести его на python.

Есть ли какая-либо ссылка, которая помогла бы мне установить эту опцию или другие опции?

Ответы [ 2 ]

2 голосов
/ 21 января 2020

Проверено на Chrome: версия 79.0.3945.130 (Официальная сборка) (64-разрядная версия)

В Python вы можете использовать код ниже

    chrome_options = webdriver.ChromeOptions()
    experimentalFlags = ['same-site-by-default-cookies@1','cookies-without-same-site-must-be-secure@1']
    chromeLocalStatePrefs = { 'browser.enabled_labs_experiments' : experimentalFlags}
    chrome_options.add_experimental_option('localState',chromeLocalStatePrefs)
    driver = webdriver.Chrome(options=chrome_options)
    driver.get("https://www.bing.com")

Python селен клиент отправит следующие возможности:

[1579581631.792][INFO]: Starting ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614})
[1579581631.792][INFO]: Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
[1579581632.264][INFO]: [f6b8433509c420fd317902f72b1d102d] COMMAND InitSession {
   "capabilities": {
      "alwaysMatch": {
         "browserName": "chrome",
         "goog:chromeOptions": {
            "args": [  ],
            "extensions": [  ],
            "localState": {
               "browser.enabled_labs_experiments": [ "same-site-by-default-cookies@1", "cookies-without-same-site-must-be-secure@1" ]
            }
         },
         "platformName": "any"
      },
      "firstMatch": [ {

      } ]
   },
   "desiredCapabilities": {
      "browserName": "chrome",
      "goog:chromeOptions": {
         "args": [  ],
         "extensions": [  ],
         "localState": {
            "browser.enabled_labs_experiments": [ "same-site-by-default-cookies@1", "cookies-without-same-site-must-be-secure@1" ]
         }
      },
      "platform": "ANY",
      "version": ""
   }
}

Чтобы проверить, работает ли он на самом деле или нет. Go до chrome: // flags /

0 голосов
/ 18 января 2020

Вы все правильно поняли.

В соответствии со статьей Chrome браузер выдвигает SameSite cook ie капитальный ремонт безопасности Chrome добавили SameSite поддержку, которая веб-разработчикам потребуется контролировать файлы cookie для доступа к файлам cookie на разных сайтах, используя атрибут SameSite заголовка Set-Cookie, который может быть Strict, Lax или None.

В блоге Chromium Улучшение конфиденциальности и безопасности в Интернете @BenGalbraith [Директор, Chrome Управление продуктами] и @JustinSchuh [Директор, Chrome Engineering] упомянуто:

Это изменение позволит пользователям удалить все такие cookie-файлы, не затрагивая cookie-файлы одного домена, сохраняя логины и настройки пользователей. Это также позволит браузерам предоставлять четкую информацию о том, какие сайты устанавливают эти файлы cookie, поэтому пользователи могут делать осознанный выбор в отношении того, как используются их данные.

Это изменение также имеет существенное преимущество для безопасности пользователей, защищая файлы cookie от межсайтовые инъекции и атаки с раскрытием данных, такие как Spectre и CSRF по умолчанию. Мы также объявили о своем плане ограничить использование межсайтовых файлов cookie для подключений HTTPS, предоставляя нашим пользователям дополнительные важные средства защиты конфиденциальности.

upar ... @ gmail.com в обсуждении Механизм WebDriver чтобы проверить тот же сайт повара ie капитальный ремонт безопасности? продемонстрировал, что вы можете включить флаг sameSite cook ie, используя localState экспериментальные параметры хромедривера через Selenium следующим образом :

ChromeOptions chromeOptions = new ChromeOptions();
HashMap<String, Object> chromeLocalStatePrefs = new HashMap<String, Object>();
List<String> experimentalFlags = new ArrayList<String>();
experimentalFlags.add("same-site-by-default-cookies@1");
experimentalFlags.add("cookies-without-same-site-must-be-secure@1");
chromeLocalStatePrefs.put("browser.enabled_labs_experiments",experimentalFlags);
chromeOptions.setExperimentalOption("localState", chromeLocalStatePrefs);

tl; dr

Документация:

...