【问题标题】:puppeteer bypass cloudflare by enable cookies and Javascriptpuppeteer 通过启用 cookie 和 Javascript 绕过 cloudflare
【发布时间】:2021-01-26 13:26:12
【问题描述】:

(在 nodeJs -> 仅服务器端)。

我正在做一些网页抓取,一些页面受到 cloudflare 反 ddos​​ 页面的保护。我试图绕过这个页面。通过搜索,我发现了很多关于隐身方法或 reCapcha 的文章。但问题是 cloudflare 甚至没有尝试给我验证码,它一直卡在页面上(等待 5 秒),因为它显示为红色(打开 JAVASCRIPT 并重新加载)和(打开饼干并重新加载),由我的 javascript 似乎处于活动状态,因为我的程序在很多网站上运行并且它处理 javascript。

这是我的代码:

//vm = this;
vm.puppeteer.use(vm.StealthPlugin())
vm.puppeteer.use(vm.AdblockerPlugin({
  blockTrackers: true
}))
let browser = await vm.puppeteer.launch({
  headless: true
});
let browserPage = await browser.newPage();
await browserPage.goto(link, {
  waitUntil: 'networkidle2',
  timeout: 40 * 1000
});
await browserPage.waitForTimeout(20 * 1000);
let body = await browserPage.evaluate(() => {
  return document.documentElement.outerHTML;
});

我也尝试删除 StealthPlugin 和 AdblockerPlugin,但 cloodflare 一直告诉我没有 javascript 和 cookie。

谁能帮帮我?

【问题讨论】:

  • 如果你运行这个 headful 会发生什么?控制台中是否有任何与 js 相关的错误?
  • 通过评论 headless: true 我得到完全相同的东西 通过编辑 headless; false 我收到错误 UnhandledPromiseRejectionWarning: 错误: 无法启动浏览器进程!疑难解答,但在我的 google chrome 中打开了一个标签
  • 我清理了我的工作,现在用 headless false 在导航中打开了一个选项卡,没有红色的东西,但是当 cloudflare 在 5 秒后重新加载时,它会自行重新加载,而不是在我想要的网站上
  • 你现在有消息了吗?我面临同样的问题,除了我从未收到“打开 Javascript”消息
  • 我尝试修改标题似乎不起作用。通过与某些人交谈,这似乎很正常,因为 cloudflare 会尝试捕获机器人,因此即使您找到了解决方案,它也有暂时的风险(猫/老鼠游戏)

标签: node.js puppeteer cloudflare


【解决方案1】:

设置您自己的 UserAgent 和 Accept-Language 标头应该可以工作,因为您的无头浏览器需要假装像一个正在浏览的真人。

您可以使用page.setExtraHTTPHeaders()page.setUserAgent() 来执行此操作。

await browserPage.setExtraHTTPHeaders({
 'Accept-Language': 'en'
});
// You can use any UserAgent you want
await browserPage.setUserAgent('Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36');

【讨论】:

  • 请尝试添加代码示例或更详细的步骤,以便同胞可以更清楚地复制您的建议。
  • 那不行,它一直卡在 cloudflare 页面上
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-09-04
  • 2016-11-19
  • 2014-01-22
  • 2017-12-18
  • 1970-01-01
  • 2021-08-05
  • 2022-09-27
相关资源
最近更新 更多