Как получить исходный HTML-код веб-страницы

Я использовал curl для очистки html-кода с определенного веб-сайта. затем они изменили настройки своего сервера, и curl больше не может получать содержимое страницы с кодом ошибки 1020, тогда я изменил свой скрипт на использование elinks.

но снова они теперь используют cloudflare, а elinks больше не работает (только на этом конкретном веб-сайте). и он дает тот же код ошибки 1020.

есть ли какая-либо командная строка или возможность использовать другие браузеры (firefox, chrome, google-chrome ...) и получить страницу html в терминале?

2 ответа

Если вы умеете писать сценарии для Node.js, вот небольшой пример с использованием библиотеки кукловода . Он регистрирует исходный код страницы после загрузки страницы в безголовом (невидимом) 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(); }

Предлагаю вашему вниманию код и библиотеки обхода защиты Cloudflare:

Библиотеки:

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

узелджс:

      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)
Другие вопросы по тегам