Як використовувати проксі з SeleniumBase у Python
У цьому посібнику я поясню, як налаштувати проксі з SeleniumBase у Python. Завдяки цьому підходу ваш вебскрапінг стає ефективнішим і надійнішим, даючи змогу обходити типові перешкоди та безперешкодно збирати потрібні дані.
Що таке SeleniumBase?
SeleniumBase — це фреймворк, побудований на основі Selenium WebDriver, що пропонує розширені можливості вебавтоматизації. Він спрощує автоматизацію браузера, тестування та вебскрапінг, надаючи інструменти для керування взаємодією з браузером. Він корисний для створення наскрізних тестових наборів і виконання завдань вебскрапінгу, що передбачають складну взаємодію з браузером, наприклад обробку спливаючих вікон, надсилання форм і завантаження динамічного контенту.
Навіщо використовувати проксі у вебскрапінгу?
Вебсайти часто встановлюють обмеження на кількість запитів, які одна IP-адреса може надіслати за короткий проміжок часу. Сайт може заблокувати IP-адресу, якщо ваш скрипт надсилає забагато запитів. Використання проксі може допомогти уникнути цього так:
- IP Rotation: Періодична зміна IP-адреси, щоб запити виглядали так, ніби вони надходять із різних джерел.
- Geo-targeting: Отримання доступу до контенту, обмеженого в певних регіонах, за допомогою проксі з конкретних локацій.
- Anonymity: Маскуючи свою IP-адресу, щоб вас не позначили як бота.
Найкращі проксі-сервіси для використання з SeleniumBase
Самі лише знання про те, як налаштувати проксі в SeleniumBase, недостатні. Тут я хочу представити кілька найнадійніших сервісів проксі, з акцентом на резидентські проксі. Резидентські проксі дають змогу легко керувати ротацією та є найбезпечнішим типом IP для вебскрапінгу.
- Bright Data — Найбільший провайдер, точне таргетування, інструмент Proxy Manager, від $5.04/ГБ
- Oxylabs — Розгалужена мережа, точне таргетування, персональна підтримка, від $4/GB
- Smartproxy — Великий пул, широке географічне покриття, самообслуговування, від $2,2/ГБ
- Webshare — Можливості налаштування, самообслуговування, доступна ціна, від $4.5/ГБ
- SOAX — Гнучка ротація, точне таргетування, підтримка 24/7, від $2.2/GB
Докладніше тут. Я не пов’язаний із жодним із провайдерів 🙂
Setting Up SeleniumBase
Перш ніж використовувати SeleniumBase, переконайтеся, що на вашому комп'ютері встановлено Python. Виконайте ці кроки, щоб налаштувати SeleniumBase:
Встановіть SeleniumBase через pip:
pip install seleniumbase
Встановіть драйвер веббраузера.
Для Chrome можна встановити ChromeDriver:
seleniumbase install chromedriver
Перевірте встановлення:
Виконайте просту команду, щоб перевірити, чи SeleniumBase встановлено правильно.
sbase verify
Використання проксі в SeleniumBase
Щоб налаштувати проксі в SeleniumBase, потрібно передати дані проксі до сеансу браузера. SeleniumBase дає змогу задавати проксі, змінюючи параметри браузера. Нижче наведено кроки для налаштування проксі різними способами:
Налаштування проксі для одного запиту
Ви можете налаштувати проксі для разового запиту, вказавши проксі-сервер під час налаштування браузера. Ось базовий приклад:
from seleniumbase import BaseCase
class ProxyTest(BaseCase):
def test_with_proxy(self):
# Specify the proxy server
proxy = "http://your_proxy_ip:port"
# Add proxy options
chrome_options = {
"proxy": {
"httpProxy": проксі,
"sslProxy": проксі,
"proxyType": "MANUAL",
}
}
# Open the browser with proxy settings
self.open("http://example.com", chrome_options=chrome_options)
# Verify the page title or other actions
self.assert_title("Приклад домену")
Replace “your_proxy_ip:port” with your proxy server’s IP address and port.
Rotating Proxies
Можливо, для масштабніших проєктів вебскрапінгу вам знадобиться ротація проксі, щоб уникнути виявлення. Ось як можна використати список проксі та перемикатися між ними для кожного запиту:
import random
from seleniumbase import BaseCase
class RotatingProxyTest(BaseCase):
def test_with_rotating_proxies(self):
# List of proxies
proxies = [
"http://proxy1_ip:port",
"http://proxy2_ip:port",
"http://proxy3_ip:port"
]
# Choose a random proxy from the list
proxy = random.choice(proxies)
# Add proxy options
chrome_options = {
"proxy": {
"httpProxy": проксі,
"sslProxy": проксі,
"proxyType": "MANUAL",
}
}
# Open the browser with proxy settings
self.open("http://example.com", chrome_options=chrome_options)
# Perform actions as needed
self.assert_title("Приклад домену")
За такого підходу скрипт вибиратиме інший проксі зі списку для кожного запиту, що допомагає зменшити ризик виявлення.
Using Authentication-Protected Proxies
Якщо ваш проксі вимагає автентифікації, перед його використанням потрібно налаштувати облікові дані. Ось як це можна зробити:
from selenium.webdriver import ChromeOptions
from seleniumbase import BaseCase
class AuthProxyTest(BaseCase):
def test_with_auth_proxy(self):
# Set proxy and credentials
proxy = "proxy_ip:port"
username = "your_username"
password = "your_password"
# Setup Chrome options
chrome_options = ChromeOptions()
chrome_options.add_argument(f' - proxy-server={proxy}')
# Bypass proxy authentication using a Chrome extension
chrome_options.add_extension('proxy_auth_plugin.zip')
# Open browser with options
self.driver = self.get_new_driver(chrome_options=chrome_options)
self.open("http://example.com")
# Check some condition
self.assert_title("Приклад домену")
The above code uses a Chrome extension to handle proxy authentication, which requires creating an extension file (proxy_auth_plugin.zip) with credentials.
Виклики та найкращі практики використання проксі в SeleniumBase
Використання проксі має свої виклики. Нижче наведено кілька порад і стратегій, які допоможуть максимально ефективно використовувати проксі у вебскрапінгу:
- Avoid Free Proxies: Безкоштовні проксі часто ненадійні, повільні й можуть бути вже позначені вебсайтами. Інвестуйте в перевірені платні проксі-сервіси, щоб отримати кращі результати.
- Monitor Proxy Health: Регулярно перевіряйте стан ваших проксі, щоб переконатися, що вони працюють так, як очікується.
- Randomize Request Timing: Додавайте випадкові затримки між запитами замість надсилати їх усі одночасно, щоб зменшити ризик блокування.
- Використовуйте Headless Mode обдумано: Хоча використання headless-режиму може пришвидшити вебскрапінг, воно також може підвищити ймовірність того, що вас позначать як бота. Використовуйте його обережно та поєднуйте з іншими техніками, наприклад підміною user-agent.
- Handle CAPTCHA Challenges: Якщо сайт показує CAPTCHA, може знадобитися інтегрувати сервіс для розв’язання CAPTCHA.
Додаткові техніки вебскрапінгу з проксі
Поєднання використання проксі з іншими техніками може зробити ваші зусилля з вебскрапінгу ефективнішими. Ось кілька просунутих стратегій:
- User-Agent Spoofing: Випадково змінюйте рядок user-agent, щоб імітувати запити з різних браузерів або пристроїв.
- Session Management: Ефективно керуйте cookie та сеансами, щоб не спровокувати антибот-механізми.
- Headless Browser Settings: Використовуйте headless-браузери для вебскрапінгу без відображення графічного інтерфейсу, але змінюйте налаштування відбитка браузера, щоб уникнути виявлення.
Conclusion
Проксі — потужний інструмент для обходу антискрапінгових заходів і ефективного збирання даних. У SeleniumBase налаштування проксі просте, чи то вам потрібен один проксі для тестування, чи система ротації для масштабного вебскрапінгу. Пам’ятайте про найкращі практики та постійно відстежуйте продуктивність ваших проксі. Поєднання проксі з такими техніками, як підміна user-agent і керування сесіями, може мінімізувати перешкоди та допомогти зібрати потрібні дані.

