我正在尝试通过代理实际路由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")
无论如何,这里发生的是它将我转发到代理的登录页面,而不仅仅是转发请求。
我在这里缺少什么?我觉得我很亲密。
答案 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
然后可以更改这些命令以将其关闭。