ZennoPoster и BAS: получение кода из почты через API

Чтобы шаблон ZennoPoster или BAS сам получил код из письма, отдельный модуль не нужен: хватит трёх HTTP-запросов к API OTPGmail и цикла ожидания. Шаблон арендует настоящий адрес @gmail.com или @icloud.com, вставляет его в форму, раз в несколько секунд спрашивает заказ и забирает код из ответа в JSON. Если код не пришёл, заказ отменяется, и деньги возвращаются на баланс.

Ниже — точные запросы, пути в JSON, фрагменты кода для обеих программ и расчёт лимитов для многопоточных шаблонов. Используйте это для автоматизации собственных сценариев: проверки регистрации на своём сайте, тестовых и рабочих аккаунтов — в рамках правил каждой платформы.

Что понадобится

Три запроса, которые нужны шаблону

1. Аренда адреса. POST https://{api_host}/v1/orders с заголовками Authorization: Bearer {api_key}, Content-Type: application/json и Idempotency-Key — уникальная строка (например, GUID) на каждый новый заказ. Тело запроса:

{"service": "git", "domain": "gmail.com"}

Ответ — список заказов, даже если ящик один:

{"success": true, "data": [{"orderId": "…", "email": "…@gmail.com", "status": "waiting_code", "otp": [], "codeDeadlineAt": 1790000000}]}

Нужные пути: data[0].orderId и data[0].email. При ошибке success равен false, а код ошибки лежит в error.code.

2. Опрос заказа. GET https://{api_host}/v1/orders/{orderId} с тем же заголовком авторизации. Пока кода нет, data.status равен waiting_code, а data.otp пуст. Когда письмо пришло, статус меняется на completed, а код появляется в data.otp[0].code; последующие коды добавляются в конец списка.

3. Отмена. POST https://{api_host}/v1/orders/{orderId}/cancel. Работает только пока кода нет и возвращает 100 % на баланс. Если код уже пришёл, придёт ошибка ORDER_NOT_CANCELLABLE.

ZennoPoster: порядок действий

  1. Действие POST-запроса: URL, заголовки и тело из пункта 1; ответ сохраните в переменную, например order_json.
  2. Разберите JSON и положите data[0].orderId в order_id, а data[0].email — в email. Если success равен false, отправьте поток в ветку ошибки.
  3. Заполните форму регистрации адресом из email и отправьте её.
  4. Запустите ожидание кода — удобнее всего одним C#-действием:
// C#-код в ZennoPoster: ждём код по заказу из переменной order_id
var wc = new System.Net.WebClient();
wc.Headers["Authorization"] = "Bearer " + project.Variables["api_key"].Value;
string url = "https://" + project.Variables["api_host"].Value + "/v1/orders/" + project.Variables["order_id"].Value;
for (int i = 0; i < 75; i++) // 75 попыток по 4 секунды — около 5 минут
{
    string json = wc.DownloadString(url);
    var m = System.Text.RegularExpressions.Regex.Match(json, "\"code\":\"([^\"]+)\"");
    if (m.Success) return m.Groups[1].Value; // код уходит в переменную результата
    if (json.Contains("\"status\":\"cancelled\"")) break;
    System.Threading.Thread.Sleep(4000);
}
return "";
  1. Если результат пустой, отправьте запрос отмены из пункта 3 — деньги вернутся сразу, не дожидаясь автоматической отмены.

BAS: порядок действий

В BrowserAutomationStudio те же шаги собираются из действий модуля HTTP-клиента и действия «Выполнить код». После POST-запроса сохраните содержимое ответа в [[ORDER_RESPONSE]] и разберите его:

// BAS, «Выполнить код»: разбираем ответ на создание заказа
var r = JSON.parse([[ORDER_RESPONSE]]);
[[OTP_ERROR]] = r.success ? "" : r.error.code;
if (r.success) {
  [[ORDER_ID]] = r.data[0].orderId;
  [[EMAIL]] = r.data[0].email;
}

Дальше — цикл: GET-запрос заказа, пауза 4 секунды и разбор ответа, пока [[CODE]] пустой и не исчерпан лимит попыток:

// BAS, «Выполнить код» внутри цикла: ищем код в ответе
var r = JSON.parse([[POLL_RESPONSE]]);
var otp = r.success ? r.data.otp : [];
[[CODE]] = otp.length ? otp[otp.length - 1].code : "";
[[STATUS]] = r.success ? r.data.status : "error";

Выходите из цикла, когда [[CODE]] не пустой или [[STATUS]] равен cancelled. Если лимит попыток исчерпан, а кода нет, отправьте запрос отмены.

Тайм-аут, отмена и возврат

Время ожидания первого кода — не более 25 минут; если код не пришёл, заказ отменяется сам, а 100 % стоимости возвращается на баланс, обычно в течение минуты. В шаблоне разумно ставить свой, более короткий тайм-аут: если сервис обычно присылает код за минуту, а прошло пять, проще отменить заказ и попробовать снова. После первого кода отмены и возврата нет.

У некоторых сервисов свои правила — например, фиксированное окно без отмены и без возврата; они показаны в описании источника до аренды. Подробности — на странице возврат и гарантия.

Ошибки, лимиты и потоки

Лимит по умолчанию — 20 запросов в секунду и 900 в минуту на ключ. Один заказ, который опрашивается раз в 4 секунды, тратит 15 запросов в минуту, поэтому одновременно можно ждать коды примерно для 60 заказов. Нужно больше — опрашивайте реже или арендуйте ящики пачкой: поле quantity принимает до 200 штук за запрос. Для сервисов, где ящики часто заканчиваются, есть параметр warehouse — он задаёт выбор источника; варианты описаны в документации API.

Правила сервисов

Аренда адреса не меняет правил платформы, в которой вы регистрируетесь. Создавайте аккаунты только в том количестве и для тех целей, которые разрешают её условия, и не используйте их для обмана людей. OTPGmail выдаёт адрес и код, но не отвечает за использование не по назначению.

Тот же процесс на Python с разбором ошибок — в инструкции API для получения кода из почты на Python, общий обзор — на странице API для почты. Ключ и баланс — в приложении OTPGmail.

Часто задаваемые вопросы

Нужен ли отдельный модуль для BAS или ZennoPoster?

Нет. API — обычный REST с JSON, поэтому хватает стандартных действий HTTP-запроса, разбора JSON и цикла.

Как часто опрашивать заказ из шаблона?

Раз в 3–5 секунд. Чаще бессмысленно: код появится не раньше, чем его отправит сервис, а лимит запросов закончится быстрее.

Что делать, если ящики для сервиса закончились?

Ответ NO_MAILS_AVAILABLE или OUT_OF_STOCK означает, что деньги не списаны. Поставьте в шаблоне паузу и повтор, попробуйте другой тип адреса или задайте параметр warehouse.

Списываются ли деньги за отменённые заказы?

Нет: отмена до первого кода и автоматическая отмена по тайм-ауту возвращают 100 % на баланс. Исключение — сервисы с собственными правилами без возврата; они отмечены до аренды.

Можно ли получить второй код на тот же адрес?

Да, если сервис отправляет больше одного кода на ящик и окно заказа ещё открыто: новые коды добавляются в конец data.otp. Многие сервисы присылают только один код.

Похожие материалы

Получите код подтверждения на настоящий Gmail

Регистрация ничего не стоит. Деньги списываются только при выдаче ящика; нет кода за время ожидания (не более 25 минут) — 100 % автоматически возвращается на баланс.

Нет нужного сервиса? Нажмите Добавить сервис на странице аренды — мы рассмотрим его добавление.

Нужен не только код, а Gmail-аккаунт, в который можно войти? Смотрите Gmail-аккаунты на короткий срок · Возврат и гарантия