Назад к статьям

Обход защиты от парсинга: методы и инструменты

Привет, друг! Сегодня поговорим о том, как обходить защиту от парсинга. Да, я знаю, звучит как что-то из фильма про хакеров, но на самом деле это просто игра в кошки-мышки между тобой и сайтом. 🐱🐭

Почему сайты защищаются?

Сайты защищаются от парсинга по разным причинам: чтобы не перегружать сервер, защитить контент от копирования, или просто потому что могут. Самые популярные защитные механизмы:

  • Cloudflare — проверяет, что ты настоящий браузер
  • Rate Limiting — ограничивает количество запросов
  • CAPTCHA — заставляет решать головоломки
  • User-Agent проверки — блокирует ботов

Метод 1: Правильные заголовки

Самое простое — сделать так, чтобы твой запрос выглядел как запрос от настоящего браузера:

import requests headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8', 'Accept-Language': 'ru-RU,ru;q=0.9,en-US;q=0.8,en;q=0.7', 'Accept-Encoding': 'gzip, deflate, br', 'Connection': 'keep-alive', 'Upgrade-Insecure-Requests': '1', 'Sec-Fetch-Dest': 'document', 'Sec-Fetch-Mode': 'navigate', 'Sec-Fetch-Site': 'none', 'Cache-Control': 'max-age=0' } response = requests.get('https://example.com', headers=headers) print(response.text)

Метод 2: Использование прокси

Если тебя заблокировали по IP, используй прокси. Это как менять маски на карнавале:

import requests import random # Список прокси (пример) proxies_list = [ {'http': 'http://proxy1.com:8080', 'https': 'http://proxy1.com:8080'}, {'http': 'http://proxy2.com:8080', 'https': 'http://proxy2.com:8080'}, ] def get_with_proxy(url): proxy = random.choice(proxies_list) try: response = requests.get(url, proxies=proxy, timeout=10) return response except: # Если прокси не работает, пробуем другой return get_with_proxy(url) response = get_with_proxy('https://example.com')

Метод 3: Задержки между запросами

Не будь слишком навязчивым! Добавь случайные задержки, чтобы выглядеть как человек:

import time import random def human_like_delay(): """Задержка, которая имитирует поведение человека""" # Случайная задержка от 2 до 5 секунд delay = random.uniform(2, 5) time.sleep(delay) # Использование for url in urls: response = requests.get(url) process_data(response) human_like_delay() # Не торопимся!

Метод 4: Обход Cloudflare

Cloudflare — это как охранник на входе в клуб. Нужно выглядеть прилично! Используем cloudscraper:

# pip install cloudscraper import cloudscraper # cloudscraper автоматически обходит Cloudflare scraper = cloudscraper.create_scraper() response = scraper.get('https://example.com') print(response.text) # Ура, прошли!

Метод 5: Selenium с Stealth

Если нужен настоящий браузер, но без "отпечатков" бота, используй selenium-stealth:

# pip install selenium-stealth from selenium import webdriver from selenium_stealth import stealth options = webdriver.ChromeOptions() options.add_argument("start-maximized") options.add_experimental_option("excludeSwitches", ["enable-automation"]) options.add_experimental_option('useAutomationExtension', False) driver = webdriver.Chrome(options=options) # Делаем браузер "невидимым" для детекторов stealth(driver, languages=["ru-RU", "ru"], vendor="Google Inc.", platform="Win32", webgl_vendor="Intel Inc.", renderer="Intel Iris OpenGL Engine", fix_hairline=True, ) driver.get("https://example.com")

Метод 6: Ротация User-Agent

Меняй User-Agent как перчатки, чтобы не выглядеть подозрительно:

import random user_agents = [ 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36', 'Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36', ] def get_random_headers(): return { 'User-Agent': random.choice(user_agents), 'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', } response = requests.get(url, headers=get_random_headers())

Полезные библиотеки

  • cloudscraper — для обхода Cloudflare
  • selenium-stealth — скрывает Selenium от детекторов
  • fake-useragent — генерирует случайные User-Agent
  • requests-html — альтернатива requests с поддержкой JS

Итоги

Обход защиты — это не взлом, а просто умение "говорить на языке" сайта. Главное — быть вежливым, не делать слишком много запросов и выглядеть как обычный пользователь. Удачи! 🎭