2010-06-04 5 views
2

Я пытаюсь проецировать watir через прокси прагматически - это означает, что внутри скрипта я хочу динамически менять свой прокси до запуска браузера.Как проложить маршрут через прокси-сервер прагматически?

Вот что я пробовал до сих пор (и до сих пор не могу): Я бегу хромированную и ясную рысь ubuntu. Я выбрал TREX, потому что я думал, что Watir может использовать PROXY или что-то в этом роде.

Я переписал/USR/BIN/Google-хром, как:

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

Причина я передаю в переменной окружения прокси-сервера, а не 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") 

в любом случае, то, что происходит здесь в том, что он пересылает мне на страницу входа прокси, а не просто 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

yeh .. Я видел этот образец много, но def. не хочу полагаться на окна – eyberg

3

Проблема здесь состоит в том, что вы не можете автоматически проходить аутентификацию на прокси-сервер, используя хром --proxy-сервер = бла: 3128

Chrome всегда предложит вам ввести имя пользователя и пароль на прокси-сервер проверки подлинности с когда он запускается (через webdriver или вручную)

Сложный способ установить локальный экземпляр apache с squid как прозрачный прокси-сервер, который аутентифицируется на удаленном прокси-сервере. Затем вы просто запускаете хром с флагом прокси, указывающим на локальный прокси-сервер squid. Другими словами, цепочка не аутентифицированного прокси-сервера перед аутентифицированным прокси ...

Я также искал решение этой проблемы. Я подумал, может быть, что-то вроде webrick в качестве прокси-сервера или corksrew ... но пока не получается получить ответ ...

+0

yeh .. Я пытаюсь избежать использования еще одного прокси здесь, но вы правы, это один из способов сделать это - также на всякий случай кто-то хочет предложить tor - I не хотят его использовать - есть образцы прокси-сервера Webrick повсюду, и я думал об использовании curb для выполнения запроса и довести его до конца ... – eyberg

+0

Если вам интересно, я добавил цепочку прокси-сервера решение здесь: http://altentee.com/2010/authenticating-proxy-with-webdriver-and-watir/ К сожалению, невозможно достичь того же с чем-то менее сложным. –

0

Не то, чтобы кто-нибудь смотрел эту тему, но я решил, как это сделать на Mac Os X 10.6 для Safariwatir. networksetup -setwebproxy Ethernet proxyHost proxyPort On proxyUser proxyPassword networksetup -setwebproxystate Ethernet On

и эти команды могут быть изменены для последующего отключения.

Смежные вопросы