Как собрать большой пул прокси и не разориться
Содержание
- Почему коммерческие пулы такие дорогие
- Список бесплатных источников — золотая жила
- Фильтрация — где отсеивается 80% мусора
- Аренда дешёвых VPS — путь к стабильности
- Ротация через IPv6 — скрытый резерв
- /etc/3proxy/3proxy.cfg
- IPv6 proxy on port 3129
- Реальные цифры: что получается на практике
- Автоматизация обновления — чтобы не следить руками
- !/bin/bash
- Кейс: парсинг маркетплейсов
- Кейс: SEO-мониторинг позиций
- Кейс: обход rate limit'ов на API
- Подводные камни и как их обходить
- Итоговая схема экономии
Пул прокси — это не роскошь, а инструмент выживания. Парсинг, SEO-мониторинг, обход rate limit'ов, тестирование гео-таргетинга — без ротации IP вы просто упрётесь в стену. Но цены на коммерческие сервисы кусаются: 50-100\$ за тысячу IP в месяц — это грабёж средь бела дня.
Собрать пул из 10-50 тысяч рабочих адресов можно за 30-50\$ в месяц. Вопрос — как это сделать без боли и с гарантией выживаемости. Разберу по косточкам.
Почему коммерческие пулы такие дорогие
Провайдеры продают не IP, а гарантию. Они мониторят каждый адрес, отбраковывают забаненные, обновляют списки каждые 15 минут. Это инфраструктура: серверы, бд, персонал. За это и платите.
Но если ваш сценарий — не "купить 10 тысяч чистых IP прямо сейчас", а "постепенно собрать рабочий пул", — можно сэкономить в 5-10 раз. Главное — понять, что вам нужны не "чистые" адреса, а "живые". А это разные вещи.
Список бесплатных источников — золотая жила
Начнём с дармовщины. Списки открытых прокси обновляются каждые 10-30 минут:
- **Free-proxy-list.net** — классика, но много мусора
- **ProxyScrape** — API для автоматизации
- **OpenProxyList** — GitHub-репозитории с обновлениями
- **TheSpeedX/PROXY-List** — 10+ тысяч адресов в одном файле
Вот как забрать их через Python:
```python
import requests
import json
sources = {
"proxyscrape": "https://api.proxyscrape.com/v2/?request=getproxies&protocol=http&timeout=10000&country=all&ssl=all&anonymity=all",
"thespeedx": "https://raw.githubusercontent.com/TheSpeedX/PROXY-List/master/http.txt"
}
proxies = []
for name, url in sources.items():
try:
r = requests.get(url, timeout=15)
if r.status_code == 200:
raw = r.text.strip().split('\n')
proxies.extend([p.strip() for p in raw if p.strip()])
except Exception as e:
print(f"{name} failed: {e}")
print(f"Collected {len(proxies)} proxies")
with open("raw_pool.txt", "w") as f:
f.write("\n".join(proxies))
```
Скрипт заберёт 15-20 тысяч адресов за пару минут. Но не спешите радоваться — 80% из них мертвы или забанены. Нужна фильтрация.
Фильтрация — где отсеивается 80% мусора
Проверка каждого адреса — это HTTP-запрос с таймаутом. Используем асинхронность, иначе будете ждать вечность:
```python
import asyncio
import aiohttp
import time
async def check_proxy(session, proxy, timeout=5):
test_url = "http://httpbin.org/ip"
try:
async with session.get(test_url, proxy=f"http://{proxy}", timeout=timeout) as resp:
if resp.status == 200:
return proxy
except:
pass
return None
async def main():
with open("raw_pool.txt") as f:
proxies = f.read().strip().split('\n')
async with aiohttp.ClientSession() as session:
tasks = [check_proxy(session, p) for p in proxies[:2000]]
results = await asyncio.gather(*tasks)
alive = [r for r in results if r]
print(f"Alive: {len(alive)} from {len(proxies[:2000])}")
with open("alive_pool.txt", "w") as f:
f.write("\n".join(alive))
asyncio.run(main())
```
На 2000 адресов уйдёт 30-60 секунд. Выживаемость — 10-20%. Это нормально.
**Критично:** проверяйте не только доступность, но и скорость. Адрес, который отвечает за 8 секунд, бесполезен. Отсекайте всё, что медленнее 3-4 секунд. Иначе ваш парсер будет висеть на каждом запросе.
Аренда дешёвых VPS — путь к стабильности
Бесплатные прокси умирают каждый час. Для серьёзной работы нужен свой пул. Снимаем 5-10 дешёвых VPS у разных провайдеров и поднимаем на них прокси-серверы.
Берём VPS за 2-4\$ в месяц: Vultr, DigitalOcean, Hostinger, Timeweb. На каждом поднимаем 3proxy или Dante.
```bash
apt update && apt install -y 3proxy
cat > /etc/3proxy/3proxy.cfg << EOF
daemon
maxconn 100
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
service
proxy -n -a -p3128 -i0.0.0.0 -e0.0.0.0
flush
auth strong
users user:pass
allow * * * *
proxy -n -a -p3128 -i0.0.0.0 -e0.0.0.0
EOF
systemctl restart 3proxy
```
10 VPS по 3\$ = 30\$ в месяц. Получаете 10 стабильных IP, которые живут месяцами. Это база пула, к которой добавляете бесплатные адреса.
Ротация через IPv6 — скрытый резерв
У большинства VPS есть IPv6-подсети /64 или /48. Это миллиарды адресов. Поднимаем прокси на IPv6 и ротируем их автоматически.
Например, на том же 3proxy:
```bash
/etc/3proxy/3proxy.cfg
daemon
maxconn 200
nscache 65536
timeouts 1 5 30 60 180 1800 15 60
service
proxy -n -a -p3128 -i0.0.0.0 -e0.0.0.0
flush
auth strong
users user:pass
IPv6 proxy on port 3129
proxy -6 -n -a -p3129 -i:: -e::
```
Но не все сайты принимают IPv6. Поэтому этот пул — дополнение, а не замена.
Реальные цифры: что получается на практике
Собрал пул из 1000 адресов: 700 — бесплатные списки, 300 — с 5 VPS. Замеры через 24 часа:
| Тип | Начальное кол-во | Живых через 24ч | Средняя скорость |
|-----|------------------|-----------------|-------------------|
| Free lists | 700 | 89 | 2.1 сек |
| VPS IPv4 | 5 | 5 | 0.4 сек |
| VPS IPv6 | 295 | 290 | 0.8 сек |
Бесплатные адреса — одноразовый ресурс. VPS — надёжная база. Для парсинга 500 страниц в час хватает и 90 живых адресов.
Автоматизация обновления — чтобы не следить руками
Крон-задача каждые 30 минут: забираем свежие списки, проверяем, обновляем файл.
```bash
!/bin/bash
cd /opt/proxy-pool
python3 fetch_proxies.py
python3 check_proxies.py --timeout 3 --threads 100
python3 rotate_pool.py --max-alive 500
```
И пул сам себя поддерживает. Проверено: при таком подходе из 20 тысяч сырых адресов в сутки выживает 200-400. Если нужно больше — добавляем источники или VPS.
Кейс: парсинг маркетплейсов
Проблема: Wildberries банит IP после 50-100 запросов. Нужно 2000+ запросов в час.
Решение: пул из 200 живых прокси, ротация после каждого запроса, задержка 0.5-1 сек. На бесплатных адресах выживаемость была 5-10 минут. На VPS-пуле — стабильно 2-3 часа без бана.
Кейс: SEO-мониторинг позиций
Проблема: Google показывает разные результаты для разных IP. Нужно 5000 проверок в сутки.
Решение: 50 прокси из пула, ротация каждые 10 запросов. Стоимость — 15\$ в месяц за VPS. Коммерческий сервис за такой объём — 200\$+.
Кейс: обход rate limit'ов на API
Проблема: API отдаёт 429 после 100 запросов в минуту. Нужно 5000 запросов.
Решение: пул из 20 прокси, распределение запросов через round-robin. Каждый адрес делает 100 запросов, потом следующий. Итог — 2000 запросов в минуту без единого 429.
Подводные камни и как их обходить
**Бан по User-Agent.** Прокси не помогут, если вы долбите с одного User-Agent. Ротация UA — обязательна.
**SSL-сертификаты.** Некоторые сайты проверяют TLS-отпечатки. На бесплатных прокси это частая проблема. Решение — использовать VPS-прокси с вашим собственным SSL.
**Скорость.** Бесплатные прокси часто режут скорость до 50-100 КБ/с. Для парсинга текста хватает, для скачивания файлов — нет.
**География.** Если нужны IP конкретной страны, бесплатные списки — лотерея. VPS в нужной локации решает проблему, но стоит в 2-3 раза дороже.
Итоговая схема экономии
- 30\$ в месяц — 5 VPS для базы
- 5\$ в месяц — 2-3 VPS для IPv6-пула
- 0\$ — бесплатные списки для "одноразовых" задач
Итого 35\$ вместо 500\$ за коммерческий пул. Разница в 14 раз.
Собирайте, фильтруйте, ротируйте. Через неделю у вас будет пул, который переживёт большинство коммерческих сервисов. А если нужен готовый вариант с IPv6 — гляньте [lexic.ml](https://lexic.ml), там уже всё настроено.