Files
Solo_bot/utils/disposable_emails.py
T

79 lines
3.6 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",
"sharklasers.com", "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",
"nomail.xl.cx", "nomorespamemails.com",
"nospam.ze.tc", "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