Храните агент Ruby Mechanize для каждой сессии прокси
Настройте прокси агента Ruby Mechanize один раз, повторно используйте его для связанных запросов и осознанно ограничивайте состояние cookie и постоянные соединения.
Если задача — проверять HTTP-ответы и переходить по обычным ссылкам, полноценный браузер нужен не всегда. Ruby Mechanize открывает прокси на агенте, который выполняет эти запросы:
agent = Mechanize.new('office-route')
begin
agent.set_proxy('proxy.example', 8080)
page = agent.get('https://www.example.com/')
puts page.code
ensure
agent.shutdown
endЭто предполагает, что библиотека mechanize загружена. Для разрешённой проверки публичной страницы без аутентификации прокси список HTTP-прокси даёт подходящие значения хоста/порта для примера. Метод proxy также принимает имя пользователя и пароль как необязательные третий и четвёртый аргументы, когда этого требует endpoint.
Повторно используйте настроенный агент для запросов, относящихся к той же сессии просмотра. Он несёт cookie и историю, а также сетевые настройки. Смена выходного прокси сама по себе не создаёт новую идентичность и не отбрасывает cookie входа.
Для нескольких сессий прокси дайте каждой свой агент, вместо того чтобы переключать один общий агент во время работы. Библиотека также документирует уникальные имена соединений, когда требуются раздельные SSL-соединения; имя конструктора в примере делает этот выбор явным.
Группировка связанных проверок URL по прокси может сократить лишнюю перенастройку. Держите результат привязанным к маршруту и URL, которые его создали, включая перенаправления и ответы с ошибкой.
Mechanize не воспроизводит выполнение JavaScript браузером. Используйте настоящий браузер, когда проверяемое поведение зависит от скриптов, рендеринга или аутентификации, специфичной для браузера. Успешное получение HTTP через прокси отвечает на более узкий вопрос: этот агент смог выполнить такой запрос.