NodeJS puppeteer在本地工作,但是当从aws ec2 ubuntu服务器运行时会导致cloudflare保护

kadbb459  于 2023-03-12  发布在  Node.js
关注(0)|答案(2)|浏览(109)

我有一个用puppeteer在nodejs里写的脚本,它在本地无头模式下运行得很好。然而,当我把它部署到aws ec2(ubuntu服务器)上时,它就停止工作了。试了几次之后,我退出了“page.content()”,发现有一个cloudflare保护显示。我该如何绕过它?为什么当我在本地运行脚本时,它没有检测到puppeteer?

wgx48brx

wgx48brx1#

因为cloudflare阻止了数据中心的流量。我想你可以使用一个住宅代理。

vc6uscn9

vc6uscn92#

如果用户pguardiario是正确的,并且流量被cloudflare阻塞,则解决该问题的方法之一是绕过保护。
为此,安装库数据,并使用下面的代码返回页面的ashml。
库:

npm i puppeteer-extra puppeteer-extra-plugin-stealth puppeteer

节点j:

const puppeteer = require('puppeteer-extra')
const pluginStealth = require('puppeteer-extra-plugin-stealth')
const { executablePath } = require('puppeteer')

const link = 'https://www.g2.com/'

const getHtmlThoughCloudflare = async (url) => {
  puppeteer.use(pluginStealth())
  const result = await puppeteer
    .launch({ headless: true })
    .then(async (browser) => {
      const page = await browser.newPage()
      await page.goto(url)
      const html = await page.content()
      await browser.close()
      return html
    })

  console.log(` HTML: ${result}`)
  return result // html
}

getHtmlThoughCloudflare(link)

相关问题