Skip to main content

A high-performance, async Yahoo Mail login automator.

Project description

yahoomail

⚡ A fast and stealthy Python login checker for Yahoo Mail accounts bypasses multi-step login flow, device fingerprint challenges, and delivers accurate status in milliseconds.


🚀 Features

  • 🔁 Fully asynchronous (via httpx.AsyncClient)
  • 🔍 Fast-path + fallback HTML form parsing
  • 🔐 Bypasses Yahoo's anti-bot login system
  • 🎯 Precise detection: SUCCESS, INVALID, 2FA, ERROR, UNKNOWN
  • 🧠 Regex-based turbo form extraction (1-pass)
  • 🌐 Proxy support: http, socks5, with multiple formats
  • 📡 Optimized headers & fingerprint handling
  • 🧪 Debug-ready (optional HTML dumps at every step)
  • 📦 Includes batch checker with configurable concurrency

📦 Installation

pip install yahoomail Or clone locally:

git clone https://github.com/anarchy223/yahoomail.git
cd yahoomail
pip install -r requirements.txt

🆕 What's New in v1.1

🛠️ Core Improvements

  • Smart Debugging: The debug=True flag now generates a sequential timeline of HTML snapshots (e.g., user_01_init.html, user_02_post.html) inside a debug/ directory.
  • Sanitization: Usernames are now sanitized before file creation to prevent filesystem errors.

🛡️ Detection Logic

  • Wider Coverage: Added support for new Yahoo error codes:
    • messages.INVALID_USERNAME & doesn't recognize this email
    • messages.INVALID_PASSWORD detection expanded.

⚡ Performance

  • Timeout Adjustment: Relaxed HTTP timeouts (connect=5.0, read=10.0) to reduce false positives with high-latency proxies.
  • Batch Optimization: Debug mode is automatically disabled in batch operations to prevent disk usage spikes.

⚙️ Usage

✅ Basic login check

from yahoomail import login

email = input("Enter Yahoo email: ")
password = input("Enter password: ")

status, message, duration_ms = login(email, password)
print(f"[{status}] {message} ({duration_ms}ms)")

🌍 Set a proxy

You can use the function: set_proxies("YOUR PROXY") to set a proxy. Here an example:

import asyncio
from yahoomail import set_proxies, run_batch

set_proxies("user:pass@host:port")

def load_combos(file_path):
    combos = []
    with open(file_path, "r", encoding="utf-8") as f:
        for line in f:
            line = line.strip()
            if not line or ":" not in line:
                continue
            email, password = line.split(":", 1)
            combos.append((email, password))
    return combos

creds = load_combos("combo.txt")
results = asyncio.run(run_batch(creds, concurrency=10))

for email, status, message in results:
    print(f"{email}{status}: {message}")

Supports formats :

  • user:pass@host:port
  • host:port
  • host,port,user,pass
  • host:port:user:pass

🚀 Batch checking (async)

import asyncio
from yahoomail import run_batch

def load_acc(file_path):
    combos = []
    with open(file_path, "r", encoding="utf-8") as f:
        for line in f:
            line = line.strip()
            if not line or ":" not in line:
                continue  
            email, password = line.split(":", 1)
            combos.append((email, password))
    return combos

creds = load_acc("accounts.txt")
results = asyncio.run(run_batch(creds, concurrency=10))
for email, status, message in results:
    print(f"{email}{status}: {message}")
Code Meaning
SUCCESS Valid login detected (your accounts is mostly valid!)
Invalid Invalid account
2FA 2-Factor Authentification (or means other errors)
Error Proxy / network / internal error (Or just Yahoo maybe implemented another level cap of security (ya need to check).
Unkown I fucked up...

🧰 Advanced

Enable debug HTML saves: Uncomment or modify the global flag in your script:

ENABLE_DEBUG_FILES = True

It will save HTML dumps per stage for inspection (eg: new security...)

🧠 How it works

This module emulates Yahoo Mail login behavior by reproducing:

  • Initial tokenized form loads
  • Username + password flow separation
  • Dynamic fingerprinting step
  • Cookie-based login validation
  • Full proxy routing with timeout handling
  • No Selenium. No headless browser. Just pure, clean HTTP emulation.

📜 License

Creative Commons Attribution-NonCommercial-ShareAlike 4.0 (CC BY-NC-SA 4.0)

  • ✅ You can use, study, modify, and share this project.
  • Commercial use (resale, SaaS integration, paid API, etc.) is strictly prohibited.
  • 🧠 You must give credit to the original author.
  • 🔁 If you modify it, you must release your version under the same license.

🔗 Read the full license terms here

☕ A note

This project was born from one simple idea: "If there's no public API... then I become the API."

Enjoy.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

yahoomail-1.1.1.1.tar.gz (6.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

yahoomail-1.1.1.1-py3-none-any.whl (6.0 kB view details)

Uploaded Python 3

File details

Details for the file yahoomail-1.1.1.1.tar.gz.

File metadata

  • Download URL: yahoomail-1.1.1.1.tar.gz
  • Upload date:
  • Size: 6.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for yahoomail-1.1.1.1.tar.gz
Algorithm Hash digest
SHA256 24e7e0497ba9fe2c386540773dcd688f0520f0396b3db021942c177e9dda29e5
MD5 91a7a7d50c71f97180da606a58a925cf
BLAKE2b-256 132c63a804114893d8dde913dffb5c21ae5aa54b5c228fb87222c0682c6eb7a0

See more details on using hashes here.

File details

Details for the file yahoomail-1.1.1.1-py3-none-any.whl.

File metadata

  • Download URL: yahoomail-1.1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 6.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.12.2

File hashes

Hashes for yahoomail-1.1.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 2684c57032b06460e75da3d1fa5c77421e027b0669f163c11b17665105be750e
MD5 85e31f6a9752be5248f596cf0eb90a92
BLAKE2b-256 c90bab50ac8a4f41230752036e26b40fb50abee3b38946d76aa079ec9176ee1c

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page