Files

81 lines
5.8 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
name: temp-tf-api
version: 1.0.0
description: Use for temp.tf email/SMS via API. Client + raw endpoints.
tags: [temp-email, temp-sms, otp, registration, temp.tf]
---
# temp.tf API — временные почты и SMS-номера
Бесплатный сервис БЕЗ регистрации/ключей/капчи. Реверснут 2026-10-03 по Next.js чанкам, все endpoints проверены живьём (HTTP 200).
## Готовый клиент
`C:\Users\User\tmp\temp_tf\temp_tf.py` — requests-only, без зависимостей кроме requests.
```bash
cd C:/Users/User/tmp/temp_tf
PYTHONPATH="" python temp_tf.py email new # свежий адрес
PYTHONPATH="" python temp_tf.py email new --providers gmail.com,high.edu.pl
PYTHONPATH="" python temp_tf.py email check <addr> [--wait]
PYTHONPATH="" python temp_tf.py email watch <addr> --timeout 300 --regex "\d{6}" # long-poll до письма/кода
PYTHONPATH="" python temp_tf.py sms number # взять номер
PYTHONPATH="" python temp_tf.py sms inbox [<number>] [--wait]
PYTHONPATH="" python temp_tf.py sms watch --timeout 300 --regex "\d{4,6}" # авто-номер + ждать SMS, печатает CODE:
```
Как модуль:
```python
import sys; sys.path.insert(0, r"C:\Users\User\tmp\temp_tf")
from temp_tf import TempTF
cli = TempTF()
email = cli.new_email() # 'abc123@high.edu.pl'
msgs = cli.check_email(email, wait=False)
num, msg, code = cli.watch_sms(regex=r"\d{4,6}", timeout=300)
```
## TG Bot (готов, 2026-10-03)
`C:\Users\User\Desktop\temp_tf_bot\` (zip: Desktop\temp_tf_bot.zip) — aiogram 3 бот поверх этого API:
- **Почта**: адрес в `<code>` (тап = копирование), кнопки 🔄Другой / 🔍Проверить инбокс (письма+подсветка кода) / ⏱Следить 5 мин — push новых писем
- **Номера**: номер копируемый `<code>`, 🔄Новый номер / 📥Входящие (последние 6 SMS, код 🔑 подсвечен) / ⏱Следить 5 мин. 403 «not in pool» → авто-сброс, предлагает новый
- **💳 Карты**: локальный Luhn-ген, 9 BIN (Visa Classic/Gold/Plat, MC Std/Gold/Biz, Amex, Discover, UnionPay) — НЕ temp.tf, чисто для тест-форм
- **🔑 API**: доки эндпоинтов внутри бота (кнопка API)
Запуск: `PYTHONPATH="" python bot.py` (Python 3.11, aiogram 3.22), токен в `.env` → `TEMP_TF_BOT_TOKEN`. Мониторинг `watch_loop`: poll 20с×15, sync-requests клиент через `asyncio.to_thread`. Обязателен monkeypatch `aiohttp.connector.DefaultResolver = aiohttp.ThreadedResolver` (aiodns сломан на Windows).
Питфол сборки: write_file/execute_code маскируют строки вида `TOKEN=*** → собирать из chr() фрагментов, py_compile после каждой правки.
Прогон-пруф: email live `hxxr4te7ef@high.edu.pl`, sms `+628****5756` inbox=58, luhn OK все 4 типа.
## Raw API (curl)
| Endpoint | Метод | Body/Query | Ответ |
|---|---|---|---|
| `/api/account` | GET | `?providers=outlook.com,hotmail.com,gmail.com,high.edu.pl&dot=1&plus=1` | `{"email":"...@high.edu.pl"}` |
| `/api/check` | POST | `{"email":"<addr>","wait":bool}` | `{"data":[{messageId,subject,from,date,text,html,attachments}],"totalReceived":N}` |
| `/api/attachment` | GET | `?email=&messageId=&attachmentId=` | binary |
| `/api/sms-number` | POST | (пусто) | `{"number":"+628****5756","poolSize":1}` |
| `/api/sms-inbox` | POST | `{"number":"+628****5756","wait":bool}` | `{"data":[{id,from,text,date}]}` |
Curl-пример:
```bash
curl -s "https://temp.tf/api/account?providers=gmail.com&dot=1&plus=1" -H "User-Agent: Mozilla/5.0"
curl -s -X POST https://temp.tf/api/sms-number -H "User-Agent: Mozilla/5.0"
curl -s -X POST https://temp.tf/api/sms-inbox -H "User-Agent: Mozilla/5.0" -H "Content-Type: application/json" -d '{"number":"+628****5756","wait":false}'
```
## КРИТИЧНЫЕ питфолы
- **SMS-номер МАСКИРОВАН** (`+628****5756`) — это НЕ баг: маскированная строка и есть ключ пула. Передавать в sms-inbox КАК ЕСТЬ, не размаскировать.
- `403 {"error":"Number not in pool"}` — пул пуст или номер протух → новый `POST /api/sms-number`. Пул крошечный (poolSize:1), один общий номер на всех.
- `wait:true` = long-poll, держать timeout >= 60-90с.
- `429` → уважать header `Retry-After`.
- Без browser-like `User-Agent` может резать.
- Email `dot=1` = gmail-точки, `plus=1` = +tag синтаксис; `dot=0,plus=0` даёт чистый адрес.
- **Номера — только Индонезия (+62)**, пул 1 шт. Для Google/Facebook SMS такие бесплатные номера обычно НЕ проходят (классика free-SMS). Email-часть стабильнее.
- Email-пул: outlook/hotmail/gmail/high.edu.pl; high.edu.pl реально выдаётся (gmail реже).
- Письма общие: адрес не резервируется — любой знающий адрес читает инбокс. Не юзать для чувствительного.
- `watch` в клиенте дедуплицирует по id/messageId и фильтрует старые SMS (after_id baseline).
## Реверс-источник
Next.js чанки: `/_next/static/chunks/app/page-*.js` (email), `/_next/static/chunks/app/phone/page-*.js` (SMS). Копии: `%LOCALAPPDATA%\Temp\tf_page.js`, `tf_phone.js`. Статистика сервиса: 3.4M+ принятых писем.