如何以编程方式从网络选项卡捕获查询字符串参数
How to capture query string parameters from network tab programmatically
我正在尝试使用 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#");
}
})
}
我的建议是为 Google Chrome 创建您的个人扩展,并开发一个扩展,您可以访问控制台中默认不可用的更多 API。
例如,您将拥有此对象以检查网络选项卡:
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 获取当前页面查询字符串
您可以使用location.search
获取查询字符串。如果您使用一些带有 selenium 的 BDD 框架,则可以执行 javascript 代码并检索结果。您应该始终在代码中添加 return
以便在 BDD 测试中收到响应。
2.2 使用性能API
您可以访问performance api内的所有网络信息。如果需要获取当前页面url可以使用下面的代码:
performance.getEntriesByType("navigation")
这将return所有当前的导航事件和信息。
如果您想获取有关该页面进行的调用的一些信息,您可以使用以下方法访问它:
performance.getEntriesByType("resource")
这将 return 您网站发出的所有调用。您必须遍历它来搜索您要查找的资源。
在所有的方法中,都没有办法像在网络选项卡中那样获取查询字符串的值和键。你必须用一个函数手动分离它,你可以使用代码provided here来获取一个键的值。
我终于能够使用 chrome 控制台上可用的 s
对象来完成它。带有编码查询字符串的 url 在 chrome 控制台中作为 s.rb
对象可用。我刚刚解码并提取了查询字符串参数。
我正在尝试使用 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#");
}
})
}
我的建议是为 Google Chrome 创建您的个人扩展,并开发一个扩展,您可以访问控制台中默认不可用的更多 API。 例如,您将拥有此对象以检查网络选项卡:
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 获取当前页面查询字符串
您可以使用location.search
获取查询字符串。如果您使用一些带有 selenium 的 BDD 框架,则可以执行 javascript 代码并检索结果。您应该始终在代码中添加 return
以便在 BDD 测试中收到响应。
2.2 使用性能API
您可以访问performance api内的所有网络信息。如果需要获取当前页面url可以使用下面的代码:
performance.getEntriesByType("navigation")
这将return所有当前的导航事件和信息。
如果您想获取有关该页面进行的调用的一些信息,您可以使用以下方法访问它:
performance.getEntriesByType("resource")
这将 return 您网站发出的所有调用。您必须遍历它来搜索您要查找的资源。
在所有的方法中,都没有办法像在网络选项卡中那样获取查询字符串的值和键。你必须用一个函数手动分离它,你可以使用代码provided here来获取一个键的值。
我终于能够使用 chrome 控制台上可用的 s
对象来完成它。带有编码查询字符串的 url 在 chrome 控制台中作为 s.rb
对象可用。我刚刚解码并提取了查询字符串参数。