API مرجع
أتمت شراء البروكسي وتجديده.
مقدمة
واجهة برمجية لعرض الباقات، واستعراض الاشتراكات، وشراء بروكسيات جديدة، وتجديد الاشتراكات النشطة، وضبط التدوير التلقائي لعناوين IP.
تستخدم الواجهة نقطة دخول واحدة: /api/proxy. في عمليات GET يتم تمرير op ضمن query string، وفي عمليات POST يتم تمرير op ضمن JSON body.
البدء السريع
أنشئ مفتاح API في Dashboard -> API Keys وأرسله في ترويسة كل طلب.
BASE="https://makeadsafe.com"
API_KEY="rk_your_long_lived_api_key" جميع المعرّفات تتكون من أحرف وأرقام صغيرة فقط.
إصدار النسخة التجريبية عبر
POST /api/proxyمع{"op":"trial","planId":"..."}متاح فقط لبعض مفاتيح API المحددة. تواصل مع الدعم لتفعيل هذه الميزة لمفتاحك. تتم مراقبة استخدام النسخة التجريبية وقد يتم تقييده أو تعطيله في حال إساءة الاستخدام.
الباقات المتاحة
تعيد الباقات النشطة المتاحة لمالك مفتاح API.
curl -sS
-H "x-api-key: $API_KEY"
"$BASE/api/proxy?op=plans" {
"ok": true,
"plans": [
{
"id": "k17m3q5v7n9p1r2t4w6y8z0a",
"connectionType": "private",
"durationMs": 2592000000,
"priceAmountCents": 1200,
"popular": true,
"remainingProxies": 20,
"network": {
"name": "NL-AMS",
"city": "Amsterdam",
"country": "NL",
"networkType": "mobile"
}
}
]
} الاشتراكات النشطة
تعيد اشتراكاتك، بما في ذلك بيانات الاعتماد وروابط البروتوكولات وبيانات تدوير IP.
curl -sS
-H "x-api-key: $API_KEY"
"$BASE/api/proxy?op=subscriptions" {
"ok": true,
"subscriptions": [
{
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"status": "active",
"activeUntil": 1762592000000,
"userNote": "Client A",
"rotationPolicy": 10,
"label": "12001 - NL - Private",
"networkLabel": "NL-AMS Amsterdam",
"credentials": {
"username": "u_6k8s9d",
"password": "p_2n4m6q"
},
"protocols": {
"http": "http://u_6k8s9d:[email protected]:12001",
"socks5": "socks5://u_6k8s9d:[email protected]:12001",
"vless": "vless://...",
"shadowsocks": "ss://..."
},
"rotate": {
"rotatePath": "/r/abcd1234",
"available": true
}
}
]
} باقات التجديد
تعيد الباقات المؤهلة لتجديد اشتراك محدد.
SUB_ID="j97b2f6m1k4n8p3r5t7v9x0z"
curl -sS
-H "x-api-key: $API_KEY"
"$BASE/api/proxy?op=renewal-plans&subscriptionId=$SUB_ID" {
"ok": true,
"renewalPlans": [
{
"id": "k17m3q5v7n9p1r2t4w6y8z0a",
"connectionType": "private",
"durationMs": 2592000000,
"priceAmountCents": 1200
}
]
} الشبكات المتاحة
تعيد الشبكات المتاحة لتبديل اشتراك محدد.
SUB_ID="j97b2f6m1k4n8p3r5t7v9x0z"
curl -sS
-H "x-api-key: $API_KEY"
"$BASE/api/proxy?op=available-networks&subscriptionId=$SUB_ID" {
"ok": true,
"networks": [
{
"id": "b1c2d3e4f5g6h7j8k9m0n1p2",
"networkLabel": "DE-BER Berlin",
"country": "DE"
}
]
} استخدم networks[].id كقيمة targetNetwork في طلب switch-network.
شراء اشتراك
ينشئ اشتراكًا واحدًا أو عدة اشتراكات جديدة من رصيدك باستخدام الباقة المحددة.
حقول اختيارية:
couponCode: يطبّق كوبونًا صالحًا على عملية الشراء.repeatCount: عدد صحيح موجب، والقيمة الافتراضية1؛ يضاعف المدة والسعر لكل اشتراك يتم إنشاؤه.quantity: عدد صحيح موجب، والقيمة الافتراضية1؛ ينشئ عدة اشتراكات في طلب واحد.os: بصمة نظام التشغيل السلبية المطبقة على جميع البروكسيات المنشأة؛ إحدى القيمiosأوmacosأوandroidأوwin10أوwin11. غير متاح لخططmulti.
{
"op": "purchase",
"planId": "k17m3q5v7n9p1r2t4w6y8z0a",
"couponCode": "MYCODE",
"repeatCount": 3,
"os": "ios",
"quantity": 2
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"purchase","planId":"k17m3q5v7n9p1r2t4w6y8z0a","repeatCount":3,"os":"ios","quantity":2}'
"$BASE/api/proxy" {
"ok": true,
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"subscriptionIds": [
"j97b2f6m1k4n8p3r5t7v9x0z",
"n38k2f6m1k4n8p3r5t7v9x0z"
],
"subscriptions": [
{
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"status": "active",
"activeUntil": 1767776000000,
"label": "12001 - NL - Private",
"networkLabel": "NL-AMS Amsterdam"
},
{
"subscriptionId": "n38k2f6m1k4n8p3r5t7v9x0z",
"status": "active",
"activeUntil": 1767776000000,
"label": "12002 - NL - Private",
"networkLabel": "NL-AMS Amsterdam"
}
]
} إذا تم إنشاء اشتراك واحد فقط، فقد تعيد البوابة subscription بدلًا من subscriptions. تستخدم العناصر داخل subscription/subscriptions البنية نفسها الخاصة بـ GET /api/proxy?op=subscriptions.
تجديد الاشتراك
يجدد اشتراكًا موجودًا باستخدام باقة تجديد مؤهلة.
حقول اختيارية:
couponCode: يطبّق كوبونًا صالحًا على التجديد.repeatCount: عدد صحيح موجب، والقيمة الافتراضية1؛ يضاعف مدة التجديد وسعره.
{
"op": "renew",
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"planId": "q2w4e6r8t0y2u4i6o8p0a2s4",
"couponCode": "MYCODE",
"repeatCount": 3
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"renew","subscriptionId":"j97b2f6m1k4n8p3r5t7v9x0z","planId":"q2w4e6r8t0y2u4i6o8p0a2s4","repeatCount":3}'
"$BASE/api/proxy" {
"ok": true,
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"endAt": 1770368000000
} تغيير بيانات الاتصال
يعيد توليد بيانات الاتصال لاشتراك نشط يخص المستخدم الموثق (JWT) أو مالك مفتاح API.
{
"op": "change-credentials",
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z"
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"change-credentials","subscriptionId":"j97b2f6m1k4n8p3r5t7v9x0z"}'
"$BASE/api/proxy" {
"ok": true,
"password": "q7N3x9Lp",
"vpn": "7f3d9d4a-8b9f-4a93-9f55-2d5e3b7f1c24"
} ضبط سياسة التدوير التلقائي
يضبط التدوير التلقائي لعناوين IP لاشتراك نشط. الإعداد متاح فقط للاتصالات التي تحتوي على "rotate": { "available": true }.
القيم المسموح بها لـ rotationPolicy هي: 0 و5 و10 و15 و30 و60 دقيقة. استخدم 0 لتعطيل التدوير التلقائي.
{
"op": "set-rotation-policy",
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"rotationPolicy": 10
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"set-rotation-policy","subscriptionId":"j97b2f6m1k4n8p3r5t7v9x0z","rotationPolicy":10}'
"$BASE/api/proxy" {
"ok": true
} تغيير شبكة الاتصال
ينقل اشتراكًا نشطًا إلى شبكة أخرى متاحة.
{
"op": "switch-network",
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"targetNetwork": "b1c2d3e4f5g6h7j8k9m0n1p2"
} curl -sS -X POST
-H "x-api-key: $API_KEY"
-H "Content-Type: application/json"
-d '{"op":"switch-network","subscriptionId":"j97b2f6m1k4n8p3r5t7v9x0z","targetNetwork":"b1c2d3e4f5g6h7j8k9m0n1p2"}'
"$BASE/api/proxy" {
"ok": true,
"subscription": {
"subscriptionId": "j97b2f6m1k4n8p3r5t7v9x0z",
"status": "active",
"activeUntil": 1762592000000,
"userNote": "Client A",
"rotationPolicy": 10,
"label": "12001 - DE - Private",
"networkLabel": "DE-BER Berlin",
"credentials": {
"username": "u_6k8s9d",
"password": "p_2n4m6q"
},
"protocols": {
"http": "http://u_6k8s9d:[email protected]:12001",
"socks5": "socks5://u_6k8s9d:[email protected]:12001",
"vless": "vless://...",
"shadowsocks": "ss://..."
},
"rotate": {
"rotatePath": "/r/abcd1234",
"available": true
}
}
} أخطاء البوابة
400JSON غير صالح في body400يجب أن يكون body كائنًا400قيمةopمفقودة أو غير معروفة400الحقلplanId/subscriptionId/targetNetwork/rotationPolicyمفقود أو غير صالح400القيمةrepeatCountأوquantityغير صالحة400القيمةosغير صالحة401Unauthorized402الرصيد غير كافٍ403Forbidden404الاشتراك غير موجود409سياسة التدوير غير متاحة لهذا الاشتراك409لا توجد موارد متاحة، أو أن الباقة/الشبكة غير نشطة، أو أن حالة الاشتراك غير صالحة409اختيار نظام التشغيل غير متاح لخططmulti429Rate limited500Internal error