این اسکریپت Python را روی کامپیوترت اجرا کن. هر ۱۵ دقیقه وضعیت اینترنت ایران را بررسی میکند
و اگر قطعی تشخیص داد، بهصورت خودکار با پیامک یا تلفن با خانوادهات تماس میگیرد.
# iran_monitor.py — نصب: pip install requests schedule# تنظیمات را در بخش CONFIG وارد کنimport requests, schedule, time, os
from datetime import datetime
# ═══ CONFIG ═══════════════════════════════════════════
CLOUDFLARE_API = "https://api.cloudflare.com/client/v4/radar/traffic-anomalies"
IODA_API = "https://api.ioda.inetintel.cc.gatech.edu/v2/signals/raw?entityType=country&entityCode=IR&datasource=bgp"# شماره خانواده در ایران (با کد کشور)
IRAN_PHONE = "+989XXXXXXXXX"# شماره تلفن ثابت ایران
IRAN_LANDLINE = "+9821XXXXXXXX"# Twilio برای SMS خودکار (رایگان برای آزمایش)
TWILIO_SID = "ACxxxxxxxxxxxxxxxx"
TWILIO_TOKEN = "your_auth_token"
TWILIO_FROM = "+49XXXXXXXXX"# شماره آلمانت# ══════════════════════════════════════════════════════defcheck_cloudflare():
"""بررسی ترافیک ایران از طریق Cloudflare Radar"""try:
r = requests.get(
"https://api.cloudflare.com/client/v4/radar/netflows/timeseries",
params={"location": "IR", "dateRange": "1h"},
timeout=10
)
data = r.json()
# اگر ترافیک > 30% افت داشت = قطعی احتمالی
values = data.get("result", {}).get("serie_0", {}).get("values", [])
iflen(values) >= 2:
drop = (values[0] - values[-1]) / max(values[0], 1)
return drop > 0.3except: passreturnFalsedefcheck_ioda():
"""بررسی سیگنال BGP ایران از IODA"""try:
r = requests.get(IODA_API, timeout=10)
data = r.json()
alerts = data.get("data", {}).get("IR", [])
returnlen(alerts) > 0except: returnFalsedefsend_sms(msg):
"""ارسال SMS از طریق Twilio"""try:
from twilio.rest import Client
client = Client(TWILIO_SID, TWILIO_TOKEN)
client.messages.create(
body=msg, from_=TWILIO_FROM, to=IRAN_PHONE
)
print(f"✓ SMS ارسال شد: {msg[:50]}")
except Exception as e:
print(f"✗ خطا در ارسال SMS: {e}")
defmonitor():
now = datetime.now().strftime("%H:%M:%S")
print(f"[{now}] در حال بررسی وضعیت اینترنت ایران...")
cf_alert = check_cloudflare()
ioda_alert = check_ioda()
if cf_alert and ioda_alert:
print("🔴 قطعی تأیید شد — ارسال پیامک...")
send_sms("سلام. میخواستم بگم حالم خوبه. اگه نتونستم زنگ بزنم نگران نباش. ❤️")
elif cf_alert or ioda_alert:
print("🟡 اخطار جزئی — وضعیت را دنبال میکنم")
else:
print("🟢 اینترنت ایران نرمال است")
# هر ۱۵ دقیقه یکبار بررسی کن
schedule.every(15).minutes.do(monitor)
monitor() # یک بار هم الان اجرا کنwhileTrue: schedule.run_pending(); time.sleep(60)