【问题标题】:How to make puppeteer do a javascript function如何让 puppeteer 做一个 javascript 函数
【发布时间】:2022-01-21 00:57:46
【问题描述】:

所以我试图让 puppeteer 午餐成为一个页面,然后将一个令牌放入本地存储中。 .setItem 不工作它只是粉碎了我的铬。

所以有一个页面叫不和谐 如果您有用户令牌,则可以使用脚本登录页面

所以我发现有人制作了一个可以在控制台中通过的脚本 然后当代码显示“token here”时,您通过了您的令牌,然后一切都发生了

    let token = "your token";

function login(token) {
    setInterval(() => {
      document.body.appendChild(document.createElement `iframe`).contentWindow.localStorage.token = `"${token}"`
    }, 50);
    setTimeout(() => {
      location.reload();
    }, 2500);
  }

login(token);

这是代码。

所以我的想法是让 puppeteer 运行这段代码,然后在刷新后登录页面

有什么选择吗? 如果我没有选择另一种解决方案, 也许让 puppeteer 在控制台中输入整个代码。

【问题讨论】:

    标签: javascript node.js automation puppeteer


    【解决方案1】:

    如果你想用 Puppeteer 在浏览器上下文中执行 JavaScript 代码,你需要一个 evaluate 方法。供参考:https://github.com/puppeteer/puppeteer/blob/v10.4.0/docs/api.md#pageevaluatepagefunction-args 或 Google 以获取类似且更用户友好的示例 - 网络和 SO 上有很多。

    基本上,要在浏览器上下文中执行任何 JS 代码,您可以将代码放在 evaluate 方法中,它应该如下所示:

    await page.evaluate(() => new Promise((resolve) => {
       // your browser JS code goes here
    }
    

    至于 cookie 部分,即使在重新加载后它们也应该仍然存在(尚未测试,但请查看此内容以供参考:Cookies gone after reload Puppeteer => page.setCookie(...cookies))。

    此外,可能不相关,但请注意一切在法律上都没有问题,因为许多网站不赞成机器人和类似机器人的行为,并且违反了他们的服务条款。

    【讨论】:

      猜你喜欢
      • 2020-07-12
      • 2016-01-17
      • 2018-05-16
      • 1970-01-01
      • 2017-04-10
      • 2014-03-11
      • 2017-05-20
      • 1970-01-01
      • 2018-12-25
      相关资源
      最近更新 更多