WhatsChecker
🕵️♂️ A powerful multi-threaded CLI tool to check WhatsApp number validity via WhatsApp Web.
🌟 Features
- ✅ Detect Active/Inactive WhatsApp Numbers
- 🧠 Intelligent Login Handling (QR scan and session reuse)
- 🔀 Concurrent Multi-Account Checking
- 🛡️ Proxy Support (optional, per account)
- 🗃️ Persistent Profiles – saves WhatsApp login sessions
- 🕶️ Headless Mode – optional
- 🕓 Customizable Delays – mimic human-like behavior
- 📂 Custom Config Support (
whatschecker.config.json) - 📈 Built with Selenium + Undetected ChromeDriver
- 💥 Auto dependency installs on first run
- 📇 Extracts valid WhatsApp numbers from saved contacts on the device
🚀 Usage
1. 📦 Installation
git clone https://github.com/bitbytelab/WhatsChecker.git
cd WhatsChecker
chmod +x whatschecker.py
2. 🧪 First-time Setup (Scan QR)
./whatschecker.py --add-account
Scan the QR code to save your WhatsApp session. You can add multiple accounts this way.
3. 📤 Checking Numbers
Prepare an input file (e.g., numbers.txt) with one number per line:
+12025550123
+447911123456
+8801711123456
Run the checker:
./whatschecker.py --input numbers.txt --valid active.txt --invalid inactive.txt
You can also run in headless mode:
./whatschecker.py --input numbers.txt --valid active.txt --invalid inactive.txt --headless
4. 📇 Contacts Extraction
To extract valid WhatsApp numbers from your saved contacts:
python -m whatschecker --input contacts
This will:
- Launch WhatsApp Web and log you in.
- Open the "New Chat" sidebar to access all device contacts.
- Incrementally scroll through the list and extract each visible contact.
- Save valid WhatsApp numbers along with name, about, and avatar info to a CSV.
The generated CSV will be saved as:
valid_whatsapp_contacts_YYYY_mm_dd_HH_MM.csv
📁 Example output preview:
| name | about | user_avatar |
|---|---|---|
| 019xxxxxxxxx | Always learning | https://media.whatsapp.net/... |
| 018xxxxxxxxx | Big brother watching you 😊 | default |
📝 Note: Contact names must be saved as numbers (i.e., "017xxxxxxx") to work properly with this feature.
5. 🧩 Optional Arguments
| Flag | Description |
|---|---|
--input |
Input file with numbers |
--valid |
Output file for active numbers |
--invalid |
Output file for inactive numbers |
--delay |
Base delay in seconds between number checks |
--proxies |
List of proxies (e.g., http://ip:port) |
--headless |
Run Chrome in headless mode |
--add-account |
Launch new profile and scan QR to add account |
6. ⚙️ Config File Support
You can also define your settings in a whatschecker.config.json file:
{
"input": "numbers.txt",
"valid": "active.txt",
"invalid": "inactive.txt",
"delay": 8,
"proxies": ["http://127.0.0.1:8000", null]
}
Then just run:
./whatschecker.py
🔐 Session Management
Saved WhatsApp sessions are stored in:
./Profiles/account1
./Profiles/account2
...
Remove a folder to reset that session.
🧰 Dependencies
- Python
3.9+ - undetected-chromedriver
- selenium
📦 Auto-installs on first run if not found!
❓ FAQ
Q: Will my WhatsApp account get banned?
A: This script mimics human behavior using real browser sessions and delays. Use proxies and multiple accounts to reduce risk. No API violations.
Q: Is this open source?
A: Yes! MIT licensed. Use it responsibly and contribute back.
👨💻 Author
Made with ❤️ by BitByteLab
📧 Contact: bbytelab@gmail.com
📄 License
MIT License – see LICENSE file for details.
⭐️ Star this project
If you find this useful, please consider starring the repo!
👉 github.com/bitbytelab/WhatsChecker
Metadata
Release files for whatschecker 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| whatschecker-0.1.0.tar.gz | 12.6 kB | Without provenance | Details for whatschecker-0.1.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| whatschecker-0.1.0-py3-none-any.whl | Python 3 | none | any | Details for whatschecker-0.1.0-py3-none-any.whl |
Total release size: 23.7 kB
Release files / whatschecker-0.1.0.tar.gz
| Download URL | whatschecker-0.1.0.tar.gz |
|---|---|
| Size | 12.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
12fbe2bce1119e465f55b62ca37dcaf10d18772d0c78c81b77e7132279f0cf6d
|
|
BLAKE2b-256 checksum How to use checksums |
5091ab886f950fbb5ddf171b3c6cb00ca6f6eabd97e13606a39d7719f1dd7987
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.6
|
Release files / whatschecker-0.1.0-py3-none-any.whl
| Download URL | whatschecker-0.1.0-py3-none-any.whl |
|---|---|
| Size | 11.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e59305394917fd0957b90eeb2717bf404bf71f0012f4e0a906cdac756336279a
|
|
BLAKE2b-256 checksum How to use checksums |
491f76b22609b7d74fec0e724bc409721f7e07951360abc657a59b809c913dab
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.12.6
|
Security for whatschecker 0.1.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.