Дата: 2025-11-16
Задача: Получить S3 ключи из панели Beget автоматически
Результат: ❌ Автоматизация невозможна
Метод:
curl -c cookies.txt "https://cp.beget.com/"
curl -b cookies.txt -c cookies.txt \
-X POST "https://cp.beget.com/login" \
-d "login=kondurov&passwd=$BEGET_PASSWORD" # см. .credentials.md
Результат: ❌ Ошибка
Причина:
<script>
function set_cookie(){
var now = new Date();
var time = now.getTime();
time += 19360000 * 1000;
now.setTime(time);
document.cookie='beget=begetok'+'; expires='+now.toGMTString()+'; path=/';
}
set_cookie();
location.reload();
</script>
Beget требует выполнения JavaScript для установки cookie и перезагрузки страницы.
curl НЕ ВЫПОЛНЯЕТ JavaScript.
Метод:
curl -b "beget=begetok" "https://cp.beget.com/"
Результат: ❌ Та же ошибка
Причина: Недостаточно просто установить cookie, панель проверяет:
- User-Agent браузера
- Время установки cookie
- JavaScript выполнение
- Возможно, другие fingerprint-параметры
Метод:
from playwright.sync_api import sync_playwright
with sync_playwright() as p:
browser = p.chromium.launch(headless=True)
page = browser.new_page()
page.goto("https://cp.beget.com/")
page.wait_for_load_state("networkidle")
login_field = page.query_selector('input[name="login"]')
password_field = page.query_selector('input[name="passwd"]')
Результат: ❌ Страница пустая
Полученный HTML:
<html><head></head><body></body></html>
Причина:
- Панель Beget блокирует headless браузеры
- JavaScript не загружается в headless режиме
- Возможна защита от автоматизации (CloudFlare, или похожая)
Метод:
WebFetch("https://cp.beget.com/", "...")
Результат: ❌ Только JavaScript код установки cookie
Причина: WebFetch тоже не выполняет динамический JavaScript с перезагрузкой
JavaScript защита
- Панель требует выполнения JS для установки cookie
- После установки cookie требуется перезагрузка страницы
- Это цикл: cookie → reload → проверка → контент
Headless detection
- Playwright headless mode блокируется
- Возможно проверяется navigator.webdriver
- Возможна защита от автоматизации
Fingerprinting
- Панель может проверять браузерный fingerprint
- User-Agent, WebGL, Canvas, шрифты и т.д.
Playwright в НЕ-headless режиме
- Требует графического окружения (X11)
- На сервере без GUI не работает
- Можно через Xvfb, но сложно и ненадёжно
Selenium с реальным браузером
- Та же проблема с GUI
- Медленнее Playwright
- Может блокироваться webdriver detection
Puppeteer с stealth plugin
- Обход headless detection
- Но всё равно нужен GUI или Xvfb
- Сложная настройка
Запрос к Beget API напрямую
- Beget API (https://api.beget.com) НЕ предоставляет методов для S3
- API для управления хостингом, не S3
Инструкция создана: $WORKSPACE/infra/infra-s3-beget/docs/MANUAL_SETUP.md
Шаги:
1. Открыть https://cp.beget.com/ в браузере
2. Войти (kondurov / см. .credentials.md)
3. Найти раздел "S3"
4. Создать ключ "nomenclature-exchange"
5. Скопировать Access Key ID и Secret Access Key
6. Передать мне
Время: 5 минут
Сложность: Минимальная
Путь: $WORKSPACE/infra/infra-file-exchange/
Готовые скрипты:
- scripts/mount_remote.sh - Linux (SSHFS)
- solution/sync_windows.ps1 - Windows (PowerShell + SCP)
- solution/sync_server.sh - Server (автообработка)
Преимущества:
- Работает СЕЙЧАС
- Не нужны дополнительные ключи
- Простая настройка
Недостатки vs S3:
- Нет версионирования
- Нет автоархивирования
- Требует SSH доступ (уже есть)
Автоматизация доступа к панели Beget для получения S3 ключей технически невозможна без:
- Реального браузера с GUI
- Сложной настройки обхода защиты (Xvfb + stealth plugin)
- Нарушения ToS хостинга (автоматизация может быть запрещена)
Решение: Ручное получение ключей (5 минут) или использование готового SSH решения.
Попытки: 4
Время затрачено: ~30 минут
Статус: Невозможно автоматизировать
Рекомендация: Ручное получение