【发布时间】:2018-11-27 06:52:07
【问题描述】:
我想通过运行在 Node.js 中的 puppeteer 通过 Google Docs Viewer 预览文档。
该 URL 在浏览器中运行良好:
https://docs.google.com/viewer?url=https%3A%2F%2Fdocs.npmjs.com%2Fimages%2Fnpm.svg&embedded=true
但是在 puppeteer 中抛出错误:
(async () => {
const browser = await puppeteer.launch();
const page = await browser.newPage();
page.on('response', res => {
res.text().then(text => {
console.log('response:', {
url: res.url(),
status: res.status(),
res_headers: res.headers(),
req_headers: res.request().headers(),
text: text
});
});
});
await page.setBypassCSP(true);
await page.goto(url, {waitUntil: 'networkidle0'});
let content = await page.content();
await browser.close();
return content;
})();
打印事件:
控制台:加载资源失败:服务器响应状态为401()
网址:https://content.googleapis.com/drive/v2internal/about?fields=importFormats,kind&key=AIzaSyDVQw45DwoYh632gvsP5vPDqEKvb-Ywnb8
text: {"error": {"errors": [{"domain": "global", "reason": "required","message": "需要登录"," locationType": "header","location": "Authorization"}],"code": 401,"message": "需要登录"}}
控制台:'加载资源失败:服务器响应状态为 403 ()'
网址:'https://content.googleapis.com/drive/v2internal/apps?fields=items(authorized,chromeExtensionIds,createInFolderTemplate,createUrl,icons(iconUrl,size,category),id,installed,kind,longDescription,name,objectType,openUrlTemplate,origins,primaryFileExtensions,primaryMimeTypes,productId,productUrl,rankingInfo,removable,requiresAuthorizationBeforeOpenWith,secondaryFileExtensions,secondaryMimeTypes,shortDescription,supportsCreate,supportsImport,supportsMultiOpen,supportsTeamDrives,type,useByDefault),kind&languageCode=en-US&key=AIzaSyDVQw45DwoYh632gvsP5vPDqEKvb-Ywnb8',
文本: {"error": {"errors": [{"domain": "global","reason": "forbidden","message": "Forbidden"}], "code": 403,"message": "Forbidden"}},
当我比较 puppeter 和浏览器之间的 cookie 和标头时,标头“origin”、“x-origin”、“x-referrer”是相同的,但“x-chrome-connected”和“x-client” -日期”丢失。
cookie“NID”存在。
【问题讨论】:
标签: puppeteer google-document-viewer