我正在以无头模式在AWS EC2 AMI(Linux)上运行puppeteer,以进行一些Web抓取。是否可以从本地Windows设置远程跟踪其GUI?
我参考了this文章,想知道是否将--remote-debugging-port=9222
添加到我的代码中,然后在本地浏览器中访问http://localhost:9222
会让我看到GUI。是否有可能做到这一点?我不确定我是否在正确的轨道上。任何帮助将不胜感激。
答案 0 :(得分:0)
是的,这是可能的。您必须设置--remote-debugging-address
参数。
引用List of Chromium Command Line Switches:
使用给定地址而不是默认环回来接受远程调试连接。应与--remote-debugging-port一起使用。请注意,远程调试协议不会执行任何身份验证,因此,将其公开得太多可能会带来安全风险。
说明
默认情况下,Chrome绑定到127.0.0.1
(仅本地接口),该接口仅允许来自计算机本身的连接。如果您将参数设置为0.0.0.0
,Chrome浏览器将监听所有允许从计算机外部进行连接的网络接口(有关更多信息,请查看this answer on stackoverflow)。但是,您仍然需要确保没有适当的防火墙来阻止连接,但是默认情况下情况并非如此。
这意味着,像这样启动Chrome可以从另一台计算机进行调试:
chrome --remote-debugging-port=9222 --remote-debugging-address=0.0.0.0 [possible other flags]
您现在可以访问http://IP_OF_YOUR_MACHINE:9222
,并且会遇到Chrome的DevTools GUI。或者,您可以使用puppeteer.connect
连接到计算机:
const browser = await puppeteer.connect({ browserURL: 'http://...:9222' });
// ...
安全注意事项
请记住,此端口向任何可以访问Internet的人开放。您可能要考虑使用防火墙阻止连接,或使用node-http-proxy之类的库来过滤任何连接,然后再将其传递到浏览器。