Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 我如何实际地通过代理路由watir?_Linux_Ubuntu_Proxy_Google Chrome_Watir - Fatal编程技术网

Linux 我如何实际地通过代理路由watir?

Linux 我如何实际地通过代理路由watir?,linux,ubuntu,proxy,google-chrome,watir,Linux,Ubuntu,Proxy,Google Chrome,Watir,我试图通过一个代理实际地路由watir——这意味着在脚本中,我希望在启动浏览器之前动态地更改我的代理 以下是我迄今为止所做的尝试(到目前为止我失败了): 我正在运行chrome和lucid lynx ubuntu。我选择TREX是因为我认为watir可能在利用代理或其他什么 我将/usr/bin/google-chrome改写为: #!/bin/bash /opt/google/chrome/chrome --proxy-server="$TREX" $@ 我之所以将环境变量传递给代理服务器而

我试图通过一个代理实际地路由watir——这意味着在脚本中,我希望在启动浏览器之前动态地更改我的代理

以下是我迄今为止所做的尝试(到目前为止我失败了): 我正在运行chrome和lucid lynx ubuntu。我选择TREX是因为我认为watir可能在利用代理或其他什么

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

#!/bin/bash
/opt/google/chrome/chrome --proxy-server="$TREX" $@
我之所以将环境变量传递给代理服务器而不是http\U代理,是因为我始终无法让http\U代理按原样工作

然后我做了一个简单的:

require 'rubygems'
require 'watir-webdriver'

ENV['TREX'] = "XX.XX.XX.XX:YY"
browser = Watir::Browser.new(:chrome)
browser.goto("http://mysite.com")
无论如何,这里发生的事情是,它将我转发到代理的登录页面,而不仅仅是转发请求


我错过了什么?我觉得我已经很接近了。

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

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
Chrome启动时(通过webdriver或手动)将始终在身份验证代理上提示您输入用户名和密码

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


我也一直在寻找解决这个问题的办法。我想可能是像webrick这样的代理,或是corksrew。。。但是现在还不能得到答案…

不是说有人在看这个帖子,而是我想到了如何在MacOSX10.6上为Safariwatir做到这一点。
networksetup-设置代理用户代理密码上的WebProxy以太网代理主机代理端口
网络设置-将WebProxyState以太网设置为打开状态


这些命令可以在以后更改为关闭

代码没有格式化,几乎无法读取。如果您选择代码并单击工具栏中的
101010
按钮,它会将其格式化为代码。此外,看起来您已经为Windows提供了解决方案,并且feydr在Linux上。yeh。。我看过很多这个样本,但是没有。不想依赖windowsyeh。。我试图避免在这里附加另一个代理,但你是对的,这是一种方法,而且,万一有人想推荐tor——我也不想使用它——到处都是webrick代理示例,我正在考虑使用路缘来完成请求并实现它……万一你感兴趣,我在这里添加了一个链接代理解决方案:不幸的是,用更少的东西无法实现同样的效果复杂。