Как сделать аутентификацию прокси в безголовом Chrome - PullRequest
3 голосов
/ 25 февраля 2020

Я пытаюсь использовать безголовый браузер Chrome через прокси-сервер, требующий аутентификации:

require "selenium-webdriver"

options = Selenium::WebDriver::Chrome::Options.new(
      args: ["headless", "proxy-server=http://#{host}:#{port}"]
    )
driver = Selenium::WebDriver.for(:chrome, options: options)

Это работает, когда аутентификация не нужна, но теперь мне нужно использовать ее с аутентификацией.

В " списке переключателей командной строки Chromium " Я не нашел, как правильно передать username и password. В Google я нашел эту опцию, но она не работает:

options = Selenium::WebDriver::Chrome::Options.new(
      args: ["headless", "proxy-server=http://#{username}:#{password}@#{host}:#{port}"]
    )

Как использовать безголовую chrome с прокси-аутентификацией?

1 Ответ

1 голос
/ 25 февраля 2020

Я искал решение почти 2 недели. Это было в 2019 году, и я даже не понял этого. Насколько я знаю, вы не можете установить прокси с именем пользователя / паролем. Раньше это было возможно с расширением, но сейчас этот способ недоступен. Есть способ сделать это с помощью webdrivers gem:
Если между вами и Inte * есть прокси-сервер rnet, вам необходимо настроить гем для использования прокси. Вы можете сделать это, вызвав метод configure.

Webdrivers.configure do |config|
  config.proxy_addr = 'myproxy_address.com'
  config.proxy_port = '8080'
  config.proxy_user = 'username'
  config.proxy_pass = 'password'
end

Однако я не смог заставить его работать в моем проекте. Единственное, что сработало, это настройка белого списка с моим IP на Прокси-сервере, поэтому мне не нужно устанавливать имя пользователя / пароль. Так что он работает без учетных данных, только так:

    Capybara.register_driver :headless_chrome do |app|
      client = Selenium::WebDriver::Remote::Http::Default.new
      client.read_timeout = 60
      capabilities = Selenium::WebDriver::Remote::Capabilities.chrome(
        'goog:chromeOptions' => { args: %w[no-sandbox headless disable-gpu disable-dev-shm-usage
                                           window-size=1280,1024 enable-features=NetworkService,NetworkServiceInProcess] },
        'loggingPrefs' => { browser: 'ALL', client: 'ALL', driver: 'ALL', server: 'ALL' }
      )
      capabilities['goog:chromeOptions'][:args] << "user-agent=#{user_agent}" if user_agent
      capabilities['goog:chromeOptions'][:args] << "proxy-server=http://#{proxy[:ip]}:#{proxy[:port]}" if proxy

      Capybara::Selenium::Driver.new(app, browser: :chrome, desired_capabilities: capabilities, http_client: client)
    end

Я знаю, что мой ответ - это не то, что вы искали, но, возможно, это поможет вам каким-то образом или вы sh исправите ваш ответ. Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...