0%

破解cloudflare拦截神器_puppeteer

破解cloudflare拦截神器_puppeteer

安装番外:安装node.js环境

安装nvm管理器

  • 第1步:mac 安装:
brew install nvm
  • 第2_1步:命令安装:
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  • 第2_2步:国内安装
$ curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash

$ wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.1/install.sh | bash
  • 第3步:添加环境
# 1、这是本地不存在配置文件的时候提示需要添加的配置
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

# 2、这是本地存在配置文件的时候提示需要添加的配置(推荐)
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion
  • 第4步:加载环境:
source ~/.zshrc
  • 第5步:测试安装是否成功
$ nvm -v

$ nvm use system
  • 第6步:nvm相关命令
nvm install stable
nvm install <version> # 安装指定版本 node
nvm uninstall <version> # 删除指定版本 node

nvm use <version> # 切换使用指定的版本 node
nvm alias default <version> # 永久版本 - 所有窗口生效指定版本

nvm ls # 列出所有安装的版本
nvm ls-remote # 列出所有远程服务器的版本(官方 node version list)
nvm current # 显示当前的版本
nvm alias <name> <version> # 给不同的版本号添加别名
nvm unalias <name> # 删除已定义的别名

nvm reinstall-packages <version> # 在当前版本 node 环境下,重新全局安装指定版本号的 npm 包

第一步:安装puppeteer

npm i puppeteer

第二步: 安装插件 puppeteer-extra、puppeteer-extra-plugin-stealth

npm install puppeteer-extra puppeteer-extra-plugin-stealth express

第三步:使用nodejs获取数据:

const puppeteer = require('puppeteer-extra')
const StealthPlugin = require('puppeteer-extra-plugin-stealth')
puppeteer.use(StealthPlugin())
const {executablePath} = require('puppeteer')

puppeteer.launch({ headless: false, executablePath: executablePath() }).then(async browser => {
const page = await browser.newPage()
await page.goto('https://xxx.com')

// 使用 Promise 来等待
await new Promise(resolve => setTimeout(resolve, 2000)) // 等待 2 秒
// 获取页面的文本内容
const pageContent = await page.evaluate(() => {
return document.body.innerText; // 获取页面的所有文本
});

// 打印页面文本内容
console.log(pageContent);
await page.screenshot({ path: 'cointracker_home.png', fullPage: true })
await browser.close()
})

第四步:当然你也可以把他写成接口

.....