GeekProxy в Apify
Apify запускает ваши скраперы, они называются Actors, в своём облаке и позволяет каждому запуску нести список своих прокси в привычном виде scheme://user:password@host:port. Платформа перебирает список по кругу или закрепляет URL за сессией. В гайде разбираем поле Custom proxies в консоли, ту же настройку в JSON и в двух SDK, и какой трафик на самом деле выходит через ваш прокси.
Что нужно: активный план GeekProxy и данные прокси из кабинета. Настройка занимает минуты три.
Получить прокси1 Перед началом
Apify это веб-платформа. Ставить нечего: открываете консоль в браузере, выбираете Actor, например Web Scraper, заполняете его вход и жмёте Start. Бесплатный план стоит $0, даёт $5 кредита в месяц на Store или собственные Actors и не просит карту. На всё, что на этой странице, этого хватает.
- Прокси записываются как
scheme://user:password@host:port, несколько штук через пробел или с новой строки - Схема HTTP или SOCKS5. Логин и пароль можно опустить, порт нельзя
- Доменные имена принимаются: в официальном примере стоит хост с портом 8000
- Настройка на запуск. Она сохраняется со входом задачи или запуска, а не с аккаунтом
- Секцию показывают только Actors, у которых во входной схеме описано поле proxy. У Web Scraper оно есть, и его README говорит, что без прокси он не запустится
Что понадобится
- Активный план GeekProxy (Residential Turbo, Flex, ISP или датацентр)
- Данные прокси из кабинета: хост, порт, логин, пароль
- Аккаунт Apify, бесплатный план или выше
- Поле Откуда взять
- Протокол HTTP / SOCKS5
- Хост IP или имя шлюза из кабинета
- Порт из кабинета
- Логин из кабинета
- Пароль из кабинета
2 Где взять данные прокси
- Войдите в кабинет GeekProxy
- Откройте план. У планов с оплатой за IP (датацентр, ISP) список адресов, порты, логин и пароль лежат прямо на карточке, а кнопка Export отдаёт весь список текстом
- У резидентских и мобильных планов нажмите Options. Панель Proxy Configuration соберёт строку логина со страной, городом и настройками сессии. Готовую строку копируйте из Proxy List
- Оставьте план в режиме логина и пароля. Apify работает с облачных адресов, которые меняются от запуска к запуску, белому списку не за что зацепиться
На резидентской панели стоит задержаться на минуту. Ротационный режим даёт строку, где каждое соединение может выйти с другого адреса. Липкий режим даёт строку, которая держит один выход заданное время сессии. И то и другое один URL, а для Apify это список из одной записи.
3 Что идёт через прокси
Ваш браузер прокси не касается. Консоль, вызовы API, которые стартуют запуски, выгрузка датасетов: всё это трафик между вами и Apify. Прокси использует краулер внутри Actor во время запуска, для запросов к целевому сайту. Headless-браузер или простой HTTP-клиент, правило одно. Путь такой: сервер Apify, потом ваш адрес GeekProxy, потом сайт.
Два следствия. Цель видит адрес выхода прокси и никогда ваш домашний IP, с вашей стороны утекать нечему. А подключается машина из облака Apify, поэтому логин с паролем здесь бьют любой белый список.
4 Custom proxies в консоли
- Откройте Actor, например Web Scraper, и перейдите на вкладку Input
- Прокрутите вниз и раскройте секцию Proxy and browser configuration
- У поля Proxy configuration (optional) переключатель: None, Custom proxies, Automatic proxy, Selected proxies. Нажмите Custom proxies
- Появится поле Proxy urls. Вставьте
http://LOGIN:PASSWORD@IP:PORT, по одному URL в строке - Запускайте или сохраните вход как task, чтобы использовать повторно
Automatic proxy и Selected proxies это собственный пул Apify с выпадающим списком Proxy country. Не трогайте: они едят кредит Apify, и гайд не про них. None предлагают только Actors, которые умеют работать без прокси.


5 JSON и SDK
Поле в консоли это просто форма для JSON-объекта. Переключите вкладку Input в JSON, и та же настройка выглядит так:
"proxyConfiguration": {
"useApifyProxy": false,
"proxyUrls": ["http://LOGIN:PASSWORD@IP:PORT"]
}
Ровно это вы и отправляете, когда стартуете запуск через API. В коде собственного Actor JS SDK собирает ротацию из того же списка сам:
const proxyConfiguration = await Actor.createProxyConfiguration({
proxyUrls: ['http://LOGIN:PASSWORD@IP:PORT'],
});
const proxyUrl = await proxyConfiguration.newUrl('session-1');
И Python SDK, куда объект из консоли можно передать как есть:
proxy_configuration = await Actor.create_proxy_configuration(
proxy_urls=['http://LOGIN:PASSWORD@IP:PORT'],
)
proxy_url = await proxy_configuration.new_url('session-1')
Правила в обоих языках одинаковые. Без id сессии newUrl раздаёт ваши URL по кругу. С id сессии каждый следующий вызов с тем же id возвращает тот же URL. Логин SDK не переписывает, поэтому липкая сессия GeekProxy должна быть зашита в саму строку. Нужно несколько фиксированных выходов, положите в список несколько липких строк из кабинета, по одной на сессию.

6 Проверка работы
Запустите Web Scraper с единственным стартовым URL https://ipinfo.io/json и вашей строкой в Custom proxies. Тело страницы попадёт в датасет, и поле ip в нём должно показать адрес прокси, а не адрес Apify. На плане ISP или датацентра это адрес из кабинета, на Residential Turbo или Flex любой адрес из пула в выбранной стране. Прогоните дважды на ротационной строке, и два адреса должны отличаться.
Если запуск падает, ничего не успев скачать, проверьте строку из своего терминала, чтобы отделить проблему прокси от проблемы Actor:
curl -x http://LOGIN:PASSWORD@IP:PORT https://ipinfo.io/json
7 Какой продукт GeekProxy подходит
Apify уже ротирует и уже закрепляет сессии, так что дайте ему один шлюз и пусть две системы делят работу. Residential Turbo одной ротационной строкой это выбор по умолчанию для сайтов, которые режут облачные диапазоны. Каждый запрос может выйти с другого домашнего IP, HTTP или SOCKS5, а липкий логин держит выход, когда сессии Actor это нужно. Residential Flex делает то же по TCP с фильтром выхода по Windows или Android, что помогает, когда цель сравнивает ОС выхода с отпечатком браузера. Для массового обхода нетребовательных сайтов список URL датацентра IPv4 дешевле, а round-robin размажет нагрузку по нему. Списки ISP подходят Actors, которые логинятся и должны держать один адрес на аккаунт.
8 Частые проблемы
Секции нет на вкладке Input
Во входной схеме Actor не описано поле proxy, и консоли нечего показывать. Возьмите Actor, у которого оно есть, или добавьте поле в схему своего.
Proxy is required to run the scraper
Web Scraper отказывается стартовать без прокси. Выберите Custom proxies и вставьте хотя бы одну строку.
Каждый запрос падает с ошибкой авторизации
Либо данные неверные, либо план в режиме белого списка IP, который с меняющихся адресов Apify работать не может. Переведите план на логин и пароль в кабинете и повторите проверку curl.
Сессии постоянно меняют IP
Без id сессии по умолчанию идёт round-robin. Передавайте id сессии в newUrl и берите липкую строку из кабинета, чтобы и сторона прокси держала выход.
Хочу сначала дешёвые прокси, а резидентские только при блокировке
В Python SDK для этого есть tiered proxy URLs, но только при прямом создании ProxyConfiguration, а не через хелпер Actor. Прочитайте страницу Proxy management в документации Python, прежде чем на это опираться.
Прокси для Apify
Один ротируемый резидентский шлюз или список статических IP, HTTP и SOCKS5 с логином и паролем, готово за секунды.
Заказать