Ротація на рівні списку
ProxySale ротує проксі через сам список. Пул увесь день втрачає мертві адреси й отримує нові, і щоразу, коли софт запитує посилання, він отримує набір, що працює в цю мить. Правил ротації на нашому боці ви не налаштовуєте: перезавантажуйте посилання раз на 8–10 хвилин, і список лишається актуальним.
Далі рядок для кожного запиту обирає ваш софт. Більшість парсерів і SEO-інструментів бере випадковий проксі на запит або змінює його після помилки, і навантаження розходиться на тисячі адрес.
Чому ротаційні проксі допомагають парсерам
Пошуковики, маркетплейси й агрегатори цін рахують запити з IP. Адреса, яка шле сотні запитів на хвилину, натрапляє на капчу чи блокування. Розподіліть те саме навантаження на список ротаційних проксі, і кожна адреса надсилатиме лише кілька, тож ціль бачить щось близьке до звичайних відвідувачів.
Ротація ще й ховає мертві рядки. Невдалий запит іде повторно через іншу адресу, а наступне перезавантаження списку викидає поганий рядок.
Налаштування ротації в софті
- A-Parser і ZennoPoster: додайте посилання на список як джерело проксі з перезавантаженням раз на 10 хвилин.
- Scrapy: завантажте список у downloader middleware, що бере випадковий рядок на кожен запит.
- Python requests: тримайте список у пам’яті й передавайте випадковий рядок у словнику proxies.
- curl у bash: перед кожним викликом беріть рядок через
shuf -n 1.
Лишайте перезавантаження на 8–10 хвилинах. Запити щохвилини ми сповільнюємо, та й пул так швидко не змінюється.
Стратегії ротації
- Випадковий рядок на кожен запит: найпростіша схема з найрівнішим навантаженням.
- Один рядок на коротку серію: корисно, коли сайт чекає кілька пов’язаних запитів, наприклад сторінку пошуку й наступну сторінку видачі.
- Зміна після помилки: тримати рядок, поки він відповідає, і відкидати після капчі, таймауту чи 403.
- Охолодження: після блокування прибирати адресу з ротації на 10–15 хвилин.
Більшість парсерів поєднує перший і третій варіанти: випадковий рядок на запит і миттєва зміна після помилки. Стежте за часткою капч і невдалих запитів. Якщо вона росте, додайте адрес або сповільніться.
Скільки адрес вам потрібно
Порахуйте запити на хвилину до найскладнішої цілі й поділіть на те, скільки одна адреса може надіслати без проблем. Якщо сайт витримує п’ять запитів на хвилину з одного IP, а вам потрібно 5 000, плануйте щонайменше 1 000 живих адрес плюс запас на нічний спад. Більші задачі розібрані на сторінці проксі оптом.
Обирайте пул за ціллю: Мікс світу для глобальних сайтів, проксі Європи для магазинів і пошуку в ЄС, проксі СНД для Яндекса й регіональних маркетплейсів, проксі Китаю для Baidu.
Задачі, яким потрібна стала адреса
Деяка робота потребує однієї адреси надовго: вхід в акаунти, збережений кошик, профілі антидетект-браузерів. Ротаційний список пакета тут не годиться: адреса здатна вийти з пулу. Для такої роботи беріть резидентні проксі з пулу Макс: кожен рядок має свою сесію, строк якої від трьох хвилин до доби, поки домашній пристрій онлайн. Як налаштувати профілі, показано на сторінці проксі для антидетекту.
Для всього, що читає публічні сторінки, ротація підходить краще й коштує менше за запит.
Файл зі списком, що оновлюється раз на 10 хвилин
Деякі інструменти читають проксі лише з файлу. Тримайте такий файл свіжим за допомогою невеликого скрипта, який завантажує список раз на 10 хвилин. Кожен скрипт нижче спершу пише в тимчасовий файл і замінює основний лише після повного завантаження, тож софт ніколи не прочитає недописаний чи порожній список. Замість YOUR_LIST_LINK вставте посилання на список із панелі.
Linux: shell-скрипт і cron
Збережіть скрипт як /opt/proxies/update-proxies.sh, зробіть його виконуваним командою chmod +x /opt/proxies/update-proxies.sh і запустіть один раз вручну. Він виведе, скільки проксі зберіг, або помилку, якщо посилання не відповідає.
#!/bin/sh
LIST_URL="YOUR_LIST_LINK"
DEST="/opt/proxies/proxies.txt"
TMP="$DEST.tmp"
mkdir -p "$(dirname "$DEST")"
if curl -fsS --max-time 60 -o "$TMP" "$LIST_URL" && [ -s "$TMP" ]; then
mv "$TMP" "$DEST"
echo "$(date '+%F %T') saved $(wc -l < "$DEST") proxies"
else
rm -f "$TMP"
echo "$(date '+%F %T') download failed, kept the old list" >&2
exit 1
fiВідкрийте розклад командою crontab -e і додайте рядок нижче. Cron запускатиме скрипт раз на 10 хвилин і дописуватиме його повідомлення в лог. Запускайте від root або змініть обидва шляхи на теку у вашому домашньому каталозі.
*/10 * * * * /opt/proxies/update-proxies.sh >> /var/log/update-proxies.log 2>&1Windows: PowerShell і Планувальник завдань
Збережіть скрипт як C:\proxies\update-proxies.ps1 і запустіть один раз у PowerShell, щоб перевірити посилання.
$ListUrl = "YOUR_LIST_LINK"
$Dest = "C:\proxies\proxies.txt"
$Tmp = "$Dest.tmp"
New-Item -ItemType Directory -Force -Path (Split-Path $Dest) | Out-Null
try {
Invoke-WebRequest -Uri $ListUrl -OutFile $Tmp -UseBasicParsing -TimeoutSec 60
if ((Get-Item $Tmp).Length -eq 0) { throw "empty list" }
Move-Item -Force $Tmp $Dest
$count = (Get-Content $Dest | Measure-Object -Line).Lines
Write-Output "$(Get-Date -Format s) saved $count proxies"
} catch {
Remove-Item $Tmp -ErrorAction SilentlyContinue
Write-Output "$(Get-Date -Format s) download failed, kept the old list: $($_.Exception.Message)"
exit 1
}Зареєструйте завдання, яке запускатиме скрипт раз на 10 хвилин: вставте команду в командний рядок або PowerShell. Завдання переживає перезавантаження й видно в Планувальнику завдань як UpdateProxies. Воно працює, поки ви в системі; щоб працювало без сеансу, відкрийте командний рядок від імені адміністратора й додайте до команди /RU SYSTEM.
schtasks /Create /TN "UpdateProxies" /SC MINUTE /MO 10 /F /TR "powershell.exe -NoProfile -ExecutionPolicy Bypass -File C:\proxies\update-proxies.ps1"Зручніше мишею? Відкрийте Планувальник завдань, оберіть «Створити просте завдання», виберіть щоденний тригер, потім відкрийте властивості завдання й увімкніть повтор кожні 10 хвилин протягом «Безстроково». Дія запускає powershell.exe з аргументами -NoProfile -ExecutionPolicy Bypass -File C:\proxies\update-proxies.ps1.
Будь-яка система: Python
Версія на Python працює в циклі й планувальника не потребує. Запустіть її в терміналі, у screen чи tmux або як службу. Потрібен Python 3 і жодних додаткових пакетів.
import time
import urllib.request
from pathlib import Path
LIST_URL = "YOUR_LIST_LINK"
DEST = Path("proxies.txt")
EVERY = 600
while True:
try:
data = urllib.request.urlopen(LIST_URL, timeout=60).read()
if not data.strip():
raise ValueError("empty list")
tmp = DEST.with_name(DEST.name + ".tmp")
tmp.write_bytes(data)
tmp.replace(DEST)
print(time.strftime("%Y-%m-%dT%H:%M:%S"), "saved", len(data.split()), "proxies", flush=True)
except Exception as error:
print(time.strftime("%Y-%m-%dT%H:%M:%S"), "download failed, kept the old list:", error, flush=True)
time.sleep(EVERY)Вкажіть софту збережений файл, і він завжди читатиме список, не старший за 10 хвилин. Тримайте інтервал 10 хвилин: частіші запити ми сповільнюємо.
Протоколи, ціни й тест
Кожен ротаційний рядок пакета працює за HTTP, HTTPS, SOCKS4 і SOCKS5 через той самий порт, див. SOCKS5-проксі і HTTP-проксі. Обсяги й терміни — у прайсі, а безкоштовну годину будь-якого пакета дає підтримка на сторінці контактів.
