【问题标题】:How to detect the request come from Puppeteer?如何检测来自 Puppeteer 的请求?
【发布时间】:2020-02-22 08:22:24
【问题描述】:

我想知道是否存在一些标志或标签,网站可以使用它来检测来自 Puppeteer 的请求?

当我基于 Puppeteer 运行我的代码访问目标网站时,我发现该网站似乎知道该请求是由 Puppeteer 发出的。

怎么办?

【问题讨论】:

  • 我认为这可能是因为 Chrome 在“自动测试软件”模式下运行时在请求中设置了一些标头。但是我在 Dev-tools 或 fiddler 中找不到那个“header”~为了测试,我手动运行了相同的 chromium 请求,一切正常,该网站符合我的预期。

标签: node.js puppeteer webautomation


【解决方案1】:

如果您正在运行 puppeteer 并希望将一些信息传递给网站以捕获您的抓取,那么最好的方法是设置自定义用户代理:

const browser = await puppeteer.launch({
    args: ['--user-agent=hhh'],
});
const page = await browser.newPage();

查看here更多信息

Viceversa,如果您拥有一个网站并想知道访问是真实的还是来自机器人(木偶、爬虫或其他任何东西),请参阅this answer 了解其中的一些。 还有this answer

【讨论】:

    【解决方案2】:

    我找到了突破限制的方法。这是一个简单的方法:

    const browser = await puppeteer.launch({headless: false, ignoreDefaultArgs: ["--enable-automation"],});
    

    这会让浏览器不设置navigator.webdriver变量。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-01-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多