如何以编程方式从networking选项卡捕获查询string参数

我正在尝试捕获查询string参数的分析目的使用JavaScript。 我做了一些search,发现BMP可以用来做到这一点,但我无法find充足的例子来实现。 任何人都可以指向正确的方向。

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

 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#"); } }) } 

在这里输入图像描述

我的build议是为Google Chrome创build个人扩展程序,并开发扩展程序,以便访问控制台中默认不可用的更多apis。 例如,您将拥有该对象以检查networking选项卡:

chrome.devtools.network

这里有两个你可能会觉得有用的链接

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

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

我希望它有帮助

所以既然我不太确定你的范围,我会给你一些想法:

1.修复browsermob-proxy

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

2.使用普通的JavaScript

2.1获取当前页面查询string

您可以使用location.search获取查询string。 如果你使用一些带有selenium的BDD框架,可以执行javascript代码并检索结果。 你应该总是添加一个return到你的代码,以便在你的BDDtesting中获得响应。

2.2使用性能API

您可以访问性能API中的所有networking信息。 如果你需要获取当前页面的URL,你可以使用下面的代码:

 performance.getEntriesByType("navigation") 

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

如果你想得到一些关于这个页面的调用的信息,你可以使用下面的方法访问它:

 performance.getEntriesByType("resource") 

这将返回您的网站所做的所有电话。 您必须循环search您要查找的资源。


在所有的方式中,无法像在networking标签中一样获取查询string的值和密​​钥。 你必须用一个函数手动分开它,你可以使用这里提供的代码来获得一个键的值。

我终于可以用chrome控制台上的s对象来完成了。 带有编码查询string的url在Chrome控制台中作为s.rb对象可用。 我只是解码它,并提取查询string参数。