2

我正在尝试务实地通过代理路由 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")

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

我在这里想念什么?我觉得我很接近。

4

3 回答 3

3

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

Chrome 在启动时会始终提示您输入身份验证代理上的用户名和密码(通过 webdriver 或手动)

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

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

于 2010-06-11T10:17:44.127 回答
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
于 2010-06-10T22:13:54.763 回答
0

并不是说有人在看这个线程,但我想出了如何在 Mac Os X 10.6 for Safariwatir 上做到这一点。 networksetup -setwebproxy Ethernet proxyHost proxyPort On proxyUser proxyPassword networksetup -setwebproxystate Ethernet On

并且可以更改这些命令以在之后将其关闭。

于 2011-11-18T17:54:59.117 回答