Articles of 谷歌铬

使用无头铬来拦截图像请求数据

我有一个用例,需要使用无头Chrome浏览器( https://chromedevtools.github.io/devtools-protocol/tot/Network/ )截取所有的图片请求,并find图片的大小,然后保存它(基本上丢弃小图像,如图标)。 但是,我无法find一种方法来加载内存中的图像数据保存之前。 我需要加载它的Img对象来获得width和height 。 Network.getResponseBody采取requestId,我没有在Network.requestIntercepted访问。 另外Network.loadingFinished在encodedDataLengthvariables中总是给我“0”。 我不知道为什么。 所以我的问题是: 如何拦截来自jpg / png请求的所有响应并获取图像数据? 不通过URLstring将文件保存到磁盘并加载回来。 BEST:如何从标题响应获取图像维度? 然后,我不必将数据读入内存。 我的代码如下: const chromeLauncher = require('chrome-launcher'); const CDP = require('chrome-remote-interface'); const file = require('fs'); (async function() { async function launchChrome() { return await chromeLauncher.launch({ chromeFlags: [ '–disable-gpu', '–headless' ] }); } const chrome = await launchChrome(); const protocol = await […]

在Chrome中使用Nodejs进行双重请求

我正在做一个Nodejstesting来增加一个全局计数器,根据下面的脚本。 一切正常,除了Chrome刷新时执行两个连续的请求,导致计数器增加两倍(请参阅图像)。 在Postman和Firefox工作正常,只有一个请求发生刷新。 我已经完成了在Linux和Windows上运行应用程序的testing,并且Chrome中存在这个问题。 任何人有任何想法可能会发生什么? server.js const http = require('http'); const express = require('express'); const app = express(); const rotas = require("./route-test")(app); const port = 3000; const server = app.listen(process.env.PORT || port, function(){ console.log('App listening port: ', port); }); 路由test.js const myGlobalVars = require("./global-vars"); module.exports = (app) => { app.use('/', (req, res) => { res.end('Counter […]

Chrome无头自动重启侦听器崩溃后

我正在寻找一个解决scheme来自动重启节点JS中的chrome与木偶API: 就像是: browser.on('error', (err: Error) => { // do restart }) 如果遇到错误或错误,我没有在文档中find有监听器的方法。 有人有解决scheme? 谢谢 ! 马克斯

未被捕获(承诺):收到响应之前,消息端口已closures

所以在这个问题之前,我想指出,我只能在这个问题上罚款是在这个stackoverflow的问题 。 这个问题表明这是wappalyzer的一个问题,并且在4.0.1版本中被修复。 不过,我正在使用wappalyzer版本5.1.4,并与此最新。 我正在构build一个基于平均值堆栈的web应用程序,一切都按预期工作了很长时间,直到这个错误不断出现在我的谷歌浏览器控制台中: 每次我点击我的应用程序标题,并使用我的前端路由加载不同的组件/模块这个错误出现,但是我没有看到任何问题,什么Web应用程序呈现给我(这不是像我缺less数据) 关于错误的更多细节: 我不知道发生了什么,或者这个问题来自哪里。

来源神秘地出现

我以为我了解浏览器是如何工作的,但似乎没有。 🙁 给定一个网页: <html> <head> <meta charset="utf-8"> <title>My website</title> <link rel="stylesheet" href="styles/main.css" charset="utf-8"> </head> <body> <div id="container"></div> <script src="scripts/main.js" charset="utf-8"></script> </body> </html> networking面板:由nodejs在本地提供: 好的,对。 但是networking活动中还没有出现更多来源: 他们如何到达那里? 我在main.js或其他地方看不到src/scripts/main.jsx或/node_modules的main.js 。 背景这当然是由于我的一些构build错误,尤其是与browserify(和babel / react)。 我在那里做错了,但是我更加困扰,我无法理解这些资源是如何在我的浏览器中出现的。

PrintToPDF不能在无头Chrome 60中工作

我正尝试通过无头版Chrome进行PDF打印。 这是我正在处理的错误: (node:6761)UnhandledPromiseRejectionWarning:未处理的承诺拒绝(拒绝ID:1): 错误:PrintToPDF未实现 Node.js包: html-pdf-chrome 依赖关系: ✔ "chrome-remote-interface": "^0.23.1" (v0.23.2 installed) ✔ Chrome 59 (v60 beta installed) 驱动脚本: const htmlPdf = require('html-pdf-chrome'); const html = '<p>Hello, world!</p>'; const options = { port: 9222, // port Chrome is listening on }; htmlPdf.create(html, options).then((pdf) => pdf.toFile('test.pdf')); Chrome 60已安装并以无头模式运行: > google-chrome –version Google Chrome 60.0.3112.24 beta 我跟踪了调用Page.printToPDF的代码段,这是错误发生的地方: […]

Docker中如何运行无头浏览器?

我正在用无头浏览器构build一个爬虫但是现在我想要dockerize我的应用程序我已经在我的docker镜像中安装了chrome但是在运行这个脚本的时候它会抛出一个错误。 StartChrome.js const chromeLauncher = require('chrome-launcher'); chromeLauncher.launch({ port: 9222, chromeFlags: ['–headless','–proxy-server=54.171.181.204:8888','–disable-web-security','–disable-gpu'] }).then(chrome => { console.log(`Chrome debugging port running on ${chrome.port}`); }); 呃 (node:415) UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: connect ECONNREFUSED 127.0.0.1:9222 (node:415) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js […]

Chrome致命一击

我有一个Node.js / Meteor应用程序,一直在屏幕上运行 – 大概20小时没有问题,然后没有失败(当我不在办公室),我得到臭名昭着的“Aw Snap”屏幕: 我已经检查了chrome_debug日志,下面的行表示崩溃: [3868:3656:0515/030350:致命:platform_canvas.cc(70)] SK_CRASH 然而,没有什么可以继续 – 使用谷歌search错误和变化检索很less的结果。 我能做些什么来进一步debugging?

Chrome上的Nodejs Localhost问题

我只是学习节点,我有一些问题在铬本地运行。 当我尝试打本地主机:3000。 当我在terminal上启动项目时,我得到了第一个日志,它正在3000上进行监听,但是当我点击页面时,它告诉我网页不可用,而且我看不到任何更多的日志。 但是它在Safari和Firefox中也可以工作。 另外如果我切换到端口80,并在我的实际服务器上运行,它在Chrome中工作正常。 我试图清除所有的caching,运行在隐身和重新启动我的比较。 似乎没有任何工作。 Chrome暗示,这可能是一个代理问题,但我不是为什么或如何改变这种情况,因为这个问题只是在最近几天才开始,我没有改变任何东西。

如何增加页面加载的goto超时?

TL;博士; 我需要增加这个超时: 命令| 命令`test`在[32.585s]之后以错误结束 命令| BackstopExcpetion:未定义的testing#1:GotoTimeoutError:goto()超时 考虑以下服务器代码: const http = require('http'); const hostname = '0.0.0.0'; const port = 3000; http.createServer((req, res) => { res.statusCode = 200; res.setHeader('Content-Type', 'text/html'); res.end(`<!DOCTYPE html> <title>Test Page</title> <script>console.log("Hello world!")</script> <h1>Hello world!</h1> `); }).listen(port, hostname, () => { console.log(`Server running at http://${hostname}:${port}/`); }); 和4 * 3 = 12testing的BackstopJSconfiguration: { "id": "backstop_default", […]