module Browsed::Chrome
Private Instance Methods
manage_chrome_proxy()
click to toggle source
# File lib/browsed/chrome.rb, line 31 def manage_chrome_proxy proxy_options = nil plugin_path = nil if valid_proxy? if self.proxy.fetch(:mode, nil).eql?(:proxy_chain) && proxy_using_auth? self.proxy_chain_server = ::ProxyChainRb::Server.new(self.browser_id) log("Starting a new proxy chain server instance.") generated_proxy_url = self.proxy_chain_server.start(generate_proxy_auth_url) log("Started a new proxy chain server instance at #{generated_proxy_url}.") uri = URI.parse(generated_proxy_url) proxy_options = generate_selenium_webdriver_proxy(host: uri.host, port: uri.port) else proxy_options = generate_selenium_webdriver_proxy(host: self.proxy.fetch(:host), port: self.proxy.fetch(:port)) log("Will use proxy #{self.proxy.fetch(:host)}:#{self.proxy.fetch(:port)} to initiate the request.") if !headless? && proxy_using_auth? log("Generating a new proxy plugin to manage proxy authentication.") plugin_path = Browsed::Proxies::Chrome::ProxyAuthentication::Packager.package_extension(proxy, self.configuration.temp_path) end end end return {capabilities: proxy_options, plugin_path: plugin_path} end
register_chrome_driver(options: {})
click to toggle source
# File lib/browsed/chrome.rb, line 5 def register_chrome_driver(options: {}) open_timeout = options.fetch(:open_timeout, 60) read_timeout = options.fetch(:read_timeout, 60) resolution = options.fetch(:resolution, [1366,768]) profile = Selenium::WebDriver::Chrome::Profile.new profile["user-agent"] = self.user_agent unless self.user_agent.to_s.empty? proxy_options = manage_chrome_proxy proxy_capabilities = proxy_options[:capabilities] capabilities = !proxy_capabilities.nil? ? Selenium::WebDriver::Remote::Capabilities.chrome(proxy: proxy_capabilities) : {} proxy_plugin_path = proxy_options[:plugin_path] args = %w(disable-popup-blocking) args = args | %W(window-size=#{resolution.first},#{resolution.last}) if resolution && resolution.any? && resolution.size.eql?(2) args = args | %w(headless disable-gpu) if headless? args = args | %W(load-extension=#{proxy_plugin_path}) unless proxy_plugin_path.to_s.empty? options = Selenium::WebDriver::Chrome::Options.new(profile: profile, args: args) Capybara.register_driver self.driver do |app| client = Selenium::WebDriver::Remote::Http::Default.new(open_timeout: open_timeout, read_timeout: read_timeout) Capybara::Selenium::Driver.new(app, browser: :chrome, http_client: client, options: options, desired_capabilities: capabilities) end end