-
Notifications
You must be signed in to change notification settings - Fork 31
Description
هدف
دریافت اطلاعات قیمت با توکن ای پی آی خودم حتی شده به صورت
read only
محیط درخواست
سلام من الان چند ساعته دارم توی ویژوال استودیو با پایتون کد میزنم و هر روشی رو برای استفاده از توکن ای پی آی خودم امتحان کردم نتیجه نگرفتم ، چه دی ان اس عوض کردم چه فیلترشکن زدم چه معمولی رفتم...چه کد هام رو عوض کردم...هر روشی رفتم نمیتونم از توکن خودم استفاده کنم...من فقط دسترسی رید اونلی (فقط خواندن) میخوام .. فقط میخوام بتونم قیمت های یه ارز رو در یه بازه ببینم نه میخوام معامله کنم نه میخوام تغییراتی ایجاد کنم اما واسه همین دسترسی ساده هم به مشکل خوردم...داخل سایت تیکت گذاشتم و پشتیبانی من رو به اینجا هدایت کرد...حدس میزنم به خاطر حمله اسرائیل کل توکن های ای پی آی رو مسدود کرده باشین آیا حدسم درسته؟مشکل توکن من چیه؟چرا نمیتونم قیمت ها رو بگیرم؟لطفا یه بررسی کنید بهم اطلاع بدین الان چند ساعته درگیرم و کل کارم گیر کرده سر این موضوع و نمیتونم یه قیمت ساده بگیرم از سایت...خواهش میکنم در کوتاه ترین زمان ممکن بهم اطلاع بدین که مشکل چیه...اگه کلا مسدود کردین من بگردم دنبال یه راه دیگه ای...اولویت این مشکل خیلی بالاست برام خواهشا بررسی کنید...دسترسی سطح 2 هم دارم کاملا احراز هویت شدم قبلا.
نحوه درخواست
import requests
import socket
import json
def fix_dns_and_test_nobitex(api_token):
"""
حل مشکل DNS و تست دسترسی به نوبیتکس
"""
# 🔧 تنظیم DNS موقت برای حل مشکل
original_dns = socket.getaddrinfo
def new_getaddrinfo(*args, **kwargs):
try:
return original_dns(*args, **kwargs)
except socket.gaierror:
# اگر DNS اصلی کار نکرد، از IP مستقیم استفاده کن
if args[0] == 'api.nobitex.ir':
# این IP مربوط به نوبیتکس است (ممکن است نیاز به آپدیت داشته باشد)
return [(socket.AF_INET, socket.SOCK_STREAM, 6, '', ('185.165.117.12', 443))]
raise
socket.getaddrinfo = new_getaddrinfo
headers = {
'Authorization': f'Token {api_token}',
'Content-Type': 'application/json'
}
print("🔧 در حال رفع مشکل DNS...")
try:
# تست اول: بررسی سلامت API
health_url = "https://api.nobitex.ir/api/v2/orderbook/BTCIRT"
response = requests.get(health_url, timeout=10)
if response.status_code == 200:
print("✅ API نوبیتکس در دسترس است")
# تست دوم: بررسی اعتبار توکن
profile_url = "https://api.nobitex.ir/users/profile"
profile_response = requests.get(profile_url, headers=headers, timeout=10)
if profile_response.status_code == 200:
user_data = profile_response.json()
print("🎉 دسترسی کامل برقرار شد!")
print(f"👤 کاربر: {user_data.get('profile', {}).get('firstName', 'ناموجود')}")
return True
else:
print(f"⚠️ توکن مشکل دارد: {profile_response.status_code}")
return False
else:
print(f"❌ API نوبیتکس پاسخ نمیدهد: {response.status_code}")
return False
except requests.exceptions.ConnectionError as e:
print(f"❌ مشکل اتصال به نوبیتکس: {e}")
print("\n🔍 راهحلهای پیشنهادی:")
print("1. از VPN استفاده کنید")
print("2. DNS را به 8.8.8.8 تغییر دهید")
print("3. اتصال اینترنت را بررسی کنید")
return False
except Exception as e:
print(f"❌ خطای ناشناخته: {e}")
return False
finally:
# بازگردانی DNS اصلی
socket.getaddrinfo = original_dns
def get_nobitex_market_data(api_token):
"""
دریافت دادههای بازار از نوبیتکس
"""
headers = {
'Authorization': f'Token {api_token}',
'Content-Type': 'application/json'
}
try:
# دریافت orderbook برای بیتکوین
url = "https://api.nobitex.ir/v2/orderbook/BTCIRT"
response = requests.get(url, headers=headers, timeout=10)
if response.status_code == 200:
data = response.json()
print("✅ دادههای بازار دریافت شد:")
print(f"💰 آخرین قیمت: {data['lastTrade']:,} تومان")
print(f"📊 بهترین خرید: {data['bids'][0][0]:,} تومان")
print(f"📈 بهترین فروش: {data['asks'][0][0]:,} تومان")
return data
else:
print(f"❌ خطا در دریافت داده: {response.status_code}")
return None
except Exception as e:
print(f"❌ خطا: {e}")
return None
🚀 اجرای اصلی
if name == "main":
# 🔑 توکن API شما
YOUR_TOKEN = "#########" # 🔄 جایگزین کنید
print("🚀 راهاندازی سیستم ارتباط با نوبیتکس...")
print("=" * 50)
# تست دسترسی
if fix_dns_and_test_nobitex(YOUR_TOKEN):
print("\n" + "=" * 50)
print("✅ اتصال برقرار شد - دریافت دادههای زنده...")
print("=" * 50)
# دریافت دادههای بازار
market_data = get_nobitex_market_data(YOUR_TOKEN)
if market_data:
print("\n" + "🎊" * 20)
print("🎉 سیستم کاملاً آماده است!")
print("✅ دسترسی به نوبیتکس تأیید شد")
print("✅ میتوانیم دادههای تاریخی را دریافت کنیم")
print("🎊" * 20)
else:
print("\n❌ متأسفانه مشکل اتصال حل نشد.")
print("\n💡 پیشنهاد نهایی: از VPN استفاده کنید یا DNS سیستم را تغییر دهید.")
پاسخ دریافتی
❌ مشکل اتصال به نوبیتکس: HTTPSConnectionPool(host='api.nobitex.ir', port=443): Max retries exceeded with url: /api/v2/orderbook/BTCIRT (Caused by Connec
tTimeoutError(<urllib3.connection.HTTPSConnection object at 0x000002ADB9090530>, 'Connection to api.nobitex.ir timed out. (connect timeout=10)'))
اطلاعات تکمیلی
آیا به خاطر حمله اسرائیل توکن ها رو مسدود کرده اید؟