watir-webdriver меняет прокси, оставляя браузер открытым - PullRequest
3 голосов
/ 22 декабря 2011

Я использую библиотеку Watir-Webdriver в Ruby для проверки некоторых страниц. Я знаю, что могу подключиться через прокси, используя

profile = Selenium::WebDriver::Firefox::Profile.new#create a new profile
profile.proxy = Selenium::WebDriver::Proxy.new(#create proxy data for in the profile
  :http => proxyadress,
  :ftp => nil,
  :ssl => nil,
  :no_proxy => nil
)
browser = Watir::Browser.new :firefox, :profile => profile#create a browser window with this profile
browser.goto "http://www.example.com"
browser.close

Однако, если я хочу подключиться к одной и той же странице несколько раз, используя разные прокси, мне нужно создать новый браузер для каждого прокси. Загрузка (и выгрузка) браузера занимает довольно много времени.

Итак, мой вопрос: Есть ли способ изменить, используя webdriver в ruby, прокси-адрес, который Firefox использует для подключения через браузер, оставаясь открытым?

Ответы [ 2 ]

2 голосов
/ 23 декабря 2011

Если вы хотите проверить, заблокирована ли страница при доступе через прокси-сервер, вы можете сделать это с помощью библиотеки без монитора.Недавно у меня был успех с использованием механизации.Возможно, вы также можете использовать net / http.

Я до сих пор не уверен, почему вам нужно сменить прокси-сервер для текущего сеанса.

require 'Mechanize'
session = Mechanize.new
session.set_proxy(host, port, user, pass)   
session.user_agent='Mac Safari'
session.agent.robots = true #observe of robots.txt rules
response = session.get(url)
puts response.code

Вам необходимо указать прокси хост / порт / пользователь / пароль (пользователь / пароль необязательный) и url .Если вы получаете исключение, то код response.code, вероятно, не дружественный.

1 голос
/ 23 декабря 2011

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

Для пользователей Windows существует опция либо нового инструмента RAutomation, либо AutoIT. оба могут быть использованы для автоматизации вещей на уровне пользовательского интерфейса ОС, что позволит вам войти в настройки браузера и изменить там прокси.

Тем не менее, я бы подумал, если вы проверяете большее количество сайтов, что издержки на изменение настроек прокси не будут такими большими по сравнению со всей навигацией по сайту и ожиданием загрузки страниц и т. Д.

Если вы в настоящее время не применяете подход «обход строки» и меняете настройки прокси несколько раз для каждого проверяемого сайта? Если это так, я бы пошел к методу по столбцам (если бы мы предполагали, что каждый столбец - прокси, а каждая строка - сайт) и запустил браузер для одного прокси, проверил все сайты, затем изменил прокси и перепроверь все сайты. Таким образом, вы будете изменять настройки прокси-сервера только один раз для каждого прокси-сервера, что не добавит слишком много накладных расходов в ваш скрипт.

Это может означать немного больше работы с сохранением и последующим отчетом о результатах (если вы выписывали их по очереди за раз), но для этого нужны хеши или массивы.

...