Понимание работы прокси-серверов в автоматизации веб-приложений
Прокси-серверы выступают в роли тайных агентов интернета, маскируя ваш IP-адрес и позволяя незаметно перемещаться по цифровым рубежам. В контексте веб-автоматизации — где Selenium и Puppeteer кружатся в театре браузера — прокси незаменимы для обхода ограничений скорости, географических ограничений и слежки. Бесплатные прокси, хотя и капризны и недолговечны, могут быть достаточны для несложных, некритичных сценариев сбора данных или тестирования.
Типы прокси и их характеристики
| Тип прокси | Уровень анонимности | Поддерживаемые протоколы | Типичный сценарий использования | Надежность |
|---|---|---|---|---|
| HTTP | Низкий или средний | HTTP, HTTPS | Простой веб-скрейпинг | Низкий |
| 1ТП1Т/5 | Высокий | 1ТП1Т, 1ТП2Т | Сложные протоколы, HTTPS | Середина |
| Прозрачный | Нет (раскрывает IP-адрес) | HTTP, HTTPS | Кэширование, для внутреннего использования | Очень низкий |
| Элитный/Анонимный | Высокий | HTTP, HTTPS | Обход геоблоков | Середина |
Чтобы ознакомиться со списком бесплатных прокси-серверов, перейдите по ссылке. https://free-proxy-list.net/ или https://www.sslproxies.org/.
Использование бесплатных прокси с Selenium (Python)
1. Установка зависимостей
pip установить селен
Скачайте последнюю версию ChromeDriver Совместимо с вашей версией Chrome.
2. Настройка прокси-сервера в Selenium
Браузер, эта цифровая марионетка, может управляться следующим образом:
from selenium import webdriver from selenium.webdriver.chrome.options import Options proxy = "186.121.235.66:8080" # Replace with your free proxy options = Options() options.add_argument(f'--proxy-server=http://{proxy}') driver = webdriver.Chrome(options=options) driver.get('https://httpbin.org/ip') print(driver.page_source) driver.quit()
Таблица: Типичные переключатели прокси Chrome
| Вариант | Описание |
|---|---|
--proxy-server=http://IP:PORT |
Настройте HTTP-прокси |
--proxy-server=https=IP:PORT |
Настройте HTTPS-прокси |
--proxy-bypass-list=localhost;127.0.0.1 |
Исключить адреса из прокси-сервера |
3. Использование прокси-серверов с аутентификацией
Бесплатные прокси с аутентификацией — большая редкость, но если вам посчастливится на такой найти:
from selenium import webdriver from selenium.webdriver.chrome.service import Service from selenium.webdriver.chrome.options import Options # Authenticated proxies require a Chrome extension workaround from selenium.webdriver.common.by import By import zipfile proxy_host = 'proxy.example.com' proxy_port = 8000 proxy_user = 'user' proxy_pass = 'pass' manifest_json = """ { "version": "1.0.0", "manifest_version": 2, "name": "Chrome Proxy", "permissions": [ "proxy", "tabs", "unlimitedStorage", "storage", " ", "webRequest", "webRequestBlocking" ], "background": { "scripts": ["background.js"] } } """ background_js = f""" var config = {{ mode: "fixed_servers", rules: {{ singleProxy: {{ scheme: "http", host: "{proxy_host}", port: parseInt({proxy_port}) }}, bypassList: ["localhost"] }} }}; chrome.proxy.settings.set({{value: config, scope: "regular"}}, function() {{}}); function callbackFn(details) {{ return {{ authCredentials: {{ username: "{proxy_user}", password: "{proxy_pass}" }} }}; }} chrome.webRequest.onAuthRequired.addListener( callbackFn, {{urls: [" "]}}, ['blocking'] ); """ # Создание расширения прокси pluginfile = 'proxy_auth_plugin.zip' с помощью zipfile.ZipFile(pluginfile, 'w') as zp: zp.writestr("manifest.json", manifest_json) zp.writestr("background.js", background_js) chrome_options = Options() chrome_options.add_extension(pluginfile) driver = webdriver.Chrome(options=chrome_options) driver.get('https://httpbin.org/ip')
Ссылка: Аутентификация через Selenium Proxy (GitHub Gist)
Использование бесплатных прокси с Puppeteer (Node.js)
1. Установка Puppeteer
npm install puppeteer
2. Запуск Puppeteer через прокси-сервер
Пусть браузер наденет свою новую маску:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=http://186.121.235.66:8080'] }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(body); await browser.close(); })();
3. Обработка аутентификации прокси-сервера
Когда привратник требует подтверждения личности:
const puppeteer = require('puppeteer'); (async () => { const browser = await puppeteer.launch({ args: ['--proxy-server=http://proxy.example.com:8000'] }); const page = await browser.newPage(); await page.authenticate({ username: 'user', password: 'pass' }); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(body); await browser.close(); })();
4. Вращение прокси-объектов в Puppeteer
Балет эфемерных идентичностей, поставленный следующим образом:
const proxies = [ 'http://proxy1:port', 'http://proxy2:port', 'http://proxy3:port' ]; const puppeteer = require('puppeteer'); (async () => { for (const proxy of proxies) { const browser = await puppeteer.launch({ args: [`--proxy-server=${proxy}`] }); const page = await browser.newPage(); await page.goto('https://httpbin.org/ip'); const body = await page.content(); console.log(`Proxy: ${proxy}\n${body}\n`); await browser.close(); } })();
Бесплатные источники прокси
| Имя | URL | Функции |
|---|---|---|
| Список бесплатных прокси | https://free-proxy-list.net/ | Обширный список протоколов HTTP/S, обновленный. |
| SSL-прокси | https://www.sslproxies.org/ | HTTPS-прокси, быстрое обновление |
| ProxyScrape | https://proxyscrape.com/free-proxy-list | Множественные протоколы |
| Spys.one | http://spys.one/en/ | Расширенная фильтрация |
Передовые методы и ограничения
- Эфемерная природа: Бесплатные прокси-серверы часто исчезают без предупреждения; отслеживайте их работоспособность с помощью таких инструментов, как [название инструмента]. ProxyChecker.
- Скорость и надежность: Ожидайте задержек, таймаутов и периодических тупиковых ситуаций.
- Безопасность: Никогда не используйте бесплатные прокси для доступа к конфиденциальным аккаунтам — атаки типа «человек посередине» часто происходят из-за скрытых угроз.
- Правовые и этические аспекты: Всегда соблюдайте правила, указанные в файле robots.txt, и условия предоставления услуг.
Пример проверки прокси-сервера (Python)
Перед запуском браузера проверьте работоспособность прокси-сервера:
import requests proxy = "186.121.235.66:8080" proxies = {"http": f"http://{proxy}", "https": f"http://{proxy}"} try: response = requests.get('https://httpbin.org/ip', proxies=proxies, timeout=5) print(response.json()) except Exception as e: print(f"Proxy failed: {e}")
Комментарии (0)
Здесь пока нет комментариев, вы можете стать первым!