2010-06-04 6 views
2

프록시를 통해 watir을 라우트하려고합니다. 스크립트 내에서 브라우저를 시작하기 전에 동적으로 프록시를 변경하고 싶습니다.프록시를 통해 watir을 어떻게 실용적인 경로로 지정합니까?

여기까지 내가 지금까지 시도한 바가있다. (그리고 지금까지 실패하고있다.) 나는 크롬과 lucid lynx 우분투를 실행 중이다. 나는 watire가 PROXY 또는 무엇인가를 사용하고 있을지도 모른다고 생각한 TREX 원인을 선택했습니다.

#!/bin/bash 
/opt/google/chrome/chrome --proxy-server="$TREX" [email protected] 

의 I 오히려 HTTP_PROXY보다 프록시 서버에 환경 변수를 전달하고 있습니다 이유는 내가 얻을 수 않기 때문에 HTTP_PROXY과 같이 작업하는 것입니다 :

은 나뿐만은/usr/빈/구글 크롬을 다시 썼다

require 'rubygems' 
require 'watir-webdriver' 

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

어쨌든, 여기에서 일어나고있는 것은 단지 forw보다는 프록시의 로그인 페이지에 저를 전달하는 것입니다 : 어쨌든입니다

는 그때 간단했다 요청을 이끌어 낸다.

무엇이 여기에 있습니까? 나는 내가 가깝다고 느낀다.

답변

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 
+0

코드가 포맷되지 않았습니다. 거의 읽을 수 없습니다. 코드를 선택하고 도구 모음에서 '101010'버튼을 클릭하면 코드로 형식을 지정합니다. –

+0

또한 Windows 용 솔루션을 제공 한 것처럼 보이며 feydr은 Linux에 있습니다. –

+0

예 ..이 샘플은 많이 보았지만 def였습니다. 창문에 의지하고 싶지 않다. – eyberg

3

문제는 여기에 당신이 자동차를 사용하여 프록시 서버에 인증 할 수 있다는 것입니다 크롬 --proxy 서버 = 어쩌구 : 3128이

크롬은 항상 인증 프록시에 사용자 이름과 암호를 입력하라는 메시지가 표시됩니다 웹 서버 또는 수동으로 시작하는 경우

이 문제를 해결하는 복잡한 방법은 원격 프록시 서버를 인증하는 투명한 프록시로 squid가있는 apache의 로컬 인스턴스를 설치하는 것입니다. 그런 다음 로컬 오징어 프록시를 가리키는 프록시 플래그로 크롬을 시작합니다. 즉, 인증 된 프록시 앞에 인증되지 않은 프록시를 연결합니다.

또한이 문제에 대한 해결책을 찾고 있습니다. 나는 프록시 같은 webrick이나 corksrew와 같은 것 같다고 생각했지만 ... 아직 답을 얻을 수는 없습니다 ...

+0

예 .. 나는 다른 프록시를 여기에 붙이는 것을 피하려고 노력하고있다. 그러나 당신은 그것을하는 한 방법이다. 또한 누군가가 토르를 제안하고 싶어한다. 그것을 사용하고 싶지 않아요 - 장소에 webrick 프록시 샘플이 있습니다. 그리고 요청을 처리하고 그것을 통해 가져 오려면 연석을 사용하는 것에 대해 생각하고있었습니다 ... – eyberg

+0

당신이 관심이있는 경우에 나는 연결된 프록시 해결책은 여기에 있습니다 : http://altentee.com/2010/authenticating-proxy-with-webdriver-and-watir/ 불행히도 덜 복잡한 것으로는 달성하지 못했습니다. –

0

아무도이 스레드를보고 있지 않지만 Mac OS에서 그 방법을 알았습니다. Safariwatir의 경우 X 10.6입니다. networksetup -setwebproxy Ethernet proxyHost proxyPort On proxyUser proxyPassword networksetup -setwebproxystate Ethernet On

그 명령 나중에 그것을 해제하기 위해 변경 될 수 있습니다.

관련 문제