Способы скопировать защищённый текст с сайта

Как скопировать некопируемый текст с сайта

Содержание статьи

Как скопировать некопируемый текст с сайта

Многие сайты блокируют выделение и копирование текста через JavaScript или CSS-свойства вроде user-select: none. Однако обойти такие ограничения можно без сторонних расширений или сложных инструментов. Достаточно знать несколько технических приёмов, которые работают в большинстве браузеров.

Первый способ – отключение JavaScript. В Chrome и Edge это делается через Настройки → Конфиденциальность и безопасность → Настройки сайта → JavaScript. После отключения скриптов защита от копирования перестаёт работать. В Firefox аналогичная настройка доступна через about:config (параметр javascript.enabled). Минус метода: часть функционала сайта может сломаться.

Второй вариант – использование инструментов разработчика. Нажмите F12 (или Ctrl+Shift+I), перейдите во вкладку Elements и найдите нужный текст в DOM-дереве. Щёлкните правой кнопкой по элементу и выберите Copy → Copy outerHTML. Текст будет скопирован вместе с HTML-тегами, которые можно удалить в любом текстовом редакторе. Альтернатива: выделите текст в коде и нажмите Ctrl+C.

Третий метод – печать страницы в PDF. В Chrome нажмите Ctrl+P, выберите принтер Сохранить как PDF и снимите галочку с пункта Фоновые изображения. После сохранения откройте файл в любом PDF-ридере и скопируйте текст. Работает даже с сайтами, где защита реализована через наложение прозрачных слоёв.

Если текст скрыт за изображениями или встроен в SVG, поможет OCR. Сохраните страницу через Ctrl+S (формат Веб-страница, HTML) или сделайте скриншот. Затем загрузите файл в Google Lens, ABBYY FineReader или бесплатный Tesseract.js. Точность распознавания достигает 95% для латиницы и кириллицы.

Для автоматизации используйте Python с библиотекой selenium. Пример кода:

from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://example.com")
element = driver.find_element("xpath", "//p[@class='protected-text']")
print(element.text)

Скрипт обходит JavaScript-защиту и извлекает текст напрямую из DOM. Требует установки ChromeDriver и базовых знаний Python.

Как обойти запрет на выделение текста через CSS-свойства

Как обойти запрет на выделение текста через CSS-свойства

Запрет на выделение текста чаще всего реализуется через CSS-свойства user-select: none, -webkit-user-select: none, -moz-user-select: none и -ms-user-select: none. Эти свойства блокируют стандартное поведение браузера, но их можно обойти несколькими способами. Первый – временное отключение стилей через инструменты разработчика (F12 → Elements → правый клик на элемент → «Break on» → «Attribute modifications»). Второй – использование JavaScript-консоли для принудительного изменения свойства: document.querySelectorAll('*').forEach(el => el.style.userSelect = 'text'). Третий – расширения браузера, такие как «Absolute Enable Right Click & Copy» для Chrome, которые автоматически переопределяют ограничения.

Если сайт использует вложенные элементы с разными уровнями защиты, эффективнее всего анализировать DOM-дерево. В таблице ниже приведены ключевые селекторы и методы их обхода:

CSS-селектор Метод обхода Пример кода
[style*="user-select: none"] Удаление inline-стиля через консоль document.querySelectorAll('[style*="user-select: none"]').forEach(el => el.style.userSelect = 'auto')
.no-select Переопределение класса в стилях document.styleSheets[0].insertRule('.no-select { user-select: text !important; }', 0)
body с user-select: none Добавление исключения для дочерних элементов document.body.style.userSelect = 'auto'; document.body.querySelectorAll('*').forEach(el => el.style.userSelect = 'text')

Использование инструментов разработчика для извлечения контента

Использование инструментов разработчика для извлечения контента

Большинство современных браузеров (Chrome, Firefox, Edge) оснащены встроенными инструментами разработчика, доступными по клавише F12 или комбинации Ctrl+Shift+I. Откройте вкладку *Elements* (или *Inspector*), чтобы просмотреть DOM-дерево страницы. Найдите нужный элемент с текстом, щёлкнув правой кнопкой мыши на нём и выбрав *Inspect*. В панели отобразится HTML-код, где текст хранится внутри тегов (например, <p>, <div>, <span>). Выделите содержимое мышью или скопируйте его через контекстное меню.

Если текст генерируется динамически (например, через JavaScript), перейдите на вкладку *Network* и обновите страницу. Отфильтруйте запросы по типу *XHR* или *Fetch* – здесь отображаются данные, загружаемые после рендеринга. Найдите запрос, возвращающий нужный контент (обычно в формате JSON), и скопируйте ответ через контекстное меню *Copy → Copy response*. Для сложных случаев используйте *Console*: введите команду `document.querySelector(‘селектор’).textContent` или `document.body.innerText`, чтобы извлечь текст без разметки.

В Firefox полезна функция *Scratchpad* (Shift+F4), позволяющая выполнять JavaScript-код в контексте страницы. В Chrome аналогично работает *Snippets* (вкладка *Sources*). Пример скрипта для массового извлечения текста из всех абзацев: `Array.from(document.querySelectorAll(‘p’)).map(el => el.textContent).join(‘

‘)`. Сохраните результат в переменную и экспортируйте через `console.log()`. Для сайтов с ленивой загрузкой прокрутите страницу до конца перед копированием, чтобы все элементы загрузились в DOM.

Избегайте копирования текста из теневого DOM (Shadow DOM) без дополнительных инструментов. В Chrome используйте команду `getEventListeners($0)` в консоли, чтобы проверить наличие обработчиков событий на элементе. Если текст защищён от выделения через CSS (`user-select: none`), временно удалите это свойство в панели *Styles* или добавьте `* { user-select: text !important; }` в *Console*. Для сайтов с iframe откройте инструменты разработчика для конкретного фрейма через контекстное меню *Inspect frame*.

Сохранение страницы через браузер и извлечение текста из HTML-файла

Большинство браузеров позволяют сохранить веб-страницу целиком через комбинацию Ctrl+S (Windows/Linux) или Cmd+S (macOS). При выборе формата «Веб-страница, полностью» создаётся папка с HTML-файлом и отдельными ресурсами (CSS, JS, изображения). Для извлечения текста достаточно открыть сохранённый HTML-файл в любом текстовом редакторе – от Notepad++ до VS Code – и удалить ненужные теги вручную или с помощью регулярных выражений.

Если текст защищён JavaScript-скриптами (например, динамически загружается или скрывается), стандартное сохранение может не сработать. В таких случаях используйте инструменты разработчика браузера (F12 или Ctrl+Shift+I): перейдите на вкладку Elements, найдите нужный блок в DOM-дереве, щёлкните правой кнопкой и выберите Copy → Copy outerHTML. Вставьте содержимое в файл и обработайте парсером, например, BeautifulSoup (Python) или Cheerio (JavaScript).

  • Chrome/Edge: Сохраняет страницу с расширением .html и папкой _files. Текст извлекается без потерь, если не используется обфускация.
  • Firefox: Предлагает формат «Веб-страница, только HTML» – компактный вариант без внешних ресурсов, но с полным текстом.
  • Safari: Сохраняет страницу как .webarchive – бинарный формат, требующий конвертации через сторонние утилиты (например, textutil в macOS).

Для автоматизации извлечения текста из HTML используйте команды терминала. В Linux/macOS выполните:

  1. Установите lynx или w3m:
    sudo apt install lynx  # Debian/Ubuntu
    brew install lynx      # macOS
  2. Извлеките текст из файла:
    lynx -dump -nolist файл.html > текст.txt
  3. Для Windows используйте PowerShell с модулем HTMLAgilityPack или онлайн-сервисы вроде TextFixer.

Если текст разбит на фрагменты или скрыт за CSS-свойствами (например, visibility: hidden или opacity: 0), откройте HTML-файл в браузере, отключите стили через инструменты разработчика (Styles → Disable all styles) и скопируйте видимый текст. Альтернатива – использовать расширения вроде Web Scraper (Chrome) для выборочного парсинга элементов по селекторам.

Применение расширений для копирования защищённого контента

Применение расширений для копирования защищённого контента

Расширения браузера – один из самых эффективных инструментов для обхода ограничений на копирование текста. *Absolute Enable Right Click & Copy* (Chrome, Firefox) отключает скрипты, блокирующие контекстное меню, и восстанавливает стандартное поведение правой кнопки мыши. *Allow Copy* (Chrome) работает аналогично, но дополнительно игнорирует CSS-свойства `user-select: none`. Для сайтов с динамическим контентом подойдёт *Copyfish* (Chrome, Firefox, Edge), который распознаёт текст даже в изображениях и PDF через OCR-технологию Tesseract.js. Установив расширение, достаточно выделить область экрана – текст извлечётся автоматически. Важно: некоторые расширения требуют ручной активации на каждой странице, а *Copyfish* может потребовать настройки языка для корректного распознавания кириллицы.

*Absolute Enable Right Click & Copy* и *Allow Copy* бесполезны против серверных ограничений, например, когда текст загружается через AJAX или рендерится на стороне клиента с помощью React/Vue. В таких случаях поможет *Web Scraper* (Chrome) – расширение для парсинга данных, позволяющее извлекать текст из DOM-элементов по CSS-селекторам. Для работы с ним нужно открыть инструменты разработчика (F12), найти нужный элемент, скопировать его селектор (например, `#article-body > p`) и вставить в интерфейс расширения. Альтернатива – *SingleFile* (Chrome, Firefox), сохраняющий всю страницу в один HTML-файл с исходным кодом, где текст доступен для копирования. Оба метода требуют минимальных технических навыков, но эффективны против большинства клиентских защит.

Скриншоты текста и распознавание через OCR-программы

Скриншоты текста и распознавание через OCR-программы

Если текст на сайте заблокирован для копирования через JavaScript или CSS-свойства (например, user-select: none), скриншот и последующее распознавание через OCR – рабочий метод. Современные OCR-движки, такие как Tesseract (от Google), ABBYY FineReader или Adobe Acrobat, обрабатывают изображения с точностью до 95–98% при условии качественного исходника. Для лучшего результата делайте скриншоты в разрешении не ниже 300 DPI: используйте комбинации клавиш Win + Shift + S (Windows) или Cmd + Shift + 4 (macOS) для выделения области экрана.

Перед распознаванием обработайте изображение: обрежьте лишние поля, увеличьте контрастность (инструменты вроде GIMP или онлайн-сервисы типа remove.bg помогут убрать фон), а для текста на цветном фоне примените бинаризацию (пороговое преобразование). Tesseract лучше работает с чёрно-белыми изображениями, поэтому конвертируйте скриншот в монохромный формат. Если текст содержит нестандартные шрифты или декоративные элементы, попробуйте предварительно распознать его в ABBYY FineReader – он точнее справляется с такими случаями.

Для автоматизации процесса используйте скрипты на Python с библиотекой pytesseract. Пример кода для распознавания текста из скриншота:

import pytesseract
from PIL import Image
pytesseract.pytesseract.tesseract_cmd = r'C:\Program Files\Tesseract-OCR\tesseract.exe'
text = pytesseract.image_to_string(Image.open('screenshot.png'), lang='rus+eng')
print(text)

Установите языковые пакеты для Tesseract через tesseract-ocr-<lang> (например, tesseract-ocr-rus для русского). Если текст содержит таблицы, используйте параметр --psm 6 (режим единого блока текста) или специализированные инструменты вроде Tabula для извлечения структурированных данных.

Онлайн-сервисы OCR – альтернатива десктопным программам. OnlineOCR.net поддерживает 46 языков и распознаёт до 15 страниц в час бесплатно, но требует регистрации для больших объёмов. NewOCR не ограничивает количество запросов, но качество распознавания уступает ABBYY. Для конфиденциальных данных избегайте облачных сервисов: используйте локальные решения или самописные скрипты на базе Tesseract.

При работе с многостраничными документами сохраняйте скриншоты в PDF с помощью инструментов вроде CutePDF или встроенных средств браузера (Ctrl + P → «Сохранить как PDF»). Затем распознавайте весь файл целиком через Adobe Acrobat Pro или ABBYY FineReader – они корректно обрабатывают последовательность страниц и сохраняют форматирование. Для массовой обработки используйте командную строку Tesseract: tesseract input.pdf output -l rus+eng pdf создаст поисковый PDF с распознанным текстом.

Ошибки распознавания чаще возникают с редкими шрифтами, мелким кеглем (менее 10pt) или текстом на градиентном фоне. В таких случаях вручную исправьте результат в текстовом редакторе или используйте двухуровневую проверку: сначала распознайте текст через Tesseract, затем пропустите его через ABBYY для коррекции ошибок. Для технических текстов с формулами или символами подойдёт Mathpix – он специализируется на распознавании математических выражений и поддерживает LaTeX-синтаксис.

Запрос исходного кода страницы через API или прокси-серверы

Запрос исходного кода страницы через API или прокси-серверы

Многие сайты блокируют прямой доступ к контенту через стандартные методы копирования, но обходные пути существуют. Один из них – использование публичных API или прокси-серверов, которые возвращают исходный код страницы без ограничений. Например, сервисы вроде ScraperAPI, Zenscrape или Apify предоставляют API для извлечения HTML-кода с поддержкой ротации IP и эмуляции браузеров. Эти инструменты работают через HTTP-запросы, где параметры настраиваются для обхода блокировок.

Для работы с API потребуется ключ доступа, который выдаётся после регистрации. Пример запроса через ScraperAPI:

  • URL: http://api.scraperapi.com/?api_key=YOUR_KEY&url=TARGET_URL
  • Метод: GET
  • Дополнительные параметры: render=true (для JavaScript-рендеринга), country_code=us (для смены геолокации).

Ответ вернёт полный HTML-код страницы, включая защищённый текст, если он не загружается динамически через AJAX.

Прокси-сервисы – альтернатива API, когда требуется больше контроля над запросами. Платформы вроде Luminati, Smartproxy или Oxylabs предлагают пулы резидентных IP, которые снижают риск блокировки. Настройка прокси в коде на Python с использованием библиотеки requests:

  1. Установите прокси-сервер: proxies = {"http": "http://user:pass@proxy_ip:port", "https": "http://user:pass@proxy_ip:port"}.
  2. Отправьте запрос: requests.get("TARGET_URL", proxies=proxies, headers={"User-Agent": "Mozilla/5.0"}).
  3. Проверьте статус ответа: код 200 означает успешное получение данных.

При выборе прокси обращайте внимание на тип IP: резидентные (из домашних сетей) реже блокируются, чем датацентровые. Сервисы вроде GeoSurf предоставляют IP из конкретных стран, что полезно для обхода региональных ограничений. Средняя стоимость резидентных прокси – от $10 за 1 ГБ трафика, датацентровых – от $2 за 1 ГБ.

Для динамического контента, загружаемого через JavaScript, подойдут headless-браузеры с прокси. Инструменты Puppeteer или Playwright позволяют эмулировать действия пользователя и извлекать HTML после выполнения скриптов. Пример настройки Puppeteer с прокси:

const puppeteer = require('puppeteer');
(async () => {
const browser = await puppeteer.launch({
args: ['--proxy-server=proxy_ip:port']
});
const page = await browser.newPage();
await page.authenticate({username: 'user', password: 'pass'});
await page.goto('TARGET_URL');
const html = await page.content();
console.log(html);
await browser.close();
})();

Некоторые сайты проверяют заголовки запросов, поэтому важно эмулировать реальный браузер. Добавьте в запрос заголовки:

  • User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
  • Accept-Language: ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7
  • Referer: https://www.google.com/

Эти меры снижают вероятность обнаружения ботами.

Если сайт использует Cloudflare или аналогичные системы защиты, стандартные прокси и API могут не сработать. В таких случаях подойдут специализированные решения вроде ScrapingBee или ScraperBox, которые обходят защиту с помощью предварительно настроенных браузеров. Стоимость таких сервисов начинается от $29 в месяц за 10 000 запросов. Для тестирования используйте бесплатные лимиты (например, ScraperAPI даёт 1000 бесплатных запросов в месяц).

Вопрос-ответ:

Ссылка на основную публикацию