Захват сети с помощью Selenium / PhantomJS

Я хочу захватить трафик на сайты, которые я просматриваю, используя Selenium с python, и поскольку трафик будет https с использованием прокси-сервера, он не заберет меня далеко.

Моя идея состояла в том, чтобы запустить phantomJS с селеном и использовать phantomJS для выполнения скрипта (не на странице с помощью webdriver.execute_script (), а на самом phantomJS). Я думал о сценарии netlog.js (отсюда https://github.com/ariya/phantomjs/blob/master/examples/netlog.js ).

Так как это работает в командной строке

phantomjs --cookies-file=/tmp/foo netlog.js https://google.com 

должен быть аналогичный способ сделать это с селеном?

заранее спасибо

Обновить:

Решил его с помощью браузера-прокси.

 pip3 install browsermob-proxy 

Код Python3

 from selenium import webdriver from browsermobproxy import Server server = Server(<path to browsermob-proxy>) server.start() proxy = server.create_proxy({'captureHeaders': True, 'captureContent': True, 'captureBinaryContent': True}) service_args = ["--proxy=%s" % proxy.proxy, '--ignore-ssl-errors=yes'] driver = webdriver.PhantomJS(service_args=service_args) proxy.new_har() driver.get('https://google.com') print(proxy.har) # this is the archive # for example: all_requests = [entry['request']['url'] for entry in proxy.har['log']['entries']] 

2 Solutions collect form web for “Захват сети с помощью Selenium / PhantomJS”

Я использую прокси-сервер для этого

 from selenium import webdriver from browsermobproxy import Server server = Server(environment.b_mob_proxy_path) server.start() proxy = server.create_proxy() service_args = ["--proxy-server=%s" % proxy.proxy] driver = webdriver.PhantomJS(service_args=service_args) proxy.new_har() driver.get('url_to_open') print proxy.har # this is the archive # for example: all_requests = [entry['request']['url'] for entry in proxy.har['log']['entries']] 

«har» (формат http-архива) содержит много другой информации о запросах и ответах, это очень полезно для меня

установка на Linux:

 pip install browsermob-proxy 

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

https://github.com/SeleniumHQ/selenium/pull/2331/files

Затем я запускаю следующий скрипт после получения драйвера phantomJS:

 from selenium.webdriver import PhantomJS driver = PhantomJS() script = """ var page = this; page.onResourceRequested = function (req) { console.log('requested: ' + JSON.stringify(req, undefined, 4)); }; page.onResourceReceived = function (res) { console.log('received: ' + JSON.stringify(res, undefined, 4)); }; """ driver.execute_phantomjs(script) driver.get("http://ariya.github.com/js/random/") driver.quit() 

Затем все запросы регистрируются в консоли (обычно это файл ghostdriver.log)

  • Управление ключами отправки + щелчок в Selenium с привязками Python
  • Как автоматически загружать файлы из всплывающего диалогового окна с помощью selenium-python
  • Не удается подключиться к существующей сессии Selenium через geckodriver
  • Python Selenium WebDriver, как добавить таймаут для получения (url) функции
  • Selenium inested li div menu select () или click () python
  • Поиск элемента внутри элемента с использованием Selenium Webdriver
  • Попробуйте запустить драйвер chrome на linux с помощью selenium webdriver
  • Реализация WebdriverBackedSelenium в Python
  • Python - лучший язык программирования в мире.