如何以编程方式从网络选项卡捕获查询字符串参数

hum*_*man 9 javascript web-traffic network-traffic node.js web-console

我正在尝试使用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#");
            }
        })
    }
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

Fra*_*sky 5

因此,由于我不太确定您的范围,因此我会给您一些想法:

1. 修复 browsermob-proxy

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

2. 使用普通的 javascript

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

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

2.2 使用性能 API

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

performance.getEntriesByType("navigation")
Run Code Online (Sandbox Code Playgroud)

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

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

performance.getEntriesByType("resource")
Run Code Online (Sandbox Code Playgroud)

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


在所有方式中,都无法像在网络选项卡中那样获取查询字符串的值和键。您必须使用函数手动分隔它,您可以使用此处提供的代码来获取键的值。


hum*_*man 0

我终于能够使用schrome 控制台上可用的对象来完成此操作。带有编码查询字符串的 url 可作为s.rbChrome 控制台中的对象使用。我刚刚对其进行了解码并提取了查询字符串参数。