VPS для WhatsApp-бота: официальный Cloud API
WhatsApp-бот отличается от Telegram: платформа работает через официальный Cloud API от Meta, а вебхукам нужен публичный HTTPS-адрес. Разберём правильный путь: приём вебхуков за nginx с TLS, проверка подписи и честно — о рисках неофициальных библиотек.
Содержание
Официальный Cloud API против неофициальных обёрток
['У WhatsApp два пути. Первый — официальный WhatsApp Cloud API от Meta: вы регистрируете приложение, получаете номер и токен, платите за диалоги по тарифам Meta. Второй — неофициальные библиотеки, эмулирующие WhatsApp Web (например, на базе веб-клиента).', 'Второй путь дешевле и проще на старте, но нарушает условия WhatsApp: номер могут заблокировать в любой момент без предупреждения. Для бизнеса это неприемлемо. Ниже — путь через официальный Cloud API.', '- Cloud API — легально, стабильно, но платно по диалогам.
- Неофициальные обёртки — риск бессрочного бана номера.
- Вебхуки — WhatsApp требует публичный HTTPS-эндпоинт.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для WhatsApp-ботаЧто потребуется от VPS
['Для Cloud API боту нужен публичный домен с валидным TLS-сертификатом — Meta шлёт вебхуки только на HTTPS. Значит, на VPS ставим веб-сервер, домен и certbot.', "sudo apt update && sudo apt install -y nginx python3-venv git ufw certbot python3-certbot-nginx\nsudo ufw allow OpenSSH\nsudo ufw allow 'Nginx Full'\nsudo ufw enable", 'Направьте A-запись домена на IP сервера и выпустите сертификат:', 'sudo certbot --nginx -d bot.example.com']
Приём вебхука на Flask
['Cloud API требует два обработчика: GET для верификации эндпоинта и POST для входящих сообщений. Минимальный сервер на Flask:', 'python3 -m venv ~/wa/.venv && source ~/wa/.venv/bin/activate\npip install flask requests gunicorn', "from flask import Flask, request\nimport os\napp = Flask(__name__)\nVERIFY = os.environ['VERIFY_TOKEN']\n\n@app.get('/webhook')\ndef verify():\n if request.args.get('hub.verify_token') == VERIFY:\n return request.args.get('hub.challenge'), 200\n return 'forbidden', 403\n\n@app.post('/webhook')\ndef incoming():\n data = request.get_json()\n # разбор data['entry'][0]['changes'][0]['value']['messages']\n print(data)\n return 'ok', 200", 'Запускаем через gunicorn на localhost, наружу проксирует nginx:', 'gunicorn -w 2 -b 127.0.0.1:8000 app:app']
nginx как reverse proxy
['nginx принимает HTTPS от Meta и проксирует на gunicorn. certbot уже добавил TLS-блок; добавьте location для вебхука:', 'server {\n listen 443 ssl;\n server_name bot.example.com;\n location /webhook {\n proxy_pass http://127.0.0.1:8000;\n proxy_set_header Host $host;\n proxy_set_header X-Real-IP $remote_addr;\n }\n # ssl_certificate ... (добавлено certbot)\n}', 'sudo nginx -t && sudo systemctl reload nginx']
Отправка сообщений и проверка подписи
['Ответ пользователю — POST-запрос к graph.facebook.com с токеном Cloud API:', 'curl -s -X POST \\\n "https://graph.facebook.com/v20.0/${PHONE_NUMBER_ID}/messages" \\\n -H "Authorization: Bearer ${WA_TOKEN}" \\\n -H \'Content-Type: application/json\' \\\n -d \'{"messaging_product":"whatsapp","to":"79001234567","type":"text","text":{"body":"Привет из бота"}}\'', 'Обязательно проверяйте подпись входящих вебхуков заголовком X-Hub-Signature-256 — иначе кто угодно сможет слать вам фейковые события.', "import hmac, hashlib\ndef valid(body: bytes, sig: str, secret: str) -> bool:\n mac = hmac.new(secret.encode(), body, hashlib.sha256).hexdigest()\n return hmac.compare_digest('sha256=' + mac, sig)"]
Где брать сервер и частые ошибки
['WhatsApp-боту нужен стабильный сервер с белым IP и валидным TLS — на нём держится доставка вебхуков. На тарифах MAATRIX это AMD EPYC + NVMe от $8/мес, root-доступ для nginx и certbot, локации UK и США для стабильного доступа к Graph API. Ежедневные бэкапы сохранят конфиг и токены. Оплата картой РФ, СБП, криптой или токеном MAAT.', '- Неофициальная библиотека — риск бессрочного бана бизнес-номера.
- Вебхук без TLS — Meta не подключит эндпоинт; сертификат обязателен.
- Нет проверки подписи — приём поддельных событий.
- Медленный ответ на POST — Meta ретраит вебхук; отвечайте 200 сразу, обработку выносите в очередь.
Нужен сервер под эту задачу?
Разверните VPS MAATRIX за пару минут: NVMe, AMD EPYC, root-доступ, локации UK и США. Оплата картой РФ и по СБП.
Арендовать VPS для WhatsApp-ботаЧастые вопросы
Можно ли сделать WhatsApp-бота бесплатно?
Сам сервер и код — да, но Cloud API от Meta тарифицирует диалоги. Часть сервисных сообщений бесплатна, платные диалоги считаются по прайсу Meta для вашего региона.
Почему не взять библиотеку на WhatsApp Web?
Она нарушает условия WhatsApp: номер могут заблокировать без предупреждения и без возврата. Для бизнеса используйте официальный Cloud API.
Обязателен ли домен для WhatsApp-бота?
Да. Cloud API доставляет вебхуки только на публичный HTTPS-адрес с валидным сертификатом, поэтому домен и TLS необходимы.