Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,9 @@ This repository provides an always-up-to-date list of free MTProto proxies that
- No clutter, no ads – just clean proxy addresses ready to use

Example line:
```
tg://proxy?server=example.com&port=443&secret=ee00000000000000000000000000000000000000

```

---

Expand All @@ -42,6 +43,7 @@ You can also manually paste the proxy link into Telegram's "Data and Storage" se
If you find this useful, consider giving the repo a ⭐️

- [English](README.md)
- [العربية](README_AR.md)
- [中文](README_CN.md)
- [Русский](README_RU.md)
- [فارسی](README_FA.md)
47 changes: 47 additions & 0 deletions README_AR.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# 🌐 بروكسيات MTProto الجديدة – تُحدَّث تلقائياً كل 12 ساعة

هل تبحث عن بروكسيات MTProto جديدة وفعّالة لتيليغرام؟
يوفر هذا المستودع قائمة دائمة التحديث من بروكسيات MTProto المجانية، تُمكّنك من تجاوز الرقابة والاتصال بتيليغرام بأمان وسرعة.

> **✅ الملف:** [`all_proxies.txt`](https://raw.githubusercontent.com/SoliSpirit/mtproto/master/all_proxies.txt)
> **🕒 التحديث:** تلقائي كل 12 ساعة

---

## 📄 المحتويات

- ملف نصي بسيط: `all_proxies.txt`
- كل سطر يحتوي على بروكسي MTProto فعّال بالصيغة القياسية
- بدون إعلانات أو فوضى — فقط عناوين بروكسي نظيفة وجاهزة للاستخدام

مثال على السطر:
`tg://proxy?server=example.com&port=443&secret=ee00000000000000000000000000000000000000`

---

## 🔄 نظام التحديث التلقائي

تُولَّد هذه القائمة وتُنشر بواسطة بوت كل **12 ساعة** باستخدام سكريبت مخصص.
يقوم السكريبت بمسح البروكسيات المتاحة للعموم والتحقق منها قبل النشر.

---

## 💡 كيفية استخدام بروكسيات MTProto؟

1. انسخ سطراً من `all_proxies.txt`
2. افتحه في متصفح هاتفك أو جهاز الكمبيوتر
3. سيعرض تيليغرام تلقائياً خيار الاتصال عبر البروكسي

يمكنك أيضاً لصق رابط البروكسي يدوياً في إعدادات تيليغرام ضمن **"البيانات والتخزين" ← "البروكسي"**.

---

## ☕ الدعم

إذا كان هذا مفيداً، فكّر في إعطاء ⭐️ للمستودع

- [English](README.md)
- [العربية](README_AR.md)
- [中文](README_CN.md)
- [Русский](README_RU.md)
- [فارسی](README_FA.md)
7 changes: 5 additions & 2 deletions README_CN.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
- 无广告,无杂乱,只有干净的代理地址

示例行:
```
tg://proxy?server=example.com&port=443&secret=ee00000000000000000000000000000000000000
```

---

Expand All @@ -32,15 +34,16 @@ tg://proxy?server=example.com&port=443&secret=ee00000000000000000000000000000000
2. 在手机或桌面浏览器打开
3. Telegram会自动提示连接代理

你也可以手动将代理链接粘贴到Telegram数据和存储设置下的“代理”中。
你也可以手动将代理链接粘贴到Telegram **"数据和存储"** 设置下的 **"代理"** 中。

---

## ☕ 支持

如果你觉得有用,请给本仓库点个⭐️

- [English](README.md)
- [English](README.md)
- [العربية](README_AR.md)
- [中文](README_CN.md)
- [Русский](README_RU.md)
- [فارسی](README_FA.md)
7 changes: 5 additions & 2 deletions README_FA.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
- بدون تبلیغات و شلوغی، فقط آدرس‌های تمیز و آماده استفاده

نمونه خط:
```
tg://proxy?server=example.com&port=443&secret=ee00000000000000000000000000000000000000
```

---

Expand All @@ -32,15 +34,16 @@ tg://proxy?server=example.com&port=443&secret=ee00000000000000000000000000000000
2. آن را در گوشی یا مرورگر دسکتاپ خود باز کنید
3. تلگرام به‌صورت خودکار پیشنهاد اتصال با پروکسی را می‌دهد

همچنین می‌توانید لینک پروکسی را به صورت دستی در تنظیمات "داده‌ها و ذخیره‌سازی" تلگرام زیر بخش "پروکسی" وارد کنید.
همچنین می‌توانید لینک پروکسی را به‌صورت دستی در تنظیمات **«داده‌ها و ذخیره‌سازی»** تلگرام زیر بخش **«پروکسی»** وارد کنید.

---

## ☕ حمایت

اگر این مخزن برایتان مفید بود، لطفاً ⭐️ بدهید

- [English](README.md)
- [English](README.md)
- [العربية](README_AR.md)
- [中文](README_CN.md)
- [Русский](README_RU.md)
- [فارسی](README_FA.md)
7 changes: 5 additions & 2 deletions README_RU.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,9 @@
- Без рекламы, без мусора – только чистые адреса прокси

Пример строки:
```
tg://proxy?server=example.com&port=443&secret=ee00000000000000000000000000000000000000
```

---

Expand All @@ -32,15 +34,16 @@ tg://proxy?server=example.com&port=443&secret=ee00000000000000000000000000000000
2. Откройте её на телефоне или браузере
3. Telegram автоматически предложит подключиться через прокси

Вы также можете вручную вставить ссылку прокси в настройках Telegram в разделе "Данные и хранилище""Прокси".
Вы также можете вручную вставить ссылку прокси в настройках Telegram в разделе **«Данные и хранилище»«Прокси»**.

---

## ☕ Поддержка

Если вам это полезно, поставьте ⭐️ этому репозиторию

- [English](README.md)
- [English](README.md)
- [العربية](README_AR.md)
- [中文](README_CN.md)
- [Русский](README_RU.md)
- [فارسی](README_FA.md)
75 changes: 75 additions & 0 deletions functions/check.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
import { connect } from 'cloudflare:sockets';

export async function onRequest(context) {
if (context.request.method === 'OPTIONS') {
return new Response(null, {
status: 204,
headers: {
'Access-Control-Allow-Origin': '*',
'Access-Control-Allow-Methods': 'GET, OPTIONS',
'Access-Control-Max-Age': '86400'
}
});
}

const url = new URL(context.request.url);
const hdrs = {
'Content-Type': 'application/json',
'Access-Control-Allow-Origin': '*',
'Cache-Control': 'no-store'
};

if (url.searchParams.get('ping') === '1') {
return new Response(JSON.stringify({ pong: true }), { headers: hdrs });
}

const server = (url.searchParams.get('server') || '').replace(/\.+$/, '').trim();
const port = parseInt(url.searchParams.get('port') || '0', 10);

if (!server || port < 1 || port > 65535) {
return new Response(JSON.stringify({ up: false, lat: 0 }), { headers: hdrs });
}

const t0 = Date.now();
let sock = null;

try {
sock = connect({ hostname: server, port }, { secureTransport: 'off' });
const writer = sock.writable.getWriter();
const reader = sock.readable.getReader();

// 1. انتظار فتح الاتصال (بحد أقصى 2.5 ثانية)
await Promise.race([
writer.ready,
new Promise((_, r) => setTimeout(() => r(new Error('timeout')), 2500))
]);
const tcpLat = Date.now() - t0;

// 2. إرسال بيانات عشوائية لاستفزاز البروكسي (MTProto proxy سيرفضها فوراً)
const dummy = new Uint8Array([0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef, 0xef]);
await writer.write(dummy);

// 3. قراءة استجابة السيرفر (الخطوة الأهم)
// السيرفر الميت/المحجوب سيظل صامتاً. البروكسي الحقيقي سيغلق الاتصال فوراً لأنه بروتوكول خاطئ.
const readResult = await Promise.race([
reader.read(),
new Promise(res => setTimeout(() => res({ isHoneypot: true }), 1500))
]);

writer.releaseLock();
reader.releaseLock();

// إذا لم يستجب السيرفر وابتلع البيانات، فهو سيرفر وهمي أو جدار حماية
if (readResult.isHoneypot) {
throw new Error('Dead Server');
}

// إذا استجاب أو أغلق الاتصال بنجاح، فهو بروكسي حيّ
return new Response(JSON.stringify({ up: true, lat: tcpLat }), { headers: hdrs });

} catch (e) {
return new Response(JSON.stringify({ up: false, lat: 4500 }), { headers: hdrs });
} finally {
if (sock) sock.close().catch(() => {});
}
}
Loading