Современная асинхронная Python библиотека для работы с REGHelp Key API
Project description
REGHelp Python Client / REGHelp Python Client (Русская версия ниже)
📑 Table of contents / Содержание
- Features
- Installation
- Quick start
- What's new
- Environment variables
- Testing
- Contributing
- FAQ
- Changelog
🇬🇧 English
Modern asynchronous Python library for interacting with the REGHelp Key API. It supports all services: Push tokens, Email, Integrity, Turnstile, VoIP Push and Recaptcha Mobile.
🚀 Features
- Asynchronous first – full
async/awaitsupport powered byhttpx. - Type-safe – strict typing with Pydantic data models.
- Retries with exponential back-off built-in.
- Smart rate-limit handling (50 requests per second).
- Async context-manager for automatic resource management.
- Webhook support out of the box.
- Comprehensive error handling with dedicated exception classes.
🆕 What's new in 1.2.0
- Standard Integrity tokens – request them via
get_integrity_token(..., token_type="std"). - IntegrityTokenType enum for type-safe token type selection.
- Public exports for
AppDevice,IntegrityStatusResponse,VoipStatusResponse,IntegrityTokenTypedirectly from package root. get_integrity_token()now uses keyword-only parameters for new options while remaining backward compatible.
📦 Installation
pip install reghelp-client
For development:
pip install "reghelp-client[dev]"
🔧 Quick start
import asyncio
from reghelp_client import RegHelpClient, AppDevice, EmailType
async def main():
async with RegHelpClient("your_api_key") as client:
# Check balance
balance = await client.get_balance()
print(f"Balance: {balance.balance} {balance.currency}")
# Get Telegram iOS push token
task = await client.get_push_token(
app_name="tgiOS",
app_device=AppDevice.IOS
)
print(f"Push token: {task.token}")
# Wait for result
result = await client.wait_for_result(task.id, "push")
print(f"Push token: {result.token}")
if __name__ == "__main__":
asyncio.run(main())
RU Русская версия
Современная асинхронная Python библиотека для работы с REGHelp Key API. Поддерживает все сервисы: Push tokens, Email, Integrity, Turnstile, VoIP Push, Recaptcha Mobile.
🚀 Возможности
- Асинхронность: Полная поддержка async/await
- Типизация: Полная типизация с Pydantic моделями
- Retry логика: Автоматические повторы с exponential backoff
- Rate limiting: Умная обработка rate limits (50 rps)
- Context manager: Поддержка async context manager
- Webhook support: Поддержка webhook уведомлений
- Comprehensive error handling: Детальная обработка всех ошибок API
🆕 Что нового в 1.2.0
- Стандартные Integrity-токены — используйте параметр
token_type="std"в методеget_integrity_token(). - Новый перечислитель IntegrityTokenType для строгой типизации.
- Экспорт
AppDevice,IntegrityStatusResponse,VoipStatusResponse,IntegrityTokenTypeиз корневого пакета. - Сигнатура
get_integrity_token()использует keyword-only параметры для новых опций, сохраняя совместимость с существующим кодом.
📦 Установка
pip install reghelp-client
Или для разработки:
pip install reghelp-client[dev]
🔧 Быстрый старт
import asyncio
from reghelp_client import RegHelpClient, AppDevice, EmailType
async def main():
async with RegHelpClient("your_api_key") as client:
# Проверить баланс
balance = await client.get_balance()
print(f"Баланс: {balance.balance} {balance.currency}")
# Получить push токен для Telegram iOS
task = await client.get_push_token(
app_name="tgiOS",
app_device=AppDevice.IOS
)
print(f"Задача создана: {task.id}")
# Ждать результат
result = await client.wait_for_result(task.id, "push")
print(f"Push токен: {result.token}")
if __name__ == "__main__":
asyncio.run(main())
📚 Документация API
Инициализация клиента
from reghelp_client import RegHelpClient
# Базовое использование
client = RegHelpClient("your_api_key")
# С кастомными настройками
client = RegHelpClient(
api_key="your_api_key",
base_url="https://api.reghelp.net",
timeout=30.0,
max_retries=3,
retry_delay=1.0
)
# Использование как context manager (рекомендуется)
async with RegHelpClient("your_api_key") as client:
# Ваш код здесь
pass
📱 Push Tokens
Получение push токена
from reghelp_client import AppDevice
# Для Telegram iOS
task = await client.get_push_token(
app_name="tgiOS",
app_device=AppDevice.IOS,
app_version="10.9.2",
app_build="25345",
ref="my_ref_tag"
)
# Для Telegram Android
task = await client.get_push_token(
app_name="tg",
app_device=AppDevice.ANDROID
)
# Проверить статус
status = await client.get_push_status(task.id)
if status.status == "done":
print(f"Токен: {status.token}")
Поддерживаемые приложения
| Platform | app_name | Bundle ID |
|---|---|---|
| Android | tg |
org.telegram.messenger |
| Android | tg_beta |
org.telegram.messenger.beta |
| Android | tg_web |
org.telegram.messenger.web |
| Android | tg_x |
org.thunderdog.challegram |
| iOS | tgiOS |
ph.telegra.Telegraph |
Отметка неуспешного токена
from reghelp_client import PushStatusType
# Если токен оказался неработающим
await client.set_push_status(
task_id="task_id",
phone_number="+15551234567",
status=PushStatusType.NOSMS
)
📧 Email Service
from reghelp_client import EmailType
# Получить временный email
email_task = await client.get_email(
app_name="tg",
app_device=AppDevice.IOS,
phone="+15551234567",
email_type=EmailType.ICLOUD
)
print(f"Email: {email_task.email}")
# Ждать код подтверждения
email_status = await client.wait_for_result(email_task.id, "email")
print(f"Код: {email_status.code}")
🔒 Integrity Service
import base64
# Генерируем nonce
nonce = base64.urlsafe_b64encode(b"your_nonce_data").decode()
# Получить integrity токен
integrity_task = await client.get_integrity_token(
app_name="tg",
app_device=AppDevice.ANDROID,
nonce=nonce
)
# Ждать результат
result = await client.wait_for_result(integrity_task.id, "integrity")
print(f"Integrity токен: {result.token}")
🤖 Recaptcha Mobile
from reghelp_client import ProxyConfig, ProxyType
# Настройка прокси
proxy = ProxyConfig(
type=ProxyType.HTTP,
address="proxy.example.com",
port=8080,
login="username", # опционально
password="password" # опционально
)
# Решить recaptcha
recaptcha_task = await client.get_recaptcha_mobile_token(
app_name="org.telegram.messenger",
app_device=AppDevice.ANDROID,
app_key="6Lc-recaptcha-site-key",
app_action="login",
proxy=proxy
)
# Ждать результат
result = await client.wait_for_result(recaptcha_task.id, "recaptcha")
print(f"Recaptcha токен: {result.token}")
🔐 Turnstile
# Решить Cloudflare Turnstile
turnstile_task = await client.get_turnstile_token(
url="https://example.com/page",
site_key="0x4AAAA...",
action="login",
proxy="http://proxy.example.com:8080" # опционально
)
# Ждать результат
result = await client.wait_for_result(turnstile_task.id, "turnstile")
print(f"Turnstile токен: {result.token}")
📞 VoIP Push
# Получить VoIP push токен
voip_task = await client.get_voip_token(
app_name="tgiOS",
ref="voip_ref"
)
# Ждать результат
result = await client.wait_for_result(voip_task.id, "voip")
print(f"VoIP токен: {result.token}")
🔄 Автоматическое ожидание результата
# Автоматически ждать выполнения задачи
result = await client.wait_for_result(
task_id="task_id",
service="push", # push, email, integrity, recaptcha, turnstile, voip
timeout=180.0, # максимальное время ожидания
poll_interval=2.0 # интервал между проверками
)
🪝 Webhook поддержка
# Создать задачу с webhook
task = await client.get_push_token(
app_name="tgiOS",
app_device=AppDevice.IOS,
webhook="https://yourapp.com/webhook"
)
# Когда задача завершится, на указанный URL придет POST запрос
# с JSON данными аналогичными ответу get_status
🚨 Обработка ошибок
from reghelp_client import (
RegHelpError,
RateLimitError,
UnauthorizedError,
TaskNotFoundError,
NetworkError
)
try:
task = await client.get_push_token("tgiOS", AppDevice.IOS)
except RateLimitError:
print("Превышен лимит запросов (50/сек)")
except UnauthorizedError:
print("Неверный API ключ")
except TaskNotFoundError as e:
print(f"Задача не найдена: {e.task_id}")
except NetworkError as e:
print(f"Сетевая ошибка: {e}")
except RegHelpError as e:
print(f"API ошибка: {e}")
⚙️ Конфигурация
Логирование
import logging
# Включить debug логи
logging.basicConfig(level=logging.DEBUG)
logger = logging.getLogger("reghelp_client")
Кастомный HTTP клиент
import httpx
# Использовать свой HTTP клиент
custom_client = httpx.AsyncClient(
timeout=60.0,
verify=False # отключить SSL проверку (не рекомендуется)
)
client = RegHelpClient(
api_key="your_api_key",
http_client=custom_client
)
🧪 Примеры для разных случаев
Массовое получение токенов
import asyncio
async def get_multiple_tokens():
async with RegHelpClient("your_api_key") as client:
# Создать несколько задач параллельно
tasks = await asyncio.gather(*[
client.get_push_token("tgiOS", AppDevice.IOS)
for _ in range(5)
])
# Ждать все результаты
results = await asyncio.gather(*[
client.wait_for_result(task.id, "push")
for task in tasks
])
for i, result in enumerate(results):
print(f"Токен {i+1}: {result.token}")
Работа с балансом
async def manage_balance():
async with RegHelpClient("your_api_key") as client:
balance = await client.get_balance()
if balance.balance < 10:
print("Низкий баланс! Пополните аккаунт")
return
print(f"Текущий баланс: {balance.balance} {balance.currency}")
Обработка длительных операций
async def long_running_task():
async with RegHelpClient("your_api_key") as client:
task = await client.get_push_token("tgiOS", AppDevice.IOS)
# Проверять статус с кастомным интервалом
while True:
status = await client.get_push_status(task.id)
if status.status == "done":
print(f"Готово! Токен: {status.token}")
break
elif status.status == "error":
print(f"Ошибка: {status.message}")
break
print(f"Статус: {status.status}")
await asyncio.sleep(5) # проверять каждые 5 секунд
📋 Требования
- Python 3.8+
- httpx >= 0.27.0
- pydantic >= 2.0.0
📄 Лицензия
MIT License. См. LICENSE для деталей.
🤝 Поддержка
- Документация: https://reghelp.net/api-docs
- Поддержка: support@reghelp.net
- Issues: https://github.com/REGHELPNET/reghelp_client/issues
🌐 Environment variables / Переменные окружения
| Variable | Description | Example |
|---|---|---|
REGHELP_API_KEY |
Your personal API key | demo_123abc |
REGHELP_BASE_URL |
Override base URL if you host a private mirror | https://api.reghelp.net |
REGHELP_TIMEOUT |
Default request timeout in seconds | 30 |
REGHELP_MAX_RETRIES |
Max automatic retries on network errors | 3 |
💡 Tip: you can create a
.envfile and load it with python-dotenv.
🧪 Testing / Тестирование
# clone repo and install dev extras
git clone https://github.com/REGHELPNET/reghelp_client.git
cd reghelp_client
pip install -e ".[dev]"
# unit tests + coverage
pytest -v --cov=reghelp_client --cov-report=term-missing
Additional commands:
- Formatting –
black reghelp_client/ tests/ - Linting –
ruff check reghelp_client/ tests/ examples/ - Type checking –
mypy reghelp_client/
🛠️ Contributing / Вклад
- Fork the repository and create your branch:
git checkout -b feat/my-feature - Install dev dependencies:
pip install -e ".[dev]" - Run
pre-commit installto enable hooks. - Ensure tests & linters pass:
pytest && ruff check . && mypy . - Submit a pull-request with a clear description of your changes.
We follow Conventional Commits for commit messages and the Black code style.
❓ FAQ / Часто задаваемые вопросы
How do I increase the request timeout?
client = RegHelpClient("api_key", timeout=60.0)
Does the client support synchronous code?
No, the library is asynchronous-first. You can run it in synchronous code with asyncio.run().
What is the difference between `Integrity` and `SafetyNet`?
Integrity refers to Google Play Integrity API while SafetyNet is deprecated. REGHelp supports the new Integrity API.
🗒️ Changelog
See CHANGELOG.md for a complete release history.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file reghelp_client-1.2.0.tar.gz.
File metadata
- Download URL: reghelp_client-1.2.0.tar.gz
- Upload date:
- Size: 21.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
1dfe66190be23a9116c0d1c52d4bd324419321b9fd69d920c0508d9b3ebf01d1
|
|
| MD5 |
6f925e0c6bdfccc0bdc182a1f07da0b8
|
|
| BLAKE2b-256 |
cf11330647eeed06efeb525161107576ede307ff02575eef9e583428f9ed2d45
|
File details
Details for the file reghelp_client-1.2.0-py3-none-any.whl.
File metadata
- Download URL: reghelp_client-1.2.0-py3-none-any.whl
- Upload date:
- Size: 17.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.13
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
4e63cc285b82e0d5114798df205e8103e15f146f06ee2d59c3fc8103f29553d7
|
|
| MD5 |
29018dcc9b5cb2bd28d445b7e258f8e6
|
|
| BLAKE2b-256 |
768c0f837cb6865cae531cda209e173d2ca65fee37ebb9d11162b6c04f240009
|