我正在使用curl从某个网站上 * 刮取 * html代码。然后他们改变了他们的服务器设置,curl不再可以获得页面内容,给出错误代码1020,然后我改变了我的脚本使用elinks。但他们现在再次使用cloudflare和elinks不再工作(仅在这个特定的网站)。并且它给出相同的错误代码1020。是否有任何命令行或选项使用其他浏览器(火狐, chrome ,谷歌 chrome ...),并获得页面的html在一个终端?
igetnqfo1#
如果你能为Node.js编写脚本,这里有一个使用puppeteer库的小例子。它在页面加载到无头(不可见)Chrome后记录页面源代码,并通过页面脚本生成动态内容:
import puppeteer from 'puppeteer'; const browser = await puppeteer.launch({ headless: false, defaultViewport: null }); try { const [page] = await browser.pages(); await page.goto('https://example.org/'); console.log(await page.content()); } catch (err) { console.error(err); } finally { await browser.close(); }
字符串
kmbjn2e32#
我提请您注意绕过保护cloudflare的代码和库:库:
npm i puppeteer-extra puppeteer-extra-plugin-stealth puppeteer
字符串nodejs:
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)
型
2条答案
按热度按时间igetnqfo1#
如果你能为Node.js编写脚本,这里有一个使用puppeteer库的小例子。它在页面加载到无头(不可见)Chrome后记录页面源代码,并通过页面脚本生成动态内容:
字符串
kmbjn2e32#
我提请您注意绕过保护cloudflare的代码和库:
库:
字符串
nodejs:
型