· 13 мин. чтения

A-Parser дома или на работе: безопасный доступ извне за NAT без аренды VPS
Благодарим пользователя A-Parser Reset за идею статьи и первоначальную версию руководства.
Содержание
- Экономика: Зачем платить хостерам, если парсишь не каждый день?
- Проблема серого IP и почему удаленный рабочий стол не всегда удобен
- Как работает Cloudflare Tunnel и что он защищает
- Пошаговая настройка Cloudflare Tunnel
- Вариант запуска А: Системная служба и маршрутизация Routes
- Вариант запуска Б: Docker Compose
- Опционально: Дополнительное ограничение доступа через Cloudflare Access
- FAQ: Частые вопросы и безопасность
- Альтернатива без своего домена: Настройка Ngrok
- Итоги и сравнение: Cloudflare vs Ngrok vs VPS
1. Экономика: Зачем платить хостерам, если парсишь не каждый день?
Большинство пользователей покупают лицензию A-Parser одним платежом — именно для того, чтобы уйти от бесконечных ежемесячных SaaS-подписок. Но для задач, которые запускают лишь время от времени, пользователи нередко арендуют VPS. VPS обычно оплачивается помесячно, а итоговая стоимость зависит от конфигурации и провайдера.
И тут начинается знакомая боль:
- Парсинг «наплывами»: Вам нужно спарсить базу под рассылку раз в неделю, снять позиции по проектам или собрать каталог конкурентов пару раз в месяц.
- Оплата за месяц ради пары часов работы: Тарифы на мощных серверах обычно помесячные. Например, при стоимости $25–$50 в месяц за год набегает $300–$600. Это ориентировочный расчёт, а не универсальная цена VPS. В случае с облачными виртуальными машинами за выключенную машину всё равно может начисляться плата за хранение диска и статический IP.
- Разумная экономия: Если вы только раскачиваете новое направление или ведете свои небольшие пет-проекты, платить дата-центрам за простой нерационально. Лицензия A-Parser уже куплена, она должна приносить прибыль, а не ежемесячные счета за серверную инфраструктуру.
Почему домашний ПК или офисный компьютер может быть практичнее VPS для нерегулярных задач:
1. Железо уже оплачено: Домашний ПК, рабочий компьютер в офисе или старый ноутбук на полке уже есть. В зависимости от конфигурации он может дать больше ресурсов, чем выбранный VPS, без отдельной аренды сервера. 2. Интернет без отдельной платы за трафик: Если ваш тариф безлимитный, канал 300–1000 Мбит/с позволяет работать без отдельной платы за объём трафика.
Возникает единственный логичный вопрос: «Если крутить парсер дома или на работе, как им удобно управлять из других мест?» Классический сценарий: запустили объемную задачу на основном ПК — и спокойно занимаетесь своими делами. Контролировать прогресс, управлять очередью и выгружать готовые результаты можно в любой момент с любого устройства (ноутбука, смартфона или планшета) из абсолютно любой локации.
Именно эту задачу мы и решим с помощью исходящих туннелей.
2. Проблема серого IP и почему удаленный рабочий стол не всегда удобен
Главное препятствие домашнего хостинга — провайдерский NAT (серый IP):
- У вас нет внешнего белого IP-адреса;
- Пробросить порты на домашнем роутере невозможно (провайдер закрывает входящие соединения);
- Белый статический IP часто недоступен: В мобильных сетях (4G/LTE) получить публичный белый IP физлицу практически невозможно, а у кабельных провайдеров за него просят отдельную ежемесячную доплату. К тому же «светить» свой реальный домашний или офисный IP в открытый интернет — прямой риск привлечь автоматические сканеры и брутфорс-ботов.
Как обычно решают эту проблему: Используют AnyDesk, TeamViewer или RDP.
Минусы:
- Не отдельный веб-доступ: Удалённый рабочий стол даёт доступ к компьютеру, но не создаёт отдельный браузерный URL для панели;
- Выгрузка результатов: Для скачивания собранных баз нужно работать через интерфейс удалённого рабочего стола, а не через прямую ссылку в браузере.
Чего мы хотим: Открывать в обычном браузере адрес вида https://aparser.my-domain.com со смартфона или рабочего ноутбука и пользоваться веб-интерфейсом A-Parser.
3. Как работает Cloudflare Tunnel и что он защищает
При стандартном подключении извне вам приходится открывать порты на роутере и выставлять свой домашний IP в открытый интернет.
Туннель работает от обратного — по исходящему каналу: Агент cloudflared на вашем компьютере сам подключается к серверам Cloudflare по безопасному исходящему протоколу. Роутер и провайдер видят это как обычный исходящий веб-трафик, поэтому проброс портов и белый IP не требуются вовсе.
Главный нюанс: парсинг не идет через Cloudflare
Многие опасаются, что большой объем данных в задаче повлияет на работу туннеля. Здесь важно различать два маршрута:
- Интерфейс управления (через Cloudflare): вы открываете веб-панель
aparser.my-domain.com. Через туннель идут только клики и статус задач (считанные килобайты). - Сам парсинг (напрямую в интернет): движок A-Parser запрашивает целевые сайты напрямую через ваш сетевой интерфейс и прокси. Этот поток минует Cloudflare.
| Поток | Маршрут | Объем данных |
|---|---|---|
| Управление и просмотр | Браузер ➡️ Cloudflare ➡️ Локальный порт 9091 | Килобайты (только веб-интерфейс) |
| Сбор данных (парсинг) | Движок A-Parser ➡️ Ваши прокси ➡️ Сайты в сети | Любые гигабайты (напрямую) |
В результате: порты на роутере закрыты, реальный IP скрыт за Cloudflare, а на управление парсером тратятся минимальные ресурсы.
Официальная документация Cloudflare Tunnel.
4. Пошаговая настройка Cloudflare Tunnel
Для настройки потребуется бесплатный аккаунт Cloudflare и любой домен, делегированный на DNS-серверы Cloudflare (подойдет любой недорогой или старый домен).
Отличная новость от Cloudflare: Ранее управление туннелями требовало перехода в панель Zero Trust и обязательной привязки банковской карты (даже для бесплатного тарифа с чеком $0). Теперь Cloudflare вынесла туннели напрямую в основной дашборд (Protect & connect → Networking → Tunnels) — без привязки банковской карты и с лимитом до 1 000 туннелей на аккаунт.
Шаг 1. Переход в раздел Networking → Tunnels
1. Авторизуемся в основном дашборде Cloudflare Dashboard. 2. В левом боковом меню находим блок Protect & connect и переходим в раздел Networking → Tunnels. 3. Нажимаем синюю кнопку + Create Tunnel.

Шаг 2. Выбор коннектора и имени туннеля
1. В мастере создания выбираем тип коннектора по умолчанию — Cloudflared и нажимаем Next. 2. В поле Name your tunnel задаем понятное имя туннеля (например, AParser) и нажимаем Save tunnel.

5. Вариант запуска А: Системная служба и маршрутизация Routes
Подходит, если A-Parser установлен прямо в операционную систему.
Шаг 3. Установка коннектора
1. На шаге Install and run connectors выбираем операционную систему целевого ПК (например, Windows / 64-bit или Debian / Ubuntu / macOS). 2. Для Windows отобразится пошаговая инструкция:
- Скачать инсталлятор
cloudflared-windows-amd64.msi; - Запустить установку;
- Открыть Командную строку (CMD) или PowerShell от имени Администратора;
- Выполнить команду установки системной службы с вашим персональным токеном:
cloudflared.exe service install eyJh...ВАШ_ТОКЕН...
(Для Linux / macOS аналогично: выбирается нужный дистрибутив и выполняется команда с токеном из подсказки панели).
3. Как только служба запустится на ПК, внизу окна отобразится зеленый статус подтверждения: ✔ Tunnel connected successfully. Your Tunnel is now ready to use.

Шаг 4. Маршрутизация трафика (Routes)
Теперь связываем наш туннель с веб-интерфейсом A-Parser:
1. В списке туннелей кликаем по нашему созданному туннелю AParser и переходим на вкладку Routes. 2. Нажимаем кнопку + Add route.

3. В появившемся окне выбираем тип маршрута — карточку Published application (Publish local applications to the Internet via public hostname).

4. Заполняем поля маршрута:
- Subdomain: вписываем желаемое имя поддомена (например,
aparser); - Domain: выбираем ваш домен из выпадающего списка (например,
my-domain.com); - В результате сформируется публичный адрес:
aparser.my-domain.com; - Path: оставляем пустым;
- Service URL: указываем протокол и порт локального веб-интерфейса A-Parser:
http://localhost:9091.
5. Нажимаем кнопку Add route.

Cloudflare выдаст подтверждение: ✔ Route added successfully — и автоматически создаст нужную CNAME-запись в DNS вашего домена!

Шаг 5. Проверка статуса в панели
В панели туннеля статус коннектора отображается как активный (Healthy / Active), а во вкладке Routes появился созданный публичный адрес.

Теперь переходите по адресу https://aparser.my-domain.com в браузере с компьютера или смартфона — перед вами откроется веб-интерфейс A-Parser с доверенным SSL-сертификатом Cloudflare.
6. Вариант запуска Б: Docker Compose
Вариант для тех, кто предпочитает контейнеры: A-Parser и агент cloudflared поднимаются в одной изолированной Docker-сети.
Шаг 1. Подготовка файлов и распаковка дистрибутива
В личном кабинете (A-Parser → Загрузки) копируем ссылку на архив aparser-linux-x64.tar.gz.
Актуальная документация A-Parser по Docker и docker-compose.
Для пользователей Windows: Даже если Docker Desktop установлен на Windows, скачивать нужно именно Linux-версию (
.tar.gz), так как контейнеры работают на Linux.
На Linux / macOS:
mkdir -p /opt/aparser-docker && cd /opt/aparser-docker curl -fsSL -O "https://a-parser.com/members/onetime/ВАШ_ТОКЕН/aparser-linux-x64.tar.gz" tar zxf aparser-linux-x64.tar.gz && rm -f aparser-linux-x64.tar.gzНа Windows (PowerShell / Проводник):
Скачиваем архив в созданную папку проекта. На Windows 10/11 в PowerShell его можно распаковать встроенной командой; при необходимости используйте 7-Zip:tar -xf aparser-linux-x64.tar.gz
(Рядом появится каталог aparser с исполняемыми файлами).
Шаг 2. Создание docker-compose.yml
В папке проекта создаем файл docker-compose.yml:
services:
aparser:
image: aparser/runtime:latest
container_name: aparser
command: ./aparser
restart: always
volumes:
- ./aparser:/app
ports:
- "127.0.0.1:9091:9091" # доступно только с самой машины
ulimits:
nofile: { soft: 10240, hard: 10240 } # Важно: дефолтный лимит Docker 1024 убьет многопоточный парсинг
cloudflared:
image: cloudflare/cloudflared:latest
container_name: cloudflared
command: tunnel --no-autoupdate run
restart: always
environment:
- TUNNEL_TOKEN=...ВАШ_ТОКЕН_ТУННЕЛЯ...
depends_on:
- aparser
Про публикацию порта. Строка
portsнужна только для того, чтобы открывать веб-панель с самой машины, без туннеля. Для Cloudflare публикация не требуется:cloudflaredработает в той же Docker-сети и обращается к парсеру по внутреннему имени контейнера —http://aparser:9091(внутренний порт, а не хостовый).Если локальный доступ не нужен, строку
portsможно убрать целиком — туннель продолжит работать.
Шаг 3. Запуск и маршрутизация в Cloudflare
1. Запускаем контейнеры:
docker compose up -d
2. В настройках маршрута туннеля (Раздел 5, Шаг 4): При добавлении маршрута (Routes → Add route → Published application) в поле Service URL вместо http://localhost:9091 указываем сетевое имя контейнера: http://aparser:9091 Cloudflare обращается к сервису по внутреннему имени контейнера и внутреннему порту Docker, а не к порту, опубликованному на хосте.
7. Опционально: Дополнительное ограничение доступа через Cloudflare Access
Этот шаг не является обязательным: созданный туннель уже работает и защищен вашим собственным паролем в веб-панели A-Parser.
Однако по умолчанию ваш адрес aparser.my-domain.com доступен любому пользователю интернета. Если вы хотите снизить риск автоматического брутфорса и скрыть форму входа A-Parser от посторонних глаз и интернет-сканеров, можно подключить бесплатную авторизацию Cloudflare Access через отдельное приложение в консоли Cloudflare.
Официальная инструкция для self-hosted application и документация по Access policies.
ℹ️ Обратите внимание: для первого входа в консоль Cloudflare Zero Trust (Zero Trust Free) сервис может запросить подтверждение платежного профиля, но плата ($0/мес) не взимается.
Шаг 1. Создание приложения доступа
1. В консоли Cloudflare One в левом меню переходим: Access controls -> Applications. 2. Нажимаем кнопку Add an application.

3. Выбираем карточку Self-hosted and private (Applications only available for your users) и нажимаем синюю кнопку Continue with Self-hosted and private.

Шаг 2. Настройка домена и времени сессии
1. В блоке Application configuration:
- Application name: вписываем
aparser; - Session Duration: выставляем время жизни сессии (например,
24 hours, чтобы не логиниться каждые 15 минут).
2. В блоке Destinations -> Public hostnames:
- Указываем созданный хост:
aparser.my-domain.com.

Шаг 3. Создание правила доступа
1. Переходим к шагу создания политики (Create new policy). 2. Задаем параметры:
- Policy name:
Only Me; - Action:
Allow.
3. В блоке Policy rules -> @ Include:
- В выпадающем списке селекторов выбираем: Emails;
- В поле значения вписываем ваш личный email (например,
[email protected]).

4. Нажимаем Save application.
Что меняется после включения Cloudflare Access:
Теперь, когда вы (или любой посторонний) перейдете по адресу https://aparser.my-domain.com, Cloudflare не пустит к веб-панели парсера напрямую, а выдаст защитный экран авторизации Cloudflare Access:

Вы просто авторизуетесь через свой аккаунт Cloudflare (логин/пароль или одноразовый код) — и сразу попадаете в интерфейс A-Parser. А для всех посторонних, ботов и сканеров в интернете доступ полностью закрыт — они даже не увидят форму логина A-Parser.
8. FAQ: Частые вопросы и безопасность
1. Может ли Cloudflare заблокировать туннель из-за большого объема парсинга?
В этой схеме объем парсинга не проходит через Cloudflare Tunnel. Через него передается только трафик веб-интерфейса: клики мышкой, конфигурация задач и строки логов (считанные килобайты). Сам сбор данных с целевых сайтов A-Parser выполняет напрямую через ваш сетевой адаптер и прокси, поэтому запросы к целевым сайтам не проходят через Tunnel.
2. Будут ли обновляться графики и логи в реальном времени?
Да, «из коробки». Веб-панель A-Parser передает события в реальном времени по протоколу WebSockets. В Cloudflare поддержка WebSockets включена по умолчанию — логи и прогресс-бары обновляются без задержек.
3. Можно ли вызывать A-Parser по API из внешних скриптов?
Да, API можно вызывать через Tunnel. Запросы к POST /api проходят после успешной проверки Cloudflare Access. Для автоматических запросов используйте отдельную политику Service Auth → Service Token и передавайте в каждом запросе заголовки CF-Access-Client-Id и CF-Access-Client-Secret.
9. Альтернатива без своего домена: Настройка Ngrok
Что делать, если у вас нет свободного домена, или вы не хотите делегировать DNS своего рабочего домена на Cloudflare?
Практичная альтернатива без собственного домена — Ngrok.
Почему именно Ngrok:
- Никаких банковских карт: Регистрация абсолютно бесплатная (через Google, GitHub или Email), платежные реквизиты не запрашиваются.
- Не нужен свой домен: На бесплатном тарифе Ngrok предоставляет один автоматически назначаемый dev-домен (например, в зоне
.ngrok-free.app), привязанный к вашему аккаунту. - Быстрая настройка: При готовом аккаунте подключение обычно занимает несколько минут на любой ОС.
Ключевые ограничения бесплатного тарифа Ngrok:
1 ГБ исходящего трафика в месяц;
20 000 HTTP-запросов и 5 000 TCP-соединений в месяц;
до 3 одновременно работающих эндпоинтов, 3 агентов, 1 пользователя и 1 dev-домена на аккаунт;
Эндпоинт бесплатного тарифа может работать без тайм-аута;
для HTML-трафика отображается промежуточная страница Ngrok. После нажатия Visit Site она не показывается повторно в течение 7 дней благодаря файлу cookie.
Шаг 1. Бесплатная регистрация
1. Переходим на официальный сайт ngrok.com и нажимаем Sign up. 2. Регистрируемся через Google, GitHub или обычный Email + пароль. 3. Банковскую карту указывать не нужно — сразу попадаем в личный кабинет.
Шаг 2. Создание нового Endpoint в личном кабинете
1. В левом меню дашборда переходим в раздел: Connectivity -> Endpoints. 2. Нажимаем кнопку New Endpoint (или синий значок +).

Шаг 3. Выбор платформы и авторизация агента (Authtoken)
В открывшемся окне мастера создания:
1. Нажимаем Change platform и выбираем вашу ОС (например, Windows, macOS или Linux).
2. Выбираем удобный способ установки (для Windows доступен winget, scoop или скачивание архива Download).
3. Копируем команду привязки вашего секретного токена (можно нажать кнопку Show authtoken, чтобы увидеть его в открытом виде):
ngrok config add-authtoken ВАШ_ТОКЕН

4. Открываем терминал / командную строку на ПК с A-Parser и выполняем команду привязки токена. Конфиг автоматически запишется в систему.
Шаг 4. Запуск туннеля к порту A-Parser
В терминале запускаем команду проброса порта 9091:
ngrok http 9091
Шаг 5. Получение готовой ссылки и проверка работы
Как только агент запущен на вашем компьютере, в панели Ngrok в разделе Endpoints мгновенно активируется ваш персональный эндпоинт:

- Вам присваивается публичный URL на dev-домене, например
https://enable-mullets-quotation.ngrok-free.app, с валидным HTTPS-сертификатом. - Статус меняется на Online (
HTTPS | Public | Agent). - Доступна кнопка Inspect Traffic для отслеживания входящих запросов в реальном времени.
Переходите по выданной ссылке с телефона или ноутбука — и перед вами веб-интерфейс A-Parser!
Нюанс бесплатного тарифа Ngrok (экран предупреждения): При переходе по ссылке в браузере появится сервисная защитная плашка от Ngrok: “You are about to visit…”. Это стандартное предупреждение бесплатного тарифа. После нажатия Visit Site cookie скрывает эту страницу на 7 дней, после чего предупреждение может появиться снова.
Если вы планируете слать запросы к API A-Parser из внешних Python/Node.js скриптов, просто передавайте HTTP-заголовок:
ngrok-skip-browser-warning: 1.
10. Итоги и сравнение: Cloudflare vs Ngrok vs VPS
| Параметр | Аренда VPS / Dedicated | Вариант 1: Cloudflare Tunnel | Вариант 2: Ngrok (Free) |
|---|---|---|---|
| Стоимость в месяц | Помесячная оплата, зависит от конфигурации и провайдера | $0 USD | $0 USD |
| Банковская карта | Нужна для оплаты | НЕ требуется вообще (для туннеля) | НЕ требуется вообще |
| Свой домен | По желанию (или IP) | Нужен (делегированный на Cloudflare) | Не нужен (выдают бесплатный субдомен) |
| Лимиты туннеля | Без туннеля (весь канал VPS) | Без отдельного лимита в описанном сценарии (в списке лимитов Cloudflare отдельный лимит трафика не указан) | 1 ГБ исходящего трафика и 20 000 HTTP-запросов / месяц (бесплатный тариф) |
| Ресурсы железа | Ограничены тарифом | Локальный ПК; ресурсы зависят от конфигурации | Локальный ПК; ресурсы зависят от конфигурации |
| Канал интернета | Часто лимитирован по трафику | Зависит от тарифа и провайдера | Зависит от тарифа и провайдера |
| Защита доступа | Открытый наружу порт / SSH | Zero Trust (OTP на почту / Google Auth) | Пароль A-Parser + защитная плашка (в Ngrok есть доп. защита, но в статье не рассматривалась) |
| Удобство ссылки | Браузер по IP/домену | Собственный адрес вида aparser.my-domain.com | Dev-домен xxx.ngrok-free.app |
Резюме:
- Есть свой домен на Cloudflare? Выбирайте Cloudflare Tunnel. Теперь он настраивается напрямую в основном дашборде без привязки банковской карты, дает собственный адрес вида
aparser.my-domain.comи в описанном сценарии работает без отдельного лимита на трафик Tunnel. А при желании его можно усилить дополнительным ограничением доступа через Cloudflare Access. - Нет своего домена? Используйте Ngrok. Он настраивается за пару минут, не требует домена (предоставляет dev-домен, привязанный к аккаунту), не требует платежных данных и дает ссылку для удаленного управления A-Parser с телефона или ноутбука. Учитывайте ограничения бесплатного тарифа: 1 ГБ исходящего трафика и 20 000 HTTP-запросов в месяц. Для периодического управления веб-панелью этого обычно достаточно, поскольку тяжелый парсинг идет напрямую через ваши прокси мимо туннеля.