Как мне прагматично направить Watir через прокси? - PullRequest
2 голосов
/ 04 июня 2010

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

Вот что я пробовал до сих пор (и до сих пор терплю неудачу): Я бегу хром и Lynx 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")

В любом случае, здесь происходит то, что он пересылает меня на страницу входа прокси, а не просто пересылает запрос.

Что мне здесь не хватает? Я чувствую, что я довольно близко.

Ответы [ 3 ]

3 голосов
/ 11 июня 2010

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

Chrome всегда запрашивает имя пользователя и пароль на прокси-сервере аутентификации при запуске (через веб-драйвер или вручную)

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

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

0 голосов
/ 18 ноября 2011

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

и эти команды можно изменить, чтобы потом отключить.

0 голосов
/ 11 июня 2010
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
...