Browser 从终端访问浏览器控制台?

Browser 从终端访问浏览器控制台?,browser,development-environment,Browser,Development Environment,是否可以从Linux终端访问开发者工具(Chrome/Firefox)控制台以进行脚本编写 我试图从浏览器中访问AngularJS应用程序的变量,以便快速浏览文件。例如,我可以询问状态,及其相关的部分,控制器等;一旦找到结果,我就会在编辑器中打开该文件 我正在探索的另一种选择是使用某种。还有一些工具使用它,比如对Chrome开发者工具进行编程访问 一个简单的节点REPL就足够了,但问题是,如果我已经将我的站点的JavaScript文件加载到REPL中,我将不得不手动计算很多东西 有人有什么好的建

是否可以从Linux终端访问开发者工具(Chrome/Firefox)控制台以进行脚本编写

我试图从浏览器中访问AngularJS应用程序的变量,以便快速浏览文件。例如,我可以询问
状态
,及其相关的
部分
控制器
等;一旦找到结果,我就会在编辑器中打开该文件

我正在探索的另一种选择是使用某种。还有一些工具使用它,比如对Chrome开发者工具进行编程访问

一个简单的节点REPL就足够了,但问题是,如果我已经将我的站点的JavaScript文件加载到REPL中,我将不得不手动计算很多东西


有人有什么好的建议吗?

除非你想使用或写一本书,而这本书只对极少数人有意思,否则我建议你 繁荣的无头铬合金社区的优势。使用 在一些样板节点代码之后,这是很简单的。 它的速度也惊人(但不是“惊人的”)快

在运行代码之前:

  • 让node js和npm在您的机器上工作
  • 用于在shell中解析JSON。它在大多数软件包管理器中都可用,因此
    brew install jq
    sudo apt install jq
    等应该可以工作
  • 在这些脚本将与npm i Puppeter一起生活的目录中安装Puppeter
    • 为了避免陷入困境,我将跳过这个话题
像这样的文件是所有你需要开始与木偶演员。我在关键领域添加了评论

#/usr/bin/env节点
const puppeter=require('puppeter')
;(异步()=>{
const browser=wait puppeter.launch()
//用这句话替换上面的一行,这是一场有趣的表演
//const browser=wait puppeter.launch({
//无头:错,
//devtools:没错,
// })
const page=wait browser.newPage()
//在演示中任意选择SO,替换为您的网站
等待页面。转到('https://stackoverflow.com/')
//或者使用参数:
//常量uri=process.argv[2]
//等待page.goto(process.argv[0])
const retrievedData=等待页面。评估(()=>{
//此块具有页面上下文,与控制台中的内容几乎相同
//除了控制台的一些补充API之外。
//分别获取URL主机名和路径
常量{origin,pathname}=window.location;
//以愚蠢的方式获取标题,仅用于演示目的
const title=document.querySelector('title').textContent
//更有趣的是-从`窗口保存来自` StackExchange`对象的数据`
const{options:soOptions}=window.StackExchange
//返回包含shell脚本数据的对象文字
返回{
起源,
路径名,
选择,
}
})
//将对象从浏览器eval转换为JSON,以便稍后使用jq进行解析
const retrievedJSON=JSON.stringify(retrievedData,null,4)
//console.log写入节点中的标准输出
console.log(retrievedJSON)
等待浏览器关闭()
})()
请注意顶部的,这使shell能够理解如何使用
节点运行它

如果我们使此文件可执行并运行它:

chmod+x get-so-data.js
./get-so-data.js
我们有一个CLI实用程序,它将从网站的JavaScript全局执行上下文提供JSON数据字符串。下面是一些小的通用shell示例

#/垃圾箱/垃圾箱
#确认jq了解结果(应使用ANSI颜色打印):
./get-so-data.js | jq
# {
#许多数据。。。
# }
#检查用户是否已登录(该用户是沙盒浏览器中的节点脚本,因此没有):
./get-so-data.js | jq'.soOptions.user.isRegistered'
#空的
#根据StackExchange的服务器时钟告知时间(仅限linux):
/get-so-data.js | jq'.soOptions.serverTime'| date-d$(echo-n'@'和&cat--)
#2020年9月11日星期五04:37:02下午太平洋时间
#在默认编辑器中打开Puppeter返回的JSON负载的子集:
./get-so-data.js | jq'.soOptions'|$EDITOR--
#或者特别是VS代码
./get-so-data.js | jq'.soOptions'代码--
# ...
只要等式的JavaScript端返回足够的信息来构建文件路径,就可以在浏览器中基于JavaScript在编辑器中打开文件

在一本三岁的Chromebook上,shell日期示例大约需要1.5秒 从内部 使用25mbps公共wifi。您的里程数将根据车辆的性能而有所不同 正在调试的站点以及脚本中的步骤

$time./get-so-data.js | jq'.soOptions.serverTime'| date-d$(echo-ne'@'和&cat--)
2020年9月11日星期五04:43:24下午太平洋时间
真正的0m1.515s
用户0.945s
sys 0m0.383s
$time./get-so-data.js | jq'.soOptions.serverTime'| date-d$(echo-ne'@'和&cat--)
2020年9月11日星期五下午04:43:30太平洋标准时间
真正的0m1.755s
用户0m0.999s
sys 0m0.433s
$time./get-so-data.js | jq'.soOptions.serverTime'| date-d$(echo-ne'@'和&cat--)
2020年9月11日星期五下午4:43:33太平洋时间
实0m1.422s
用户0m0.802s
sys 0m0.361s
资源
  • (有关节点脚本中更高级的命令行参数)