Puppeteer执行简单代码无法打开目标URL 求助
问题:Puppeteer启动Chromium后无法加载https://google.com页面
我编写了如下代码:
const puppeteer = require("puppeteer"); (async () => { const browser = await puppeteer.launch({ headless: false, ignoreDefaultArgs: ["--disable-extensions"], }); const page = await browser.newPage(); await page.goto("https://google.com"); await browser.close(); })();
运行代码后,Chromium浏览器成功启动,但无法打开指定的https://google.com页面,截图如下:
可行的解决方法
1. 延长加载超时并启用日志排查
默认page.goto超时30秒,网络慢时可能加载不完成,开启日志能直观看到请求问题:
const puppeteer = require("puppeteer"); (async () => { const browser = await puppeteer.launch({ headless: false, ignoreDefaultArgs: ["--disable-extensions"], dumpio: true, // 输出浏览器控制台日志 }); const page = await browser.newPage(); // 延长超时到60秒,等待网络空闲确认加载完成 await page.goto("https://google.com", { timeout: 60000, waitUntil: "networkidle2" }); await browser.close(); })();
2. 调整launch参数配置
ignoreDefaultArgs: ["--disable-extensions"]可能干扰浏览器网络配置,试试恢复默认参数或添加必要的运行参数:
const browser = await puppeteer.launch({ headless: false, args: [ "--no-sandbox", "--disable-setuid-sandbox" // 调试时可临时添加--disable-web-security,生产环境禁用 ] });
3. 配置网络代理(若环境需要)
如果你的网络依赖代理,需在Puppeteer中明确配置:
// 方式1:启动浏览器时指定代理 const browser = await puppeteer.launch({ args: ['--proxy-server=http://你的代理地址:端口'] }); // 方式2:给页面设置代理认证(若需要账号密码) const page = await browser.newPage(); await page.setExtraHTTPHeaders({ 'Proxy-Authorization': 'Basic ' + Buffer.from('用户名:密码').toString('base64') });
4. 更新Puppeteer到最新版本
旧版本Puppeteer可能和内置Chromium存在兼容性问题,执行更新命令:
npm install puppeteer@latest
5. 测试其他页面排查访问限制
先尝试加载https://example.com这类静态页面,如果能正常打开,说明Google域名可能存在地区访问限制,可添加参数尝试绕过:
const browser = await puppeteer.launch({ headless: false, args: ["--disable-features=site-per-process"] });
内容的提问来源于stack exchange,提问作者Gwhyyy
相关产品推荐
相关产品推荐

