我正在为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")谢谢!
发布于 2016-10-13 15:59:01
在浏览器代理版本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)发布于 2018-01-10 04:41:25
工作起来很棒--但别忘了在你的火狐档案上设置代理;) 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")https://stackoverflow.com/questions/33869987
复制相似问题