问题标签 [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.

0 投票
1 回答
421 浏览

proxy - 使用量角器在页面加载期间阻止第 3 方 url

我想在页面加载期间阻止所有第 3 方垃圾(如 Facebook 和谷歌分析 api)以加快执行速度。许多人建议使用代理是最好的方法。

有没有人这样做过?您能否建议我如何在量角器和 Jasmine 测试框架中实现代理和黑名单 url。

0 投票
1 回答
732 浏览

python - 尝试将 browsermob-proxy 与 selenium 一起使用时出现错误替换错误

在 ubuntu 系统上,我正在尝试将“browsernmob-proxy”与 python-selenium 测试一起使用。按照此处的文档,我安装了“browsermob-proxy”并尝试了以下 python 代码:

但这立即失败并出现以下错误:

知道如何解决这个问题吗?

我也尝试使用

相反,但这失败并出现以下错误:

附录

  • 我可能设法browsermob-proxy在端口 8088 或 8089 上获得了 tun(不完全确定),但示例代码仍然无法运行......
0 投票
0 回答
1490 浏览

python - 如何启动 browsermob-proxy?

我正在尝试按照此处browsermob-proxy的说明运行。我关闭了存储库,更改为directoty

并运行以下命令:

并且

在这两种情况下,我都会收到以下错误:

如何修复此错误,以及如何运行 browsermob-proxy,以便我可以使用它来跟踪我在使用 firefox/geckodriver webdriver 进行 python-selenium 测试期间拥有的所有连接?

0 投票
2 回答
3202 浏览

python - 如何在 Mac 上修复“无法连接到 Browsermob-Proxy”?

在 Mac 上运行,我试图browsermob-proxy在 python-selenium 测试期间使用它来监视连接。我从这里下载了 java 实现 2.1.4并 pip 安装了 python 包装器(browsermobproxy)。完整的示例代码在这里(以下示例找到了很多):

但是当使用 python 3.6.2 运行此代码时,会出现以下错误:

有没有办法修复这个错误并能够browsermob-proxy在 Mac 上使用?

0 投票
2 回答
2910 浏览

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})

但无论我将端口设置为什么,我总是会收到以下错误:

所以一定有其他东西工作不正确......

也许我会自己编写这样的代理。似乎是更快的方法...

0 投票
0 回答
252 浏览

javascript - 使用 selenium 通过代理运行 javascript

我通过 BrowserMobProxyServer(在 firefox 上)运行 Java 中的 Selenium 2,因为我需要在导航表单时捕获某些网络事件。我有一个 javascript 命令,我可以通过 JavascriptExecutor 使用 .executeScript("script.test") 调用它,但如果代理打开,这将不起作用。它在代理关闭的情况下工作正常 - 有没有办法在代理开启的情况下进行这项工作,或者无法通过代理进行 javascript 注入?

这是我使用代理创建的驱动程序。

我的 javascript 测试如下所示。

0 投票
0 回答
356 浏览

java - 浏览器暴民代理请求标头中缺少内容编码

我需要使用 Browser Mob 代理从请求标头中获取并验证 Content-Encoding - https://github.com/lightbody/browsermob-proxy

我可以收集来自设备的所有请求。但不幸的是,请求标头中缺少 Content-Encoding 标头。如何获取此标头值?

响应标头:

请求标头

0 投票
2 回答
309 浏览

python - HTTP 响应中使用了哪种 base64?

我正在捕获 Selenium 使用 Browser Mob 代理(使用 browsermob-proxy Python 包)发出的 HTTP 请求。在我的 HAR 文件中,我看到了这个(它应该是一个 Javascript 文件):

但是,当解码使用textcontent

我总是收到以下错误:

解码此类字符串的正确方法是什么?

编辑添加

我假设问题来自 rfc1341 的这一行:“base64 数据中的 CRLF 序列应转换为带引号的可打印换行符,但仅在转换文本数据时”,因为解码适用于图像。

但是,我还没有理解什么是 base64 数据中的 CRLF 序列以及如何转换它。

0 投票
1 回答
1181 浏览

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。

0 投票
1 回答
914 浏览

java - 用于基于云的测试的独立与嵌入式 Browsermob 代理(Sauce Labs/Browserstack)

我使用嵌入式 Browsermob 代理服务器在本地进行了工作测试。没有什么新东西,但仍然是示例代码。

现在我们正在寻找将这些测试集成到我们的 CI 管道中并在云中执行这些测试的选项(Browserstack/Sauce Labs)。我试图弄清楚在这种情况下设置会是什么样子。现在我的理解是代码(设置代理并实际包含测试)将在我们的服务器上运行。这意味着嵌入式代理也将在我们的服务器上运行,这不一定可以从外部访问。所以问题是:

  1. 我是否必须切换到独立的 browsermob 代理并使其可访问?
  2. 如果是,那么是否有任何从代码中使用独立代理的实际代码示例?(这个选项看起来不是特别吸引人,因为我们必须编写样板代码来包装 REST API)
  3. 如果不是,那么我是否正确假设远程 Selenium Webdriver 将通过新设置的嵌入式代理通过隧道(Sauce Connect 等)连接到被测网站?
  4. 将 Browsermob 与 CI 服务器与基于云的测试平台一起使用的最佳实践是什么?