【问题标题】:How to intercept a download request on puppeteer and read the file being intercepted如何在 puppeteer 上拦截下载请求并读取被拦截的文件
【发布时间】:2019-08-16 21:48:25
【问题描述】:

我正在使用 puppeteer 进行网络抓取,我需要设置一个请求拦截来读取从浏览器下载的文件而不实际下载它,因为下载读取然后删除它需要大量资源。

我已经识别了请求,但找不到读取它的方法

await pages[0].setRequestInterception(true);
  pages[0].on('request', request => {
    if (request.resourceType() === 'font' || request.resourceType() === 'stylesheet' || request.resourceType() === 'image') {
      request.abort();
    } else {
      request.continue();
    }
 });

【问题讨论】:

    标签: javascript node.js puppeteer


    【解决方案1】:

    我宁愿使用response事件,因为请求拦截还没有响应。

    pages[0].on('response', async response => {
        if (response.request() /*Your condition check*/) {
          var buffer = await response.buffer(); /*You can get the buffer*/
          var content = await response.text(); /*You can get the content as text*/
        }
    });
    

    【讨论】:

    • 您在代码中错过了async,无法在异步回调中等待
    • 是否可以读取文件但阻止它实际下载?
    • 没有。您可以拦截请求(就像您现在所做的那样),然后手动获取该 URL。
    猜你喜欢
    • 2022-01-22
    • 1970-01-01
    • 1970-01-01
    • 2019-12-31
    • 1970-01-01
    • 2015-06-25
    • 1970-01-01
    • 2018-05-04
    • 2010-11-21
    相关资源
    最近更新 更多