1. Вступ до обмежень на веб-скрейпінг
Сьогодні ми розберемо досить пікантну тему — як обходити обмеження на веб-скрейпінг. Кожен програміст, зацікавлений у скрейпінгу, рано чи пізно стикається з обмеженнями та блокуваннями зі сторони веб-сайтів. Час розібратися, як нам, хорошим хлопцям, не попасти в пастки захисних систем сайтів і продовжувати збирати дані, не викликаючи при цьому гнів серверів.
Коли ви надсилаєте запити до веб-сайтів, ви, по суті, втручаєтеся в їхній особистий простір з метою забрати дані, які вони так старанно оберігають. Але чому ж сайти ставлять нам палиці в колеса? Причини можуть бути різні: захист авторських прав, забезпечення надійності та продуктивності серверів, запобігання несанкціонованому використанню даних. Якщо ви використовуєте занадто багато ресурсів сайту або порушуєте його правила, вас можуть... забанити. І ніхто не любить бани, окрім, мабуть, адміністраторів серверів.
2. Налаштування user-agent
Що таке user-agent?
User-agent — це ідентифікаційний рядок, який ваш браузер надсилає разом із кожним HTTP-запитом. Вона інформує сервер про те, який браузер і операційна система у вас встановлені. І знаєте що? Цей user-agent можна легко підробити, щоб сервер подумав, що ви заходите з, скажімо, новітнього iPhone, а не від імені Python-скрипта, який ви запустили на перерві на каву.
Приклади зміни user-agent
У бібліотеці requests змінити user-agent досить просто. Ось невеликий приклад:
import requests
url = "https://example.com"
# Налаштуємо user-agent як браузер Chrome
headers = {
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36"
}
response = requests.get(url, headers=headers)
print(response.content)
Підробляти user-agent — це трохи як приходити на корпоративну вечірку в костюмі панди. Начебто ви, але виглядаєте інакше. Сервери, побачивши "браузер" замість "скрипта", можуть вас пропустити на вечірку.
3. Робота з cookies
Що таке cookies?
Cookies — це невеликі шматочки даних, які веб-сайти зберігають у вашому браузері. Вони можуть містити різні дані, від налаштувань сайту до ідентифікаторів сесії, які дозволяють вам залишатися в системі після логіну.
Використання cookies у запитах
Працювати з cookies у requests також нескладно. Зазвичай ви отримуєте cookies при першому запиті до сайту, а потім використовуєте їх у наступних:
# Створюємо сесію для збереження cookies
session = requests.Session()
# Виконуємо перший запит, захоплюючи cookies
session.get(url)
# Використовуємо ті ж cookies у наступних запитах
response = session.get(url)
print(response.content)
Сесії — це як громадський транспорт для cookies. Вони їздять з вами від сайту до сайту, зберігаючи ваші налаштування.
4. Методи уникнення блокувань
Практичні поради щодо зменшення ймовірності блокування
Ось кілька хитрощів:
- Затримки між запитами: додавайте випадкові затримки між запитами, щоб не запідозрили вашого робота.
- Зміна IP-адрес: використовуйте VPN або проксі для зміни IP-адрес, щоб вас не блокували за цим параметром.
- Ротація
user-agent: змінюйтеuser-agentу кожному запиті, щоб виглядати як різні браузери.
Приклади застосування затримок і зміни IP-адрес
Використовуйте бібліотеку time для додавання затримок:
import time
import random
for _ in range(10):
response = session.get(url)
# Випадкова затримка
time.sleep(random.uniform(1, 3))
Для зміни IP-адреси в requests можна використовувати проксі:
proxies = {
"http": "http://10.10.10.10:8000",
"https": "https://10.10.10.10:8000",
}
response = requests.get(url, proxies=proxies)
5. Додаткові методи обману
Щоб скрипти не виглядали підозріло, використовуйте headers і cookies, щоб імітувати справжнього користувача. Зрозумійте: реалізм — це ваша секретна зброя у війні з банами.
На цьому наш сьогоднішній урок підходить до кінця. Застосування цих технік допоможе вам залишатися "невидимими" на радарі веб-сайтів і продовжувати збирати цінні дані без блокувань. Пам'ятайте, як у будь-якого супергероя, у вас теж є відповідальність — використовуйте ці техніки етично і в рамках закону. Вірте у свої сили, і нехай ваш код буде елегантним, як танець кота на клавіатурі!
ПЕРЕЙДІТЬ В ПОВНУ ВЕРСІЮ