BrowserMob Proxy Python - 如何获取响应正文?



我需要使用 Selenium Chrome 驱动程序和浏览器代理获取 POST 请求的响应正文内容。目前,当我阅读它时,此内容不包含在我的文件 HAR 输出中,尽管我可以在浏览器网络流量中看到响应。如何捕获响应流量?(抱歉,编程新手,看不到太多 BMP 的 Python 文档(

server.start(( 代理 = server.create_proxy(( chrome_options = 网络驱动程序。铬选项(( chrome_options.add_argument("--proxy-server={0}".format(proxy.proxy(( 驱动程序 = 网络驱动程序。Chrome(executable_path="chromedriver.exe", chrome_options=chrome_options( proxy.new_har("req", options={'captureHeaders': True,'captureContent':True}( driver.get('https://www.example.com/something'( result_har = json.dumps(proxy.har, ensure_ascii=False( 使用 open("haroutput.har", "w"( 作为 harfile: harfile.write(result_har( server.stop(( driver.quit((

您可以通过proxy.har['log']['entries']中具有相同名称的密钥获取请求和响应。响应的内容正在entry['response']['content']

但在您必须将'captureContent':True添加到proxy.new_har调用的option字典之前。

例:

from browsermobproxy import Server
server = Server("./bin/browsermob-proxy")
server.start()
proxy = server.create_proxy()
from selenium import webdriver
co = webdriver.ChromeOptions()
co.add_argument('--proxy-server={host}:{port}'.format(host='localhost', port=proxy.port))
driver = webdriver.Chrome(executable_path="chromedriver", chrome_options=co)
proxy.new_har('req',options={'captureHeaders': True,'captureContent':True})
driver.get(url)
proxy.har  # returns a HAR
for ent in proxy.har['log']['entries']:
_url = ent['request']['url']
_response = ent['response']
_content = _response['content']['text']

相关内容

  • 没有找到相关文章

最新更新