Mac系统下如何修复‘无法连接Browsermob-Proxy’问题?
解决Mac上Browsermob-Proxy无法连接Python Wrapper的问题
我之前在Mac上用Browsermob-Proxy配合Selenium时也碰到过一模一样的错误,大概率是路径不对、Java环境不兼容或者Apple Silicon架构适配的问题,给你几个具体的修复步骤:
1. 修正Browsermob-Proxy的启动路径
你代码里指定的路径是源码目录下的脚本,不是解压后可直接运行的编译版本。2.1.4版本的正确启动脚本路径应该是解压后的bin目录下的browsermob-proxy,把Server初始化的路径改成:
server = Server("/Users/adietz/Projects/Invest/browsermob/browsermob-proxy-2.1.4/bin/browsermob-proxy")
2. 检查Java环境是否符合要求
Browsermob-Proxy 2.1.4需要Java 8或更高版本,打开终端运行:
java -version
如果版本低于Java 8,需要安装对应版本;如果是Apple Silicon(M1/M2)的Mac,还需要用Rosetta运行Java,你可以测试下:
arch -x86_64 java -version
如果这个命令能正常输出版本,那可以在启动Browsermob时强制用x86架构,修改Server的启动命令:
server = Server( command=['arch', '-x86_64', "/Users/adietz/Projects/Invest/browsermob/browsermob-proxy-2.1.4/bin/browsermob-proxy"], options={"port": 9090} )
3. 避免端口冲突(可选但推荐)
有时候默认端口会被其他进程占用,你可以指定一个固定端口,同时在启动前检查端口是否被占用:
lsof -i :9090
如果有进程占用,用kill -9 <PID>杀掉对应的进程,再运行代码。
4. 完整的修复后代码示例
from browsermobproxy import Server from selenium import webdriver # 替换为你的browsermob-proxy实际路径 proxy_path = "/Users/adietz/Projects/Invest/browsermob/browsermob-proxy-2.1.4/bin/browsermob-proxy" # 适配Apple Silicon的启动命令 server = Server( command=['arch', '-x86_64', proxy_path], options={"port": 9090} ) try: server.start() proxy = server.create_proxy() # 配置Firefox代理 profile = webdriver.FirefoxProfile() profile.set_proxy(proxy.selenium_proxy()) driver = webdriver.Firefox(firefox_profile=profile) # 开始捕获HAR数据 proxy.new_har("google") driver.get("http://www.google.co.in") # 打印捕获的HAR数据,验证是否成功 print("捕获的HAR数据:", proxy.har) finally: # 确保资源被正确释放,避免残留进程 server.stop() driver.quit()
按照上面的步骤修改后,应该就能正常启动Browsermob-Proxy并捕获请求了。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

