如何以实用方式通过代理路由watir?

时间:2010-06-04 00:38:06

标签: linux ubuntu proxy google-chrome watir

我正在尝试通过代理实际路由watir - 这意味着在脚本中我想在启动浏览器之前动态更改我的代理。

这是我到目前为止所尝试过的(到目前为止我失败了): 我正在运行chrome和lucid lynx ubuntu。我之所以选择TREX是因为我认为watir可能会使用PROXY或其他东西。

我将/ usr / bin / google-chrome改写为:

#!/bin/bash
/opt/google/chrome/chrome --proxy-server="$TREX" $@

我将环境变量传递给代理服务器而不是http_proxy的原因是因为我无法使http_proxy正常工作

然后我做了一个简单的事情:

require 'rubygems'
require 'watir-webdriver'

ENV['TREX'] = "XX.XX.XX.XX:YY"
browser = Watir::Browser.new(:chrome)
browser.goto("http://mysite.com")

无论如何,这里发生的是它将我转发到代理的登录页面,而不仅仅是转发请求。

我在这里缺少什么?我觉得我很亲密。

3 个答案:

答案 0 :(得分:3)

此处的问题是您无法使用chrome自动向代理服务器进行身份验证--proxy-server = blah:3128

Chrome会在启动时(通过网络驱动程序或手动)提示您在身份验证代理上输入用户名和密码

一个复杂的方法是使用squid作为透明代理安装apache的本地实例,该代理向远程代理服务器进行身份验证。然后,您只需使用指向本地squid代理的代理标志启动chrome。换句话说,在经过身份验证的代理之前链接未经身份验证的代理......

我一直在寻找这个问题的解决方案。我想也许就像webrick作为代理人,或者corksrew ...但是还不能得到答案......

答案 1 :(得分:0)

require 'win32/registry'

PROXY_SERVER_IP = "192.168.1.20"
PROXY_SERVER_PORT = "3128"

def set_browser_to_use_proxy

  log "Enabling Proxy at #{PROXY_SERVER_IP}:#{PROXY_SERVER_PORT}"
  Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings' , Win32::Registry::KEY_WRITE)  do |reg|
    reg.write('ProxyEnable', Win32::Registry::REG_BINARY, '1') 
    reg.write('ProxyServer'   , Win32::Registry::REG_SZ, "#{PROXY_SERVER_IP}:#{PROXY_SERVER_PORT}" )   
    reg.write('ProxyOverride'  , Win32::Registry::REG_SZ, '') 
  end
end

def set_browser_to_use_proxy_off

  log "Disabling Proxy at #{PROXY_SERVER_IP}:#{PROXY_SERVER_PORT}"
  Win32::Registry::HKEY_CURRENT_USER.open('SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings' , Win32::Registry::KEY_WRITE)  do |reg|
    reg.write('ProxyEnable', Win32::Registry::REG_DWORD, '0') 
    reg.write('ProxyServer'   , Win32::Registry::REG_SZ, "#{PROXY_SERVER_IP}:#{PROXY_SERVER_PORT}" )   
    reg.write('ProxyOverride'  , Win32::Registry::REG_SZ, '') 
  end
end

答案 2 :(得分:0)

并非所有人都在看这个帖子,但我想知道如何在Mac OS X 10.6上为Safariwatir做这件事。 networksetup -setwebproxy Ethernet proxyHost proxyPort On proxyUser proxyPassword networksetup -setwebproxystate Ethernet On

然后可以更改这些命令以将其关闭。