【问题标题】:Browsermob proxy - how can I modify response using response_interceptor?Browsermob 代理 - 如何使用 response_interceptor 修改响应?
【发布时间】:2015-11-23 11:28:33
【问题描述】:

我正在为browsermob proxy 使用python wrapper,我需要修改服务器响应。但我不知道我该怎么做。谁能给我一个工作代码示例?

文档说我可以为它发送一个 javascript 代码,但它对我不起作用:

server = Server(path=SCRIPT_DIR+"/browsermob-proxy/bin/browsermob-proxy", options={"port": 8888})
server.start()
proxy = server.create_proxy()

proxy.response_interceptor('contents.setTextContents("<html><body>Response successfully intercepted</body></html>")')

fp = webdriver.FirefoxProfile()
browser = webdriver.Firefox(firefox_profile=fp, proxy=proxy)
browser.get("http://example.com")

谢谢!

【问题讨论】:

    标签: python selenium browsermob-proxy


    【解决方案1】:

    在 browsermobproxy 0.7.1 版本中,response_interceptor 存在错误。您可以转到 github 并获取最新代码,或者您可以使用此解决方法来代替 response_interceptor:

    import requests
    
    url = proxy.host + '/proxy/' + str(proxy.port) + '/filter/response'
    headers={'Content-Type':'text/plain'}
    
    filter = "contents.setTextContents('<html><body>Response successfully intercepted</body></html>');"
    
    r = requests.post(url=url, data=filter, headers=headers)
    

    【讨论】:

      【解决方案2】:

      就像一个魅力 - 只是不要忘记在你的 Firefox 配置文件上设置代理;) fp.set_proxy(proxy.selenium_proxy())

      from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
      from selenium import webdriver
      from browsermobproxy import Server
      from pprint import pprint
      from time import sleep
      import requests
      
      
      server = Server($PATH_GOES_HERE$)
      server.start()
      
      
      proxy = server.create_proxy()
      
      proxy.new_har('test111')
      
      url = proxy.host + '/proxy/' + str(proxy.port) + '/filter/response'
      headers={'Content-Type':'text/plain'}
      
      filter = "response.setTextContents('<html><body>Response successfully intercepted</body></html>');"
      
      r = requests.post(url=url, data=filter, headers=headers)
      
      
      
      
      
      fp = webdriver.FirefoxProfile()
      fp.set_proxy(proxy.selenium_proxy()) # <---- you forgot this one here ;)
      browser = webdriver.Firefox(firefox_profile=fp, proxy=proxy)
      sleep(3)
      browser.get("example.com")
      

      【讨论】:

        猜你喜欢
        • 2018-11-06
        • 1970-01-01
        • 1970-01-01
        • 2012-11-15
        • 1970-01-01
        • 1970-01-01
        • 2021-11-20
        • 1970-01-01
        • 2014-10-25
        相关资源
        最近更新 更多