Захват сетевого трафика веб-драйвера во всех браузерах

Я хочу захватить все сетевые вызовы из веб-драйвера в Java. Я не провожу никакого тестирования пользовательского интерфейса, просто тестирую выполнение JS, а также запросы и ответы на некоторые сетевые вызовы.

Я пытался использовать Browser Mob, как это предлагается на большинстве форумов, но мне нужно, чтобы он работал во всех браузерах. Он работал безупречно с Firefox, но у меня были некоторые проблемы с другими. Драйвер Safari не поддерживает функцию прокси.

Я не хочу использовать Fiddler, так как он включает в себя некоторые ручные шаги по вызову и сохранению вызовов. Принимая во внимание, что Browser Mob, являющийся прокси-сервером в коде, может быть интегрирован более плавным образом.

Я также пытался использовать RC-подобный пакет, включенный в пакет автономного сервера Selenium. Но у меня есть несколько вызовов HTTPS и несколько вложенных фреймов в междоменных доменах. Меня особенно интересуют междоменные вызовы POST, и это не очень хорошо работает. Кроме того, люди продолжают говорить, что не рекомендуется использовать этот пакет.

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

Я наткнулся на TCPmon, но он больше не поддерживается. Кто-нибудь знает какие-нибудь подобные инструменты, которые могут работать в системах Unix или каких-либо альтернативных решениях?


person sid    schedule 18.02.2014    source источник


Ответы (1)


Мы изменили сценарий правил Fiddler, включив в него новое действие exec. Если вы используете их собственный редактор сценариев, он также предоставляет функции автоматического завершения, и мы с легкостью смогли обойти это. Синтаксис аналогичен JavaScript. Пакет Fiddler поставляется с ExecActions.exe, который можно использовать для передачи аргументов консоли работающему экземпляру Fiddler с помощью командной строки. Код, который мы написали, обработал все сеансы, захваченные Fiddler, и записал их в файл в пользовательском формате JSON, а затем использовал GSON для его десериализации. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация.

person sid    schedule 31.03.2014