# Instagram Session — پایداری 24/7

## چرا سشن قطع می‌شود؟

1. **logout روی restart** — قبلاً با Ctrl+C یا systemctl restart، logout() صدا زده می‌شد و Instagram سشن را می‌کشت. (رفع شد: INSTAGRAM_LOGOUT_ON_STOP=0)
2. **IP دیتاسنتر** — VPS معمولاً blacklist است؛ password login از سرور کار نمی‌کند.
3. **سشن مرورگر روی سرور لینوکس** — sessionid از Chrome ویندوز باید با fingerprint ثابت (device.json) به API موبایل تبدیل شود.
4. **دو listener همزمان** — PC + VPS با یک اکانت = logout فوری.
5. **رفتار غیرانسانی** — poll خیلی سریع (1s) روی VPS خطرناک است.

---

## معماری پیشنهادی (پایدار)

```
[PC خانه — IP residential]
   │
   ├─ make_session_playwright.py  →  session.json + device.json
   │
   ├─ refresh_session_scheduled.bat (هر ۶–۱۲ ساعت — Task Scheduler)
   │       └─ push_session_to_vps.bat auto
   │
   └─ یا run_home.bat (Listener روی PC — پایدارترین حالت)

[VPS Ubuntu]
   └─ فقط consume session — ALLOW_PASSWORD_RELOGIN=0
   └─ POLL_INTERVAL=15 (نه 1)
   └─ systemctl restart بدون logout
```

---

## تنظیمات .env روی VPS

```env
INSTAGRAM_LOGOUT_ON_STOP=0
ALLOW_PASSWORD_RELOGIN=0
SESSION_SAVE_INTERVAL=300
SESSION_KEEPALIVE_INTERVAL=1200
SESSION_ALERT_ENABLED=1
POLL_INTERVAL=15
POLL_INTERVAL_ACTIVE=5
INSTAGRAM_VERIFY_INTERVAL=600
DEVICE_SETTINGS_FILE=./data/device.json
INSTAGRAM_TIMEZONE_OFFSET=12600
```

---

## تنظیمات .env روی PC (run_home.bat)

```env
ALLOW_PASSWORD_RELOGIN=1
POLL_INTERVAL=1
INSTAGRAM_LOGOUT_ON_STOP=0
```

---

## رفرش خودکار سشن (PC → VPS)

### یک‌بار
```bat
cd instagram-listener
import_from_tab.bat
push_session_to_vps.bat auto
```

### زمان‌بندی ویندوز
1. Task Scheduler → Create Task
2. Trigger: every 6 hours
3. Action: `refresh_session_scheduled.bat`
4. Condition: PC باید روشن و اینستاگرام در مرورگر login باشد

---

## هشدار تلگرام

وقتی سشن بمیرد، Listener به `listener-alert.php` POST می‌زند و به ادمین تلگرام پیام می‌دهد.

فایل‌های لازم روی هاست:
- listener-alert.php
- includes/InstagramListener.php (handleSessionAlert)

---

## بازیابی سریع

```bash
# روی سرور
ig-session 'PASTE_SESSIONID'
systemctl status instagram-listener
journalctl -u instagram-listener -f
```

sessionid: F12 → Application → Cookies → instagram.com → sessionid

---

## گزینه‌های پیشرفته

| روش | پایداری | توضیح |
|-----|---------|-------|
| Listener روی PC | ★★★★★ | بهترین — IP خانه |
| VPS + refresh 6h از PC | ★★★★ | تعادل خوب |
| VPS + residential proxy | ★★★★ | INSTAGRAM_PROXY=socks5://... |
| VPS + password login | ★ | معمولاً blacklist |

---

## هرگز

- PC و VPS listener همزمان روشن نکن
- systemctl restart بدون session تازه بعد از logout طولانی
- sessionid مرورگر را مستقیم بدون set_session.py استفاده نکن
