9

我正在尝试使用 javascript 捕获查询字符串参数以用于分析目的。我进行了一些搜索,发现可以使用BMP来执行此操作,但我无法找到足够的示例来实现。谁能指出我正确的方向。

编辑1: 我使用下面的代码browsermob-proxy来获取har文件,但是ERROR: browsermob-proxy returned error当我运行它时得到了。我用硒。

getHarFile() {
        const proxy = browsermb.Proxy;
        const pr = new proxy({host:"0.0.0.0",port:4444});
        pr.doHAR("http://www.cnn.com/", (err,data) => {
            if (err) {
                logger.debug('ERROR: ' + err);
            } else {
                fs.writeFileSync('ua.com.har', data, 'utf8');
                logger.debug("#HAR CREATED#");
            }
        })
    }

在此处输入图像描述

4

3 回答 3

5

因此,由于我不太确定您的范围,因此我将向您提出一些想法:

1. 修复 browsermob-proxy

您应该更改 browsermob-proxy 的主机和代理。将主机更改为 127.0.0.1 和任何随机数的端口(4444 可以)。然后,通过更改浏览器设置确保您的浏览器在该主机和代理中运行。

2.使用纯javascript

2.1 获取当前页面查询字符串

您可以使用location.search. 如果您正在使用带有 selenium 的 BDD 框架,则可以执行 javascript 代码并检索结果。return为了在 BDD 测试中接收响应,您应该始终将 a 添加到您的代码中。

2.2 使用性能 API

您可以访问性能 api中的所有网络信息。如果您需要获取当前页面的 url,您可以使用以下代码:

performance.getEntriesByType("navigation")

这将返回所有当前的导航事件和信息。

如果您想获取页面调用的一些信息,您可以使用以下命令访问它:

performance.getEntriesByType("resource")

这将返回您的站点发出的所有调用。您必须遍历它以搜索要查找的资源。


无论如何,没有办法像在网络选项卡中那样获取查询字符串的值和键。您必须使用函数手动将其分开,您可以使用此处提供的代码来获取键的值。

于 2017-08-20T18:58:27.090 回答
3

我的建议是为 Google Chrome 创建您的个人扩展程序,并开发一个扩展程序,您可以访问更多在控制台中默认不可用的 API。例如,您将拥有此对象以检查网络选项卡:

chrome.devtools.network

这里有两个您可能会发现有用的链接:

https://developer.chrome.com/extensions/devtools

https://developer.chrome.com/extensions/devtools_network

我希望它有帮助

于 2017-08-12T11:46:27.053 回答
1

我终于能够使用schrome 控制台上可用的对象来做到这一点。带有编码查询字符串的 url 可作为s.rbchrome 控制台中的对象使用。我只是对其进行解码并提取查询字符串参数。

于 2017-08-25T17:25:06.263 回答