Selenium + Browsermob Proxy, не может захватывать тела некоторых ответов HTTPS - PullRequest
2 голосов
/ 08 мая 2019

Мне нужно захватить тело ответного пакета, отправленного в мой браузер Selenium из прокси-сервера BrowserMob. BrowserMob захватывает тело ответа только для некоторых запросов (а не для тех, которые мне нужны), и я не могу понять, почему.

Я использую Selenium Firefox через Python. Я установил сертификаты BrowserMob в Firefox.

Вот код, который я использую:

from browsermobproxy import Server
import time
import json

server = Server(path="./bmp/bin/browsermob-proxy", options={'port': 8090})
server.start()
time.sleep(1)
proxy = server.create_proxy()
time.sleep(1)

from selenium import webdriver
profile = webdriver.FirefoxProfile()
selenium_proxy = proxy.selenium_proxy()
profile.set_proxy(selenium_proxy)
driver = webdriver.Firefox(firefox_profile=profile)

proxy.new_har("name", options={'captureHeaders': True, 'captureContent': True})
driver.get("http://www.example.com")

# some clicking and key typing here...

time.sleep(20)
print(json.dumps(proxy.har))

server.stop()
driver.quit()

С пакетом, который я пытаюсь проверить содержимое, я получаю такой результат:

"response": {
  "status": 200,
  "statusText": "OK",
  "httpVersion": "HTTP/1.1",
  "cookies": [],
  "headers": [
    {
      "name": "Date",
      "value": "Wed, 08 May 2019 19:25:35 GMT"
    },
    {
      "name": "Content-Type",
      "value": "application/json;charset=UTF-8"
    }
    // more headers...
  ],
  "content": {
    "size": 8888,
    "mimeType": "application/json;charset=UTF-8",
    "comment": ""
    // NO TEXT FIELD HERE
  },
  "redirectURL": "",
  "headersSize": 814,
  "bodySize": 8888,
  "comment": ""
}

в то время как у некоторых других пакетов (которые мне не интересны) в файле HAR действительно есть «текстовое» поле в их response.content.

РЕДАКТИРОВАТЬ: Я решил это, используя mitmproxy вместо браузера. Он включает в себя механизм сценариев, который позволяет фильтровать пакеты и запускать на них произвольный код Python.

...