Turbo
الذهاب إلى القناة على Telegram
Здравствуйте, Telegram! Этот канал не нарушает правила использования Telegram. Сообщения о нарушениях являются ложными, и я полностью соблюдаю правила использования Telegram. Спасибо.
إظهار المزيدلا توجد بيانات
المشتركون
+424 ساعات
+97 أيام
+26530 أيام
أرشيف المشاركات
import random
import re
import string
from typing import Optional, Dict, Any
import requests
OWNER = "White Wolf t.me/j49_c channel t.me/bshshshkk"
class AsiacellAPI:
def __init__(self) -> None:
self.api_key: str = ''.join(random.choices(string.hexdigits.lower(), k=32))
self.base_url: str = "https://odpapp.asiacell.com/api/v1/"
self._session: requests.Session = requests.Session()
def _normalize_phone(self, phone: str) -> str:
phone = phone.lstrip('0')
if not phone.startswith('964'):
phone = '964' + phone
return phone
def _build_headers(self, device_id: str, access_token: Optional[str] = None) -> Dict[str, str]:
headers = {
'User-Agent': "okhttp/5.0.0-alpha.2",
'Connection': "Keep-Alive",
'Accept-Encoding': "gzip",
'X-ODP-API-KEY': self.api_key,
'Cache-Control': "no-cache",
'DeviceID': str(device_id),
'X-OS-Version': "11",
'X-Device-Type': "[Android][realme][RMX3834 11][TIRAMISU][HMS][4.3.7:90000325]",
'X-ODP-APP-VERSION': "4.3.7",
'X-FROM-APP': "odp",
'X-ODP-CHANNEL': "mobile",
'X-SCREEN-TYPE': "false",
'Content-Type': "application/json; charset=UTF-8",
}
if access_token:
headers['Authorization'] = f"Bearer {access_token}"
return headers
def _post(self, endpoint: str, payload: Dict[str, Any], device_id: str,
access_token: Optional[str] = None) -> Dict[str, Any]:
url = f"{self.base_url}{endpoint}?lang=en" if "login" in endpoint or "smsvalidation" in endpoint else f"{self.base_url}{endpoint}?lang=ar"
headers = self._build_headers(device_id, access_token)
response = self._session.post(url, data=json.dumps(payload), headers=headers, timeout=20)
return response.json()
def send_login_request(self, phone: str, device_id: str) -> Dict[str, Any]:
phone = self._normalize_phone(phone)
payload = {"captchaCode": "", "username": phone}
return self._post("login", payload, device_id)
def verify_otp_code(self, session_id: str, otp_code: str, device_id: str) -> Dict[str, Any]:
payload = {"PID": session_id, "passcode": otp_code, "token": ""}
return self._post("smsvalidation", payload, device_id)
def initiate_credit_transfer(self, access_token: str, amount: int, receiver: str,
device_id: str) -> Dict[str, Any]:
receiver = self._normalize_phone(receiver)
payload = {"amount": float(amount), "receiverMsisdn": receiver}
return self._post("credit-transfer/start", payload, device_id, access_token)
def confirm_credit_transfer(self, access_token: str, session_id: str,
confirmation_code: str, device_id: str) -> Dict[str, Any]:
payload = {"PID": session_id, "passcode": confirmation_code}
return self._post("credit-transfer/do-transfer", payload, device_id, access_token)
def extract_session_id(self, response_data: Dict[str, Any]) -> Optional[str]:
session_id = response_data.get("PID") or response_data.get("transactionId")
if not session_id and "nextUrl" in response_data:
match = re.search(r'PID=([a-f0-9\-]+)', response_data["nextUrl"])
if match:
session_id = match.group(1)
return session_id
اتصـ ـال تحـ ـويل اسيا ⚡
@j49_c 🤔