【问题标题】:Downloading files through puppeteer, need to maintain cookies/state通过puppeteer下载文件,需要维护cookies/state
【发布时间】:2017-11-02 05:19:34
【问题描述】:

我目前正在使用以下代码使用request 包下载文件:

request
    .get({
        url,
        headers: {
            Authorization: "base64"
        }
    })
    .pipe(fs.createWriteStream('test.xlsx'))

当身份验证是一个简单的用户名/密码或根本没有身份验证时,这一切都很好,但是一旦 2 因素身份验证出现,这将是一个真正的麻烦,因为这种方法不会跟踪您的 cookie 或登录状态(或被跟踪)。

那么我如何在 puppeteer 运行时获取缓冲区/数据,然后将其通过管道传输到另一个文件流中(注意,我需要对多个文件递归地执行此操作)。

【问题讨论】:

    标签: node.js chromium headless-browser puppeteer


    【解决方案1】:

    我认为您可以像这样从 puppeteer 构造 cookie 标头:

      cookies = await page.cookies();
      cookie_str = "";
      for(var i = 0; i < cookies.length; i+=1){
            a = cookies[i];
            cookie_str += a.name + "=" + a.value + ";";
      }
    

    然后将request 与 cookie 标头一起使用:

    request.get({
            url: download_link,
            headers: {
                "cookie": cookie_str,
            }
        }).pipe(fs.createWriteStream("ofname"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      • 2012-09-19
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2012-12-31
      相关资源
      最近更新 更多