2

プラグマティックにプロキシ経由で watir をルーティングしようとしています。つまり、スクリプト内で、ブラウザを起動する前にプロキシを動的に変更したいと考えています。

これが私がこれまでに試したことです(そしてこれまでのところ失敗しています):私はchromeと明快なlynx ubuntuを実行しています。私が TREX を選んだのは、watir が PROXY か何かを利用している可能性があると思ったからです。

/usr/bin/google-chrome を次のように書き直しました。

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

環境変数を http_proxy ではなく proxy-server に渡す理由は、とにかく 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 は、起動時に認証プロキシでユーザー名とパスワードの入力を常に求められます (Web ドライバー経由または手動)。

これを回避する複雑な方法は、squid をリモート プロキシ サーバーに対して認証する透過プロキシとして Apache のローカル インスタンスをインストールすることです。次に、プロキシ フラグをローカルの squid プロキシに指定して chrome を起動します。つまり、認証されたプロキシの前に認証されていないプロキシをチェーンします...

私はまた、この問題の解決策を探していました。プロキシとしての webrick やコークスルーのようなものを考えましたが、まだ答えが得られません...

于 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 で Safariwatir を実行する方法を見つけました。 networksetup -setwebproxy Ethernet proxyHost proxyPort On proxyUser proxyPassword networksetup -setwebproxystate Ethernet On

これらのコマンドは、後でオフにするように変更できます。

于 2011-11-18T17:54:59.117 に答える