High-performance Instagram password reset sender - Sync (threading) & Async (aiohttp) versions with proxy/user-agent rotation
Project description
Cevreset 🚀
Instagram password reset request sender - High-performance sync & async versions
⚡ Features
Sync Version (Threading)
- ✅ Multi-threaded concurrent requests (6 threads default)
- ✅ Thread isolation with separate session per thread
- ✅ Per-thread CSRF token management
- ✅ Context manager support (
withstatement) - ✅ Proxy rotating support
- ✅ User-Agent rotation (5+ Android variants)
- ✅ Header diversification (13+ randomized fields)
- ✅ Logging system (DEBUG/INFO/WARNING/ERROR)
- ✅ Ninja mode (silent operation)
- ✅ Optimized timeout (per-request control)
Async Version (New! ⚡ 3-4x Faster!)
- ✅ 50+ concurrent tasks (default, configurable 100+)
- ✅ CSRF token caching (shared across all tasks)
- ✅ Full parallel batch processing
- ✅ aiohttp high-performance HTTP
- ✅ asyncio event loop
- ✅ Connection pooling optimization
- ✅ Semaphore-based concurrency control
- ✅ Same API as sync version (just
awaitit!)
📊 Performance Comparison
| Metric | Sync (Threading) | Async (aiohttp) | Improvement |
|---|---|---|---|
| Single request | 1-2s | 0.5-1s | 2x faster |
| Batch (6 targets) | 12-15s | 2-4s | 4x faster |
| Batch (100 targets) | ❌ Impossible | 5-15s | New Capability |
| Memory | Baseline | -50% | Much Better |
| CPU Usage | Baseline | -70% | Much Better |
| Max Concurrent | 6 | 100+ | 16x More |
Bottom line: Use async version for everything! 🚀
📦 Installation
Basic (Sync version only)
pip install cevreset
With Async Support (Recommended ⭐)
pip install cevreset
aiohttp will be installed automatically. Or:
pip install cevreset aiohttp
🚀 Quick Start
Async Version (Recommended!)
import asyncio
from cevreset_async import AsyncInstagramResetClient
async def main():
# Single request
async with AsyncInstagramResetClient(concurrent=50) as client:
email = await client.send_reset_request(
"username",
ninja=True, # Silent mode
extract="contact_point" # Extract email
)
print(email) # "user@gmail.com" or None
# Batch - fully parallel!
async with AsyncInstagramResetClient(concurrent=50) as client:
results = await client.send_reset_requests(
["user1", "user2", "user3", ..., "user100"],
ninja=True,
extract="contact_point"
)
for username, email in results.items():
print(f"{username}: {email}")
asyncio.run(main())
Sync Version (Threading)
from cevreset import InstagramResetClient
# Basic usage
with InstagramResetClient(threads=6) as client:
email = client.send_reset_request(
"username",
ninja=True, # Silent mode
extract="contact_point" # Extract email
)
print(email) # "user@gmail.com" or None
📖 Common Examples
Get Email Address
import asyncio
from cevreset_async import AsyncInstagramResetClient
async def get_email():
async with AsyncInstagramResetClient() as client:
email = await client.send_reset_request(
"target_username",
extract="contact_point", # Get the email
ninja=True # Silent
)
if email:
print(f"Email: {email}")
asyncio.run(get_email())
Process Multiple Targets
import asyncio
from cevreset_async import AsyncInstagramResetClient
async def batch_process():
targets = ["user1", "user2", "user3", "user4", "user5"]
async with AsyncInstagramResetClient(concurrent=50) as client:
results = await client.send_reset_requests(
targets=targets,
extract="contact_point",
ninja=True, # Silent
verbose=False # No progress
)
for username, email in results.items():
if email:
print(f"{username}: {email}")
asyncio.run(batch_process())
High-Speed Batch (100+ targets)
import asyncio
from cevreset_async import AsyncInstagramResetClient
async def high_speed():
# 1000 targets processed concurrently!
targets = [f"user_{i}" for i in range(1, 1001)]
async with AsyncInstagramResetClient(concurrent=100) as client:
results = await client.send_reset_requests(
targets,
extract="contact_point",
ninja=True,
verbose=False
)
success = sum(1 for v in results.values() if v and v is not False)
print(f"Success: {success}/{len(targets)}")
asyncio.run(high_speed())
With Proxies
import asyncio
from cevreset_async import AsyncInstagramResetClient
async def with_proxies():
proxies = [
"http://proxy1.com:8080",
"http://proxy2.com:8080",
"http://proxy3.com:8080",
]
async with AsyncInstagramResetClient(proxies=proxies) as client:
email = await client.send_reset_request(
"username",
extract="contact_point"
)
asyncio.run(with_proxies())
🔧 API Reference
AsyncInstagramResetClient
from cevreset_async import AsyncInstagramResetClient
# Constructor
client = AsyncInstagramResetClient(
concurrent=50, # Concurrent tasks (default: 50, can be 100+)
timeout=10, # Overall timeout (default: 10s)
proxies=None, # List of proxy URLs
use_random_agents=True, # Random User-Agents (default: True)
request_timeout=3 # Per-request timeout (default: 3s)
)
# Use as context manager
async with client:
pass
Methods:
# Single request
result = await client.send_reset_request(
target: str, # Username or email
extract: str | list | None, # Field to extract
ninja: bool = False # Silent mode
)
# Batch requests (fully parallel)
results = await client.send_reset_requests(
targets: list[str], # List of targets
extract: str | list | None, # Field to extract
verbose: bool = True, # Show progress
ninja: bool = False # Silent mode
)
InstagramResetClient (Sync version)
from cevreset import InstagramResetClient
# Constructor
client = InstagramResetClient(
threads=6, # Thread count (default: 6)
timeout=12, # Overall timeout (default: 12s)
proxies=None, # List of proxy URLs
use_random_agents=True, # Random User-Agents
request_timeout=5 # Per-request timeout (default: 5s)
)
# Use as context manager
with client:
pass
Methods:
# Single request
result = client.send_reset_request(
target: str, # Username or email
extract: str | list | None, # Field to extract
delay_before: float = 0, # Pre-delay (seconds)
ninja: bool = False # Silent mode
)
# Batch requests
results = client.send_reset_requests(
targets: list[str], # List of targets
extract: str | list | None, # Field to extract
delay_between: float = 5.0, # Delay between targets
verbose: bool = True, # Show progress
ninja: bool = False # Silent mode
)
Extract Parameter
Extract specific fields from the response:
# Get email
email = await client.send_reset_request("user", extract="contact_point")
# Returns: "user@gmail.com"
# Get multiple fields
fields = await client.send_reset_request("user", extract=["contact_point", "status"])
# Returns: {"contact_point": "...", "status": "..."}
# Get full response
response = await client.send_reset_request("user", extract=None)
# Returns: {...full JSON...}
Return Values
# Success with extract
email = await client.send_reset_request("user", extract="contact_point", ninja=True)
# Returns: "user@example.com" (if found) or None (if not found)
# Success without extract
response = await client.send_reset_request("user", ninja=True)
# Returns: full response dict (if success) or False (if failed)
# Batch results
results = await client.send_reset_requests(["u1", "u2", "u3"], extract="contact_point")
# Returns: {"u1": "email@example.com", "u2": None, "u3": False}
🎯 Use Cases
Security Researcher
# Find email addresses for research
targets = ["target1", "target2", "target3"]
async with AsyncInstagramResetClient() as client:
results = await client.send_reset_requests(targets, extract="contact_point")
Account Recovery
# Find your own account email
async with AsyncInstagramResetClient() as client:
email = await client.send_reset_request("your_username", extract="contact_point")
Large Scale Processing
# Process thousands of usernames
async with AsyncInstagramResetClient(concurrent=100) as client:
results = await client.send_reset_requests(huge_list, extract="contact_point")
🔐 Anti-Detection Features
User-Agent Rotation
5+ different Android device profiles:
- Samsung Galaxy A54
- OnePlus 9 Pro
- Google Pixel 6
- HTC U12+
- Sony Xperia 1
Header Diversification
13+ randomized headers per request:
- Device ID
- App ID
- Timezone
- Connection type
- Referer
- And more...
Session Isolation (Sync)
Each thread has its own:
- HTTP session
- CSRF token
- User-Agent
- Headers
CSRF Token Caching (Async)
All async tasks share same CSRF token (faster!)
⚠️ Legal Notice
IMPORTANT: This tool is for educational and authorized testing only.
- ❌ DO NOT use for unauthorized account access
- ❌ DO NOT violate Instagram's Terms of Service
- ❌ DO NOT use to harm others or gain unauthorized access
- ✅ DO use only on accounts you own or have permission to test
- ✅ DO respect Instagram's rate limits
Using this tool illegally is a crime.
The maintainers are not responsible for any misuse.
🐛 Troubleshooting
Getting None/False
- Instagram may have already processed the reset
- Email address might be private
- Target account may not exist
- Rate limited (429 responses)
Connection Errors
- Check your internet connection
- Check if proxies are working
- Instagram might be blocking your IP
Timeout Issues
- Increase
request_timeout - Increase
timeout - Check your connection speed
Enable Logging
import logging
logging.basicConfig(level=logging.DEBUG)
logging.getLogger("cevreset").setLevel(logging.DEBUG)
📈 Version History
- v0.4.0 - Async version (3-4x faster!) ⚡
- v0.3.4 - Ninja mode completely silent
- v0.3.3 - Ninja mode improvements
- v0.3.2 - Optimized timeout
- v0.3.0 - Thread isolation + context manager
- v0.2.1 - Initial stable release
🤝 Contributing
Contributions are welcome! Please:
- Fork the repository
- Create a feature branch
- Make your changes
- Submit a pull request
📄 License
MIT - See LICENSE for details
🔗 Links
- GitHub: https://github.com/cevpy/cevreset
- PyPI: https://pypi.org/project/cevreset/
- Issues: https://github.com/cevpy/cevreset/issues
Made with ❤️ by Cev
⭐ If you find this useful, please star the repository!
Project details
Release history Release notifications | RSS feed
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 cevreset-0.4.1.tar.gz.
File metadata
- Download URL: cevreset-0.4.1.tar.gz
- Upload date:
- Size: 62.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.1 CPython/3.12.1 Linux/6.8.0-1030-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a798fd885a714ab6cfcdd3c1518f7b5a499ec538e50bea2df1f86f4cb1b6614
|
|
| MD5 |
9fd4fa8952dcfd9cb140fe38c0abbc8c
|
|
| BLAKE2b-256 |
4f242c349006f85575d11c2522cf9e769d85cf5ee53b8bb7f9ee67015d002dc3
|
File details
Details for the file cevreset-0.4.1-py3-none-any.whl.
File metadata
- Download URL: cevreset-0.4.1-py3-none-any.whl
- Upload date:
- Size: 11.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.3.1 CPython/3.12.1 Linux/6.8.0-1030-azure
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
658d0a17f007d5dfc16ba83bc8c2501bab94f915634e01c0a742be217aeda174
|
|
| MD5 |
48fd7e4c54c91e8eb5d4fdd58a3a2f03
|
|
| BLAKE2b-256 |
00b5f27771fd4581eb645fd052bcaee3f231279d00d64a11b93bc075f33476bb
|