Skip to content

Latest commit

 

History

1 Commit

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🏆 Универсальный Чекер Email на Существование

500,000 проверок/час | Бесплатно | Максимальное покрытие доменов

📋 Содержание

  1. Быстрый старт
  2. Решения
  3. Сравнение методов
  4. Архитектура
  5. Бесплатные API

🚀 Быстрый старт

Вариант 1: Своя инфраструктура (рекомендуется для 500K/час)

# Установка зависимостей
pip install aiodns aioredis redis pycares

# Проверка одного email
python universal_email_validator.py --email test@example.com

# Проверка списка
python universal_email_validator.py --emails emails.txt --output results.json

# С Redis кэшированием
python universal_email_validator.py --emails emails.txt --redis redis://localhost:6379

Вариант 2: Бесплатные API (быстрый старт без инфраструктуры)

# Проверка через бесплатные API (без регистрации!)
python free_api_fallback.py --email test@example.com

# Проверка списка
python free_api_fallback.py --emails emails.txt --output results.json

📊 Решения

Решение 1: universal_email_validator.py ⭐ РЕКОМЕНДУЕТСЯ

Для: Высоких нагрузок (500K/час), максимального контроля

Возможности:

  • ✅ Все публичные домены (Gmail, Outlook, Yahoo, и т.д.)
  • ✅ Корпоративные домены
  • ✅ Кастомные домены
  • ✅ Disposable email detection (50+ доменов)
  • ✅ DNS/MX проверка
  • ✅ Redis кэширование
  • ✅ Асинхронная обработка (500+ параллельно)
  • ✅ 95-99% точность

Требования:

  • Python 3.8+
  • Redis (опционально, для кэширования)
  • 1-10 серверов для 500K/час

Скорость:

Конфигурация Пропускная способность
1 сервер (8 ядер) 50-100K/час
5 серверов 250-500K/час
10 серверов 500K-1M/час

Решение 2: free_api_fallback.py

Для: Быстрой проверки без инфраструктуры

Возможности:

  • ✅ Без регистрации
  • ✅ Без API ключей
  • ✅ Безлимитно (Disify)
  • ✅ Disposable detection
  • ✅ MX проверка

Ограничения:

  • Зависит от внешних API
  • Rate limits (~100/мин)
  • Не для high-volume

📈 Сравнение методов

Метод Скорость Точность Покрытие Стоимость Сложность
Наше решение 500K/час 95-99% Все домены Бесплатно Средняя
DNS/MX только 200K/час 85% Все домены Бесплатно Низкая
SMTP полный 10K/час 99% Корпоративные Бесплатно Высокая
Disify API 50K/час 85% Основные Бесплатно Низкая
ZeroBounce 30K/час 99.6% Все $$$ Низкая
Hunter.io 10K/час 96% B2B $$ Низкая

🏗️ Архитектура для 500K/час

┌─────────────────────────────────────────────────────────────────┐
│                         Load Balancer                            │
└─────────────────────────────────────────────────────────────────┘
                              │
                              ▼
┌─────────────────────────────────────────────────────────────────┐
│                     Redis (Queue + Cache)                        │
└─────────────────────────────────────────────────────────────────┘
                              │
        ┌─────────────────────┼─────────────────────┐
        │                     │                     │
        ▼                     ▼                     ▼
┌───────────────┐    ┌───────────────┐    ┌───────────────┐
│ Worker Node 1 │    │ Worker Node 2 │    │ Worker Node N │
│  100K/час    │    │  100K/час    │    │  100K/час    │
└───────────────┘    └───────────────┘    └───────────────┘
        │                     │                     │
        └─────────────────────┼─────────────────────┘
                              ▼
                    ┌─────────────────┐
                    │  IP Rotation    │
                    │  (10-25 IPs)    │
                    └─────────────────┘

Требования:

  • 5-10 worker нод
  • Redis кластер
  • 10-25 IP адресов для ротации
  • ~$250-500/мес на инфраструктуру

🔌 Бесплатные API (без регистрации)

API Лимит Features Регистрация
Disify Безлимитно Syntax, MX, Disposable ❌ Нет
OpenSource Verifier Безлимитно Syntax, MX, Typo detect ❌ Нет
DeBounce Безлимитно Disposable only ❌ Нет

Примеры использования:

# Disify (простой GET запрос)
import requests
response = requests.get(f"https://disify.com/api/email/test@example.com")
print(response.json())
# {'format': True, 'domain': 'example.com', 'disposable': False, 'dns': True}

# Bulk (до 10,000)
response = requests.get("https://disify.com/api/email/e1,e2,e3/mass")

# OpenSource Verifier
response = requests.get(
    "https://rapid-email-verifier.fly.dev/api/validate",
    params={'email': 'test@example.com'}
)

🎯 Покрытие доменов

Публичные провайдеры (автоматически определяются)

  • Gmail, Google Workspace
  • Outlook, Hotmail, Live, MSN
  • Yahoo (все домены)
  • iCloud, Me, Mac
  • ProtonMail
  • Yandex, Mail.ru
  • Zoho
  • AOL
  • И 20+ других

Корпоративные домены

  • Microsoft.com, Apple.com, Amazon.com
  • Любые домены с MX записями
  • Автоматическое определение по паттернам

Кастомные домены

  • Любые домены с правильными MX записями
  • Проверка через DNS

📁 Файлы

Файл Описание
universal_email_validator.py Основной валидатор (рекомендуется)
free_api_fallback.py Бесплатные API без инфраструктуры
BEST_EMAIL_VALIDATOR_SOLUTION.md Полная документация
README.md Этот файл

🔧 Установка и настройка

Docker (рекомендуется)

# docker-compose.yml
version: '3.8'
services:
  redis:
    image: redis:7-alpine
    ports: ["6379:6379"]
  
  validator:
    build: .
    environment:
      - REDIS_URL=redis://redis:6379
    volumes:
      - ./emails:/app/emails
# Dockerfile
FROM python:3.11-slim
WORKDIR /app
COPY requirements.txt .
RUN pip install aiodns aioredis redis pycares
COPY . .
CMD ["python", "universal_email_validator.py"]

Требования

# requirements.txt
aiodns>=3.0.0
aioredis>=2.0.0
redis>=4.5.0
pycares>=4.0.0

📊 Примеры результатов

{
  "email": "test@gmail.com",
  "status": "valid",
  "confidence": 0.85,
  "checks_passed": ["syntax", "not_disposable", "mx_records"],
  "checks_failed": [],
  "mx_records": ["gmail-smtp-in.l.google.com", "alt1.gmail-smtp-in.l.google.com"],
  "recommendation": "ACCEPT",
  "response_time_ms": 45.2
}
{
  "email": "test@mailinator.com",
  "status": "disposable",
  "confidence": 0.95,
  "checks_passed": ["syntax"],
  "checks_failed": ["Disposable domain: mailinator.com"],
  "recommendation": "REJECT"
}

🎓 Рекомендации по использованию

Сценарий Решение Уровни проверки
Форма регистрации Универсальный валидатор Syntax + MX
Очистка базы данных Универсальный валидатор Все уровни
Email маркетинг Универсальный валидатор MX + Disposable
Anti-fraud Универсальный валидатор Все + Disposable
Быстрая проверка Free API Fallback API консенсус

📈 Мониторинг

# Получение статистики
stats = validator.get_stats()
print(stats)
# {
#   'total': 10000,
#   'cached': 3500,
#   'syntax_valid': 9800,
#   'dns_lookups': 6300,
#   'errors': 12
# }

⚠️ Ограничения

  1. SMTP верификация для Gmail/Outlook часто блокируется

    • Решение: Использовать MX проверку + эвристики
  2. Rate limiting при массовых проверках

    • Решение: Ротация IP, экспоненциальный backoff
  3. Catch-all домены (принимают любой email)

    • Решение: Специальная детекция

📚 Дополнительные ресурсы

Open Source библиотеки

Disposable email списки


📄 Лицензия

MIT License - свободное использование


Готово к использованию! 🎉

Для вопросов и поддержки обращайтесь к документации в BEST_EMAIL_VALIDATOR_SOLUTION.md

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages