Selenium Webdriver безголовый Chrome с прокси-аутентификацией - PullRequest
0 голосов
/ 23 октября 2018

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

Если я следую стандартным реализациям прокси для селена, я застреваю на странице аутентификации, где спрашиваетсядля имени пользователя / пароля.

Вот как я создаю экземпляр безголового экземпляра Chrome с помощью watir & selenium:

def headless_browser
  options = Selenium::WebDriver::Chrome::Options.new

  # make a directory for chrome if it doesn't already exist
  chrome_dir = File.join Dir.pwd, %w(tmp chrome)
  FileUtils.mkdir_p chrome_dir
  options.add_argument "--user-data-dir=#{chrome_dir}"

  # set Random User Agent
  options.add_argument "--user-agent=#{random_user_agent}"

  # let Selenium know where to look for chrome if we have a hint from
  # heroku. chromedriver-helper & chrome seem to work out of the box on osx,
  # but not on heroku.
  if chrome_bin = ENV["GOOGLE_CHROME_BIN"]
    options.add_argument "no-sandbox"
    options.binary = chrome_bin

    # give a hint to webdriver here too
    Selenium::WebDriver::Chrome.driver_path = \
      '/app/vendor/bundle/bin/chromedriver'
  end

  options.add_argument '--allow-insecure-localhost'

  # headless!
  # keyboard entry wont work until chromedriver 2.31 is released
  options.add_argument '--window-size=1200x600'
  options.add_argument '--headless'
  options.add_argument '--disable-gpu'
  options.add_argument '--no-sandbox'

  # instantiate the browser
  browser = Watir::Browser.new :chrome, options: options

  if Rails.env.development?
    browser.goto "https://api.myip.com"
    JSON.parse(Nokogiri::HTML.parse(browser.html).css('body').text)
  end
end

Кто-нибудь знает, как реализовать использование аутентифицированного прокси с помощью watir & selenium??Я много искал и реализовывал много разных «решений», но ни одно из них не помогло мне.

  • Попытался настроить прокси через драйвер селена.Если просто оставить вот так, появится окно аутентификации, и я не смогу получить к нему доступ.
Selenium::WebDriver::Proxy.new(
  http: '127.0.0.1:8080',
  ssl:  '127.0.0.1:8080'
)

Я также попробовал формат носков: username:password@host:port.Не сработало.

  • Я попытался установить для драйвера параметр --proxy-server=.Хотя он работает с простым URL-адресом прокси, он ведет себя так же, как и выше.

1 Ответ

0 голосов
/ 24 октября 2018

Попробуйте следующий код с настройками прокси, пожалуйста:

proxy_object = Selenium::WebDriver::Proxy.new(
  http: '127.0.0.1:8080',
  ssl:  '127.0.0.1:8080'
)

browser = Watir::Browser.new :chrome, options: options, proxy: proxy_object
...