ערכת פיתוח תוכנה לפייתון — whatsapp-data-sdk
לקוח רשמי של Python עבור WhatsApp Data API. תגובות מודפסות, תלות אחת (בקשות), חיפושים תחילה במטמון, והיררכיית חריגים נקייה.
לְהַתְקִין
pip install whatsapp-data-sdk
נתמך בפייתון 3.8-3.13. מגיע עם סמן py.typed לתמיכה מלאה בבדיקת סוגים (mypy, pyright).
התחלה מהירה
from whatsapp_data_sdk import WhatsAppDataClient
client = WhatsAppDataClient(api_key="YOUR_KEY") # sent as x-rapidapi-key
profile = client.get_profile("59898297150")
print(profile.get("exists"), profile.get("about"), profile.get("profilePic"))אימות ותעבורה
המפתח שלך תמיד נשלח ב-x-rapidapi-key. בחר לאן הבקשות יגיעו עם ההובלה.
| transport | מארח חי | מארח מטמון / מסד נתונים בלבד |
|---|---|---|
"proxy" (בְּרִירַת מֶחדָל) | whatsapp-proxy.checkleaked.cc | /number_cache על אותו מארח |
"rapidapi" | wp-data.p.rapidapi.com | wp-data-db-only.p.rapidapi.com |
client = WhatsAppDataClient(api_key="RAPIDAPI_KEY", transport="rapidapi")
עקיפת כתובות URL/מארחים דרך base_url, cache_base_url, rapidapi_host, rapidapi_cache_host.
חיפושים תחילה במטמון (חסכו כסף)
הפונקציה check_cached() קוראת תחילה את נקודת הקצה הזולה של המטמון / DB-only וחוזרת לבדיקה חיה בתשלום רק במקרה של החמצה אמיתית.
r1 = client.check_cached("59898297150") # cacheFirst (default)
print(r1["_source"]) # "cache" | "live"
r2 = client.check_cached("59898297150", mode="cacheOnly") # never a live call
r3 = client.check_cached("59898297150", mode="live") # always freshרשומת מטמון סמכותית שאינה ב-WhatsApp נחשבת כפגיעה (אין בדיקה חוזרת בזבזנית של "לא ב-WhatsApp"); רק החמצה אמיתית של "לא ב-DATABASE" נופלת ל-"חיה".
הפניה ל-API
כל שיטה ממפה 1:1 לנקודת קצה בשוק - אותו כיסוי כמו ערכת ה-SDK של npm, naming של snake_case.
# Profile & pictures
client.get_profile(number, telegram=True, include_carrier=True) # Get Profile Information
client.get_profile_no_picture(number) # (No profile pic)
pic = client.get_last_picture(number) # JPEG bytes -> pic.content, pic.to_data_uri()
client.get_device_count(number) # Device count
client.get_osint_info(number) # OSINT Info
# Breaches
client.get_phone_breaches(number, limit=50) # built-in (no external key)
client.get_phone_breaches_external(number, api_key="...") # your checkleaked.cc key
# Search & database
client.search(country_code="UY", is_business=True, limit=20) # Search
client.search_google_maps(latitude=-34.9, longitude=-56.16, radius=2000) # Search in Google Maps
client.get_leaked_numbers_info() # Leaked Numbers (500M) -> Drive link (MEGA tier)
client.download_entire_database() # Download the Entire DB -> Drive link (MEGA tier)
# Bulk
client.bulk_check(numbers) # live (max 50)
client.bulk_check_db_basic(numbers) # DB basic (max 1000)
client.bulk_check_db_full(numbers) # DB full (max 1000)
# Telegram / carrier
client.get_telegram_profile("59898297150") # experimental
client.get_telegram_profile(["num1", "num2"])
client.carrier_lookup(number) # Carrier Lookup
client.carrier_lookup_alt(number, page=2) # Carrier Lookup Alternative"לא נמצא" פותר - זה לא מעלה
מספר שלא נמצא בוואטסאפ הוא תוצאה נורמלית, לכן אלה נפתרים (לעולם לא עולים):
p = client.get_profile("14155552671")
if not p.get("exists"):
print("not on WhatsApp")מה כן מעלה: מספר לא חוקי (400), אישור (401/403), מגבלת קצב (429), פסק זמן, רשת, 5xx.
אפשרויות לפי בקשה
כל שיטה מקבלת פסק זמן (שניות) ומנסה שוב:
client.get_profile("59898297150", timeout=5, retries=0)שגיאות
כל הכשלונות גורמים לתת-מחלקה של WhatsAppDataError.
| מַחלָקָה | כַּאֲשֵׁר |
|---|---|
ValidationError | ארגומנטים שגויים (הועלו לפני כל בקשה; ללא .status). |
AuthError | 401 / 403 - מפתח חסר/לא חוקי/לא רשום. |
RateLimitError | 429 - נושא .retry_after_ms כאשר השרת שלח Retry-After. |
HttpError | כל ערך אחר שאינו 2xx (למשל 400, 5xx); מכיל .status, .body. |
TimeoutError | הבקשה חרגה מזמן הקצוב. |
NetworkError | כשל בתחבורה. |
WhatsAppDataError | מחלקת בסיס. |
from whatsapp_data_sdk import AuthError, RateLimitError, WhatsAppDataError
try:
client.get_profile("59898297150")
except AuthError:
... # 401/403
except RateLimitError as e:
print(e.retry_after_ms)
except WhatsAppDataError as e:
print(e.status, e.body)POSTs (bulk_check, bulk_check_db_*) אינם מתבצעים באופן אוטומטי, כדי למנוע הוצאות כפולות על מכסת האחסון.
פורמטים של מספרי טלפון
כל פורמט עובד - ערכת ה-SDK מתנרמלת; העוזרים מיוצאים:
from whatsapp_data_sdk import to_digits, to_e164
to_digits("+598 98 297 150") # "59898297150" (path & live endpoints)
to_e164("59898297150") # "+59898297150" (bulk-DB endpoints require it)קָשׁוּר
מה אומרים המשתמשים שלנו
ביקורות אמיתיות מלקוחות מרוצים שלנו