Files
Solo_bot/utils/disposable_emails.py
T
2026-04-14 07:19:14 +00:00

176 lines
3.9 KiB
Python

from logger import logger
_BUILTIN_DOMAINS: set[str] = {
"mailinator.com",
"guerrillamail.com",
"guerrillamail.de",
"guerrillamail.net",
"guerrillamail.org",
"guerrillamailblock.com",
"grr.la",
"sharklasers.com",
"guerrillamail.info",
"tempmail.com",
"temp-mail.org",
"temp-mail.io",
"throwaway.email",
"fakeinbox.com",
"tempail.com",
"tempr.email",
"dispostable.com",
"yopmail.com",
"yopmail.fr",
"yopmail.net",
"cool.fr.nf",
"jetable.fr.nf",
"nospam.ze.tc",
"nomail.xl.cx",
"mega.zik.dj",
"speed.1s.fr",
"courriel.fr.nf",
"moncourrier.fr.nf",
"monemail.fr.nf",
"monmail.fr.nf",
"hide.biz.st",
"mytrashmail.com",
"mailnesia.com",
"maildrop.cc",
"discard.email",
"discardmail.com",
"discardmail.de",
"trashmail.com",
"trashmail.me",
"trashmail.net",
"trashmail.org",
"trashmail.at",
"trashmail.io",
"trashmail.ws",
"trash-mail.com",
"trash-mail.at",
"trashemail.de",
"mailcatch.com",
"mailscrap.com",
"mailforspam.com",
"spamgourmet.com",
"spamgourmet.net",
"spamgourmet.org",
"mailexpire.com",
"tempinbox.com",
"tempomail.fr",
"10minutemail.com",
"10minutemail.co.za",
"10minutemail.net",
"minutemail.io",
"emailondeck.com",
"getnada.com",
"mohmal.com",
"burnermail.io",
"inboxbear.com",
"mailsac.com",
"harakirimail.com",
"33mail.com",
"maildax.com",
"crazymailing.com",
"mailtemp.info",
"emkei.cz",
"example.com",
"test.com",
"mailinator.net",
"binkmail.com",
"bobmail.info",
"chammy.info",
"devnullmail.com",
"letthemeatspam.com",
"mailnull.com",
"nomail.pw",
"nowmymail.com",
"rmqkr.net",
"spamfree24.org",
"spamhereplease.com",
"tempmailaddress.com",
"wegwerfmail.de",
"wegwerfmail.net",
"wh4f.org",
"mailzilla.com",
"anonbox.net",
"bspamfree.org",
"kurzepost.de",
"objectmail.com",
"proxymail.eu",
"rcpt.at",
"reallymymail.com",
"recode.me",
"regbypass.com",
"s0ny.net",
"safetymail.info",
"safetypost.de",
"shieldedmail.com",
"sogetthis.com",
"soodonims.com",
"spambox.us",
"spamcero.com",
"spamday.com",
"spamex.com",
"spamfighter.cf",
"spamfighter.ga",
"spamfighter.gq",
"spamfighter.ml",
"spamfighter.tk",
"spamhole.com",
"spaml.com",
"spaml.de",
"uggsrock.com",
"uroid.com",
"veryreallymymail.com",
"viditag.com",
"vomoto.com",
"vpn.st",
"vsimcard.com",
"vubby.com",
"vztc.com",
"wasteland.rfc822.org",
"webemail.me",
"zetmail.com",
"zippymail.info",
"mailnator.com",
"mailtothis.com",
"mx0.wwwnew.eu",
"mypartyclip.de",
"myzx.com",
"nb.gy",
"nobulk.com",
"noclickemail.com",
"nogmailspam.info",
"nomorespamemails.com",
"nothingtoseehere.ca",
}
_loaded_extra = False
_extra_domains: set[str] = set()
def _load_extra() -> None:
global _loaded_extra, _extra_domains
if _loaded_extra:
return
_loaded_extra = True
try:
from config import DISPOSABLE_EMAIL_BLOCKLIST_EXTRA
if isinstance(DISPOSABLE_EMAIL_BLOCKLIST_EXTRA, list | set | tuple):
_extra_domains = {d.strip().lower() for d in DISPOSABLE_EMAIL_BLOCKLIST_EXTRA if isinstance(d, str)}
if _extra_domains:
logger.info("[DisposableEmail] загружено {} дополнительных доменов", len(_extra_domains))
except (ImportError, AttributeError):
pass
def is_disposable_email(email: str) -> bool:
"""Проверяет, является ли email одноразовым."""
_load_extra()
domain = email.strip().lower().rsplit("@", 1)[-1] if "@" in email else ""
if not domain:
return False
return domain in _BUILTIN_DOMAINS or domain in _extra_domains