Створення власної ферми проксі на Raspberry Pi для роботи з антидетектом

· 14 хв читання
raspberry pi проксі ферма мобільний інтернет антидетект DIY резидентні проксі
Створення власної ферми проксі на Raspberry Pi для роботи з антидетектом

Готові захистити свою цифрову особистість?

Оберіть тариф і запускайте непомітні профілі вже сьогодні.

Почати

Резидентні та мобільні проксі від комерційних провайдерів коштують $5-15 за гігабайт. При серйозних обсягах трафіку це стає значною статтею витрат. Альтернатива — побудувати власну інфраструктуру проксі на базі Raspberry Pi з USB-модемами або SIM-роутерами, що дає реальні мобільні IP-адреси за вартістю мобільного інтернет-тарифу.

Це не найпростіший шлях, але для операцій, що використовують більше 100-200 ГБ трафіку на місяць, фінансовий сенс очевидний. До того ж, власні проксі дають повний контроль над ротацією IP та якістю з’єднання.

Архітектура ферми: варіанти побудови

Є кілька підходів до побудови, залежно від бюджету та цілей.

Мінімальний варіант (1-5 вузлів): Raspberry Pi 4 + USB-модем або HUAWEI MiFi-роутер. Один вузол = один мобільний IP. Вартість: $50-100 за вузол без вартості SIM і тарифу.

Середній масштаб (10-30 вузлів): Кілька Raspberry Pi в одному rack-корпусі, централізоване управління через Ansible або скрипти, автоматична ротація IP через перепідключення модемів.

Великий масштаб (50+ вузлів): Спеціалізовані SIM-банки (пристрої, що підтримують 8, 16 або 32 SIM-карти одночасно), мінімалізація обладнання на один IP. Часто використовують одноплатні комп’ютери дешевші за Raspberry Pi (Orange Pi, Banana Pi) для зниження витрат.

Обладнання: що купувати

Raspberry Pi 4 (4GB RAM) — оптимальний вибір для проксі-вузла. Достатньо потужний для запуску проксі-сервера і управляючих скриптів, достатньо тихий для роботи в квартирі, споживає 5-10W.

Альтернативи для зниження витрат:

  • Raspberry Pi Zero 2W — дешевший ($15 vs $55), але слабший CPU. Для простого проксі вистачає.
  • Orange Pi Zero 3 — порівнянна потужність з Raspberry Pi за нижчою ціною ($20-30).
  • GL.iNet роутери — компактні роутери під OpenWrt, деякі з підтримкою USB-модемів. Простіший у налаштуванні, ніж Raspberry Pi.

USB-модеми — рекомендовані HUAWEI E3372 або ZTE MF833 за їхню широку підтримку в Linux і простоту переключення в IP-режим (замість NCM/CDC). Важливо: купуйте незалочені версії або unlocked firmware.

SIM-карти — для різноманітності IP-адрес бажані SIM від різних операторів. Проблема: більшість мобільних тарифів мають dynamic IP — це бажана поведінка, але оператор може присвоювати IP з одного пулу. Для максимальної різноманітності: SIM від різних операторів у тій самій країні.

MicroSD карти — для Raspberry Pi використовуйте якісні карти класу A1 або A2 (Samsung Endurance, SanDisk High Endurance). Дешеві карти швидко виходять з ладу при постійному записі логів.

Живлення — USB-хаби з активним живленням для кількох Raspberry Pi в одному місці. Для 5+ пристроїв розгляньте PoE-рішення або PoE HAT для Raspberry Pi.

Встановлення ОС та базове налаштування

Для кожного Raspberry Pi встановлюємо Raspberry Pi OS Lite (64-bit) — без графічного інтерфейсу, мінімальні витрати ресурсів.

# Після першого завантаження - оновлення системи
sudo apt update && sudo apt upgrade -y

# Встановлення необхідних пакетів
sudo apt install -y \
    3proxy \          # Проксі-сервер
    usb-modeswitch \  # Перемикання USB-модема в правильний режим
    ppp \             # PPP-з'єднання (деякі модеми потребують)
    network-manager \ # Управління мережею
    curl \
    jq \
    python3 \
    python3-pip

# Встановлення часового поясу (для логування)
sudo timedatectl set-timezone UTC

Налаштування USB-модема:

Більшість сучасних USB-модемів підтримують два режими: “накопичувач” (для завантаження драйверів в Windows) та “модем” (фактичний мережевий пристрій). usb-modeswitch автоматично перемикає модем у правильний режим.

# Перевірка, чи визначився модем
lsusb | grep -i "huawei\|zte\|option"

# Перегляд мережевих інтерфейсів
ip link show

# Модем повинен з'явитися як eth1, usb0 або wwan0

Налаштування 3proxy

3proxy — легковаговий проксі-сервер для Linux. Підтримує SOCKS5 та HTTP з аутентифікацією.

# /etc/3proxy/3proxy.cfg

# Логування
log /var/log/3proxy.log D
logformat "- +_L%t.%. %N.%p %E %U %C:%c %R:%r %O %I %h %T"
maxconn 100

# Аутентифікація
auth strong
users proxy:CL:your_password_here

# Дозвол
allow *

# SOCKS5 на порту 1080
socks -p1080 -i0.0.0.0

# HTTP проксі на порту 3128
proxy -p3128 -i0.0.0.0
# Запуск 3proxy
sudo systemctl enable 3proxy
sudo systemctl start 3proxy

# Перевірка
sudo systemctl status 3proxy

Ротація IP: скрипт перепідключення

Мобільні оператори зазвичай призначають новий IP при кожному перепідключенні. Для ротації IP достатньо відключити і знову підключити модем.

#!/bin/bash
# /usr/local/bin/rotate-ip.sh

MODEM_INTERFACE="wwan0"  # або eth1, usb0 - залежить від модема
LOG_FILE="/var/log/ip-rotation.log"

rotate_ip() {
    OLD_IP=$(curl -s --max-time 10 ifconfig.me 2>/dev/null || echo "unknown")
    
    # Відключення
    sudo ip link set $MODEM_INTERFACE down
    sleep 3
    
    # Для HUAWEI модемів - повний reset через AT-команди
    if command -v mmcli &> /dev/null; then
        MODEM_NUM=$(mmcli -L | grep -o "[0-9]*" | head -1)
        mmcli -m $MODEM_NUM --command="AT+CFUN=0" 2>/dev/null
        sleep 2
        mmcli -m $MODEM_NUM --command="AT+CFUN=1" 2>/dev/null
        sleep 5
    fi
    
    # Підключення
    sudo ip link set $MODEM_INTERFACE up
    sleep 10  # Очікуємо отримання IP
    
    NEW_IP=$(curl -s --max-time 10 ifconfig.me 2>/dev/null || echo "unknown")
    
    echo "$(date): Rotated from $OLD_IP to $NEW_IP" >> $LOG_FILE
    echo $NEW_IP
}

rotate_ip

Для планової ротації:

# Cron для ротації кожні 30 хвилин
*/30 * * * * /usr/local/bin/rotate-ip.sh >> /var/log/cron-rotation.log 2>&1

Централізоване управління: API для ферми

При наявності кількох вузлів потрібен централізований спосіб управління та моніторингу. Найпростіший підхід — Flask API на кожному вузлі:

#!/usr/bin/env python3
# /usr/local/bin/proxy-api.py

from flask import Flask, jsonify
import subprocess
import requests
import os

app = Flask(__name__)
API_KEY = os.environ.get('API_KEY', 'change-me')

def check_api_key(request):
    return request.headers.get('X-API-Key') == API_KEY

@app.route('/status')
def status():
    try:
        current_ip = requests.get('https://ifconfig.me', timeout=5).text.strip()
    except:
        current_ip = "unavailable"
    
    return jsonify({
        'ip': current_ip,
        'hostname': os.uname().nodename,
        'proxy_port': 1080
    })

@app.route('/rotate', methods=['POST'])
def rotate():
    if not check_api_key(request):
        return jsonify({'error': 'Unauthorized'}), 401
    
    result = subprocess.run(
        ['/usr/local/bin/rotate-ip.sh'],
        capture_output=True, text=True, timeout=60
    )
    
    new_ip = result.stdout.strip()
    return jsonify({'new_ip': new_ip, 'success': result.returncode == 0})

if __name__ == '__main__':
    app.run(host='0.0.0.0', port=8080)

Центральна панель управління — простий Python скрипт, що агрегує статус всіх вузлів:

#!/usr/bin/env python3
# proxy-manager.py (запускається на вашій основній машині)

import requests
import json

NODES = [
    {"name": "pi-01", "host": "192.168.1.101", "port": 8080},
    {"name": "pi-02", "host": "192.168.1.102", "port": 8080},
    # ...
]
API_KEY = "your-api-key"

def get_all_proxies():
    proxies = []
    for node in NODES:
        try:
            resp = requests.get(
                f"http://{node['host']}:{node['port']}/status",
                timeout=5
            ).json()
            proxies.append({
                "name": node["name"],
                "socks5": f"socks5://{node['host']}:1080",
                "current_ip": resp["ip"]
            })
        except Exception as e:
            proxies.append({"name": node["name"], "error": str(e)})
    return proxies

def rotate_all():
    for node in NODES:
        requests.post(
            f"http://{node['host']}:{node['port']}/rotate",
            headers={"X-API-Key": API_KEY},
            timeout=120
        )

if __name__ == '__main__':
    proxies = get_all_proxies()
    print(json.dumps(proxies, indent=2))

Інтеграція з антидетект-браузером

Для Santiago Browser або іншого антидетект-браузера, що підтримує SOCKS5, налаштування проксі тривіальне. У налаштуваннях профілю:

  • Тип: SOCKS5
  • Хост: IP-адреса вашого Raspberry Pi у локальній мережі (або зовнішня IP при доступі ззовні)
  • Порт: 1080
  • Логін/пароль: з конфігурації 3proxy

Для роботи ззовні домашньої мережі потрібне або:

  • Порт-форвардинг на роутері (не рекомендується через безпеку)
  • WireGuard VPN з’єднання між Pi і вашим сервером
  • Tailscale (найпростіший варіант для non-tech-oriented налаштування)

WireGuard для безпечного доступу до ферми

WireGuard — найпростіший сучасний VPN для з’єднання Pi з управляючим сервером:

# На кожному Pi:
sudo apt install wireguard

# Генерація ключів
wg genkey | tee /etc/wireguard/privatekey | wg pubkey > /etc/wireguard/publickey

# /etc/wireguard/wg0.conf
[Interface]
PrivateKey = <pi-private-key>
Address = 10.0.0.X/24  # X = унікальний для кожного Pi

[Peer]
PublicKey = <server-public-key>
Endpoint = your-server.com:51820
AllowedIPs = 10.0.0.0/24
PersistentKeepalive = 25

Після налаштування WireGuard ви підключаєтесь до ферми через VPN-адреси, і трафік для проксі виходить через мобільний інтернет Pi.

Витрати та ROI

Початкові витрати (10 вузлів):

  • 10x Raspberry Pi Zero 2W: ~$150
  • 10x USB-модемів: ~$200
  • 10x MicroSD 32GB: ~$50
  • Power, кабелі, корпус: ~$100
  • Разом: ~$500

Щомісячні витрати:

  • 10x SIM з мобільним інтернетом (10 ГБ/місяць кожна): ~$50-150 залежно від країни та оператора
  • Електроенергія (10 вузлів по ~3W): ~$5

Порівняння з комерційними проксі:

  • Комерційні мобільні проксі: $10-15/ГБ
  • Власна ферма: ~$0.5-1.5/ГБ ефективна вартість
  • ROI досягається приблизно на 50-80 ГБ трафіку

Для операцій, що використовують більше 100 ГБ мобільного трафіку на місяць, власна ферма окупається протягом 2-4 місяців і залишається значно дешевшою в довгостроковій перспективі.

Типові проблеми та вирішення

Модем не визначається — перевірте lsusb, встановіть usb-modeswitch, можливо потрібна ручна конфігурація для нестандартного модема.

IP не ротується при перепідключенні — деякі оператори фіксують IP на сесію. Спробуйте відключати SIM на кілька хвилин. Деякі модеми підтримують AT+CGDCONT для примусового скидання сесії.

Висока затримка через проксі — мобільний інтернет має вищу затримку, ніж провідний. Для задач де latency критична, мобільні проксі менш оптимальні. Для більшості завдань антидетект-браузинга затримка 50-150ms є прийнятною.

Модеми перегріваються — забезпечте вентиляцію. USB-модеми без активного охолодження можуть перегріватися при постійній роботі. Пасивні радіатори або невеликий вентилятор вирішують проблему.

Готові захистити свою цифрову особистість?

Оберіть тариф і запускайте непомітні профілі вже сьогодні.

Отримуйте 15% довічну комісію з кожного реферала.

Стати партнером →