没有协议,伪造者不会打开网址

时间:2018-08-30 06:23:57

标签: chromium puppeteer headless

const puppeteer = require('puppeteer');

const browser = await puppeteer.launch();
const page = await browser.newPage();

这个作品

await page.goto('https://example.com');

这不起作用(没有协议,即http / https)

await page.goto("www.example.com');

它引发错误

  

协议错误(Page.navigate):无法导航到无效URL

为什么不像在Google Chrome中打开协议那样附加协议?

1 个答案:

答案 0 :(得分:2)

Google Chrome Omnibox(地址栏)具有处理多种复杂情况的内置功能,例如:附加协议,自动完成等。

Puppeteer提供了一个API,可以控制DevTools Protocol上的Chrome或Chromium,因此许多功能目前不在Puppeteer的范围内。

函数page.goto()的Puppeteer文档明确指出:

  

网址应包含方案,例如https://

这是因为page.goto()利用了Chrome DevTools协议中的Page.navigate

Chromium source code显示已明确检查通过Page.navigate进行的导航是否有效,如果URL无效,它将返回错误“无法导航到无效URL”。

您可以在Node.js中轻松创建一个将协议附加到URL的函数,这可能是解决问题的方法。