问题标签 [browsermob-proxy]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
proxy - 使用量角器在页面加载期间阻止第 3 方 url
我想在页面加载期间阻止所有第 3 方垃圾(如 Facebook 和谷歌分析 api)以加快执行速度。许多人建议使用代理是最好的方法。
有没有人这样做过?您能否建议我如何在量角器和 Jasmine 测试框架中实现代理和黑名单 url。
python - 尝试将 browsermob-proxy 与 selenium 一起使用时出现错误替换错误
在 ubuntu 系统上,我正在尝试将“browsernmob-proxy”与 python-selenium 测试一起使用。按照此处的文档,我安装了“browsermob-proxy”并尝试了以下 python 代码:
但这立即失败并出现以下错误:
知道如何解决这个问题吗?
我也尝试使用
相反,但这失败并出现以下错误:
附录
- 我可能设法
browsermob-proxy
在端口 8088 或 8089 上获得了 tun(不完全确定),但示例代码仍然无法运行......
python - 如何启动 browsermob-proxy?
我正在尝试按照此处browsermob-proxy
的说明运行。我关闭了存储库,更改为directoty
并运行以下命令:
并且
在这两种情况下,我都会收到以下错误:
如何修复此错误,以及如何运行 browsermob-proxy,以便我可以使用它来跟踪我在使用 firefox/geckodriver webdriver 进行 python-selenium 测试期间拥有的所有连接?
python - 如何在 Mac 上修复“无法连接到 Browsermob-Proxy”?
在 Mac 上运行,我试图browsermob-proxy
在 python-selenium 测试期间使用它来监视连接。我从这里下载了 java 实现 2.1.4并 pip 安装了 python 包装器(browsermobproxy
)。完整的示例代码在这里(以下示例找到了很多):
但是当使用 python 3.6.2 运行此代码时,会出现以下错误:
有没有办法修复这个错误并能够browsermob-proxy
在 Mac 上使用?
python - 如何使用 browsermob-proxy 修复“地址已在使用”错误?
我仍在尝试使用browsermob-proxy
(此处)尝试在 python selenium 测试期间监控网络流量(请参阅browsermobproxypy)。我正在使用以下脚本对其进行测试:
我设法安装了一个“browsermob.jar”文件(这里的文档中没有很好地描述它;你必须从这里下载 jar 文件)。我正在按如下方式启动代理:
然后我运行测试脚本
但是,在日志中,我看到如下错误:
我最好的猜测是该端口已经在使用中,或者其他东西无法正常工作。也许我需要在脚本中明确指定端口?但是怎么做呢?一个 python 文档实际上是不存在的......
附录
查看源代码(!)我想出了如何设置端口。我正在使用以下行在 python 脚本中定义服务器和端口:
server = Server("/home/adietz/Projects/Invest/browsermob-proxy/browsermob-proxy-2.1.4/bin/browsermob-proxy", {'port':9090})
但无论我将端口设置为什么,我总是会收到以下错误:
所以一定有其他东西工作不正确......
也许我会自己编写这样的代理。似乎是更快的方法...
javascript - 使用 selenium 通过代理运行 javascript
我通过 BrowserMobProxyServer(在 firefox 上)运行 Java 中的 Selenium 2,因为我需要在导航表单时捕获某些网络事件。我有一个 javascript 命令,我可以通过 JavascriptExecutor 使用 .executeScript("script.test") 调用它,但如果代理打开,这将不起作用。它在代理关闭的情况下工作正常 - 有没有办法在代理开启的情况下进行这项工作,或者无法通过代理进行 javascript 注入?
这是我使用代理创建的驱动程序。
我的 javascript 测试如下所示。
java - 浏览器暴民代理请求标头中缺少内容编码
我需要使用 Browser Mob 代理从请求标头中获取并验证 Content-Encoding - https://github.com/lightbody/browsermob-proxy
我可以收集来自设备的所有请求。但不幸的是,请求标头中缺少 Content-Encoding 标头。如何获取此标头值?
响应标头:
请求标头
python - HTTP 响应中使用了哪种 base64?
我正在捕获 Selenium 使用 Browser Mob 代理(使用 browsermob-proxy Python 包)发出的 HTTP 请求。在我的 HAR 文件中,我看到了这个(它应该是一个 Javascript 文件):
但是,当解码使用text
的content
我总是收到以下错误:
解码此类字符串的正确方法是什么?
编辑添加
我假设问题来自 rfc1341 的这一行:“base64 数据中的 CRLF 序列应转换为带引号的可打印换行符,但仅在转换文本数据时”,因为解码适用于图像。
但是,我还没有理解什么是 base64 数据中的 CRLF 序列以及如何转换它。
browsermob-proxy - 如何让 browsermob-proxy 记录所有响应主体
我在使用 browsermob-proxy 及其 har 导出功能时遇到问题。未记录某些响应正文(缺少整个“文本”字段)
我的设置(使用 browsermob-proxy 2.1.4)
curl -X POST http://localhost:8080/proxy?port=9091
curl -X PUT "http://localhost:8080/proxy/9091/har?captureHeaders=true&captureCookies=true&captureContent=true"
一些回应很好:
"response": {
"status": 201,
"statusText": "Created",
"httpVersion": "HTTP/1.1",
"cookies": [],
"headers": [{
"name": "Cache-Control",
"value": "max-age=0, no-cache, no-store"
}, {
"name": "Content-Type",
"value": "application/json"
}, {
"name": "Date",
"value": "Thu, 15 Feb 2018 13:07:39 GMT"
}, {
"name": "Location",
"value": ...
}, {
"name": "Pragma",
"value": "no-cache"
}, {
"name": "Render-Time",
"value": "8"
}, {
"name": "Server",
"value": "openresty"
}, {
"name": "Strict-Transport-Security",
"value": "max-age=31536000; includeSubDomains"
}, {
"name": "transfer-encoding",
"value": "chunked"
}, {
"name": "Connection",
"value": "keep-alive"
}],
"content": {
"size": 8607,
"mimeType": "application/json",
"text": "{ <actual json body> }",
"comment": ""
}, ...
但有些不是(可能是特殊的内容/mime 类型?或者可能是 gzip 内容编码?)
"response": {
"status": 200,
"statusText": "OK",
"httpVersion": "HTTP/1.1",
"cookies": [],
"headers": [{
"name": "Cache-Control",
"value": "max-age=0, no-cache, no-store"
}, {
"name": "Content-Encoding",
"value": "gzip"
}, {
"name": "Content-Type",
"value": "application/some.custom.type-v1+json"
}, {
"name": "Date",
"value": "Thu, 15 Feb 2018 13:07:39 GMT"
}, {
"name": "Pragma",
"value": "no-cache"
}, {
"name": "Render-Time",
"value": "92"
}, {
"name": "Server",
"value": "openresty"
}, {
"name": "Strict-Transport-Security",
"value": "max-age=31536000; includeSubDomains"
}, {
"name": "Vary",
"value": "Accept-Encoding"
}, {
"name": "Content-Length",
"value": "1978"
}, {
"name": "Connection",
"value": "keep-alive"
}],
"content": {
"size": 7429,
"mimeType": "application/some.custom.type-v1+json",
"comment": ""
< there's nothing else here!! >
},
"redirectURL": "",
"headersSize": 444,
"bodySize": 1978,
"comment": ""
}, ...
哦,是的,两个请求都通过 https,使用 MITM。
java - 用于基于云的测试的独立与嵌入式 Browsermob 代理(Sauce Labs/Browserstack)
我使用嵌入式 Browsermob 代理服务器在本地进行了工作测试。没有什么新东西,但仍然是示例代码。
现在我们正在寻找将这些测试集成到我们的 CI 管道中并在云中执行这些测试的选项(Browserstack/Sauce Labs)。我试图弄清楚在这种情况下设置会是什么样子。现在我的理解是代码(设置代理并实际包含测试)将在我们的服务器上运行。这意味着嵌入式代理也将在我们的服务器上运行,这不一定可以从外部访问。所以问题是:
- 我是否必须切换到独立的 browsermob 代理并使其可访问?
- 如果是,那么是否有任何从代码中使用独立代理的实际代码示例?(这个选项看起来不是特别吸引人,因为我们必须编写样板代码来包装 REST API)
- 如果不是,那么我是否正确假设远程 Selenium Webdriver 将通过新设置的嵌入式代理通过隧道(Sauce Connect 等)连接到被测网站?
- 将 Browsermob 与 CI 服务器与基于云的测试平台一起使用的最佳实践是什么?