منبع / جمعآوری
ویژگیها و محدودیتها
آنچه TgWitness امروز پیادهسازی میکند، محدودیتهای پلتفرم تلگرام و آنچه به آینده موکول شده است.
مرجع طراحی: ۲۶ اکتبر ۲۰۲۶. مورد استفاده اصلی، گروهها و کانالهای خصوصی تلگرام است که برای حسابهای متصل قابل دسترسی هستند. این سند رفتار پیادهسازیشده، مرزهای پلتفرم و کارهای آینده را از هم جدا میکند. یک مورد معماری هدف به معنای ادعای وجود فعلی ویژگی نیست.
برنامهٔ مستقل#
TgWitness دارای فرایند نصب، دایرکتوری داده و چرخهٔ انتشار مستقل است. رابط کاربری وب همراه، پیکربندی و بازبینی را مدیریت میکند؛ سوابق صادرشده را میتوان بهطور مستقل استفاده کرد.
اپراتور حسابهای خود را متصل میکند، منابعی را که برای هر یک قابل مشاهده هستند انتخاب میکند و یک دفترچه مشاهدات ذخیرهشده دریافت مینماید. پنل محتوا، تغییرات ذخیرهشده، منشأ مشاهده و شکافهای شناختهشده را نمایش میدهد. یک محقق دیگر میتواند محتوای صادرشده را تأیید کند.
چهار وضعیت متمایز اهمیت دارد: تأیید حساب کاربری، دسترسی به منبع، یک گردآورندهٔ فعال، و میزان اثبات یکپارچگی تحویل. هیچیک از سه مورد اول به طور خودکار مورد چهارم را اثبات نمیکند. یک گروه ساکت لزوماً به معنای یک گردآورندهٔ ناکارآمد نیست.
تحقیقات مشترک#
یک مدیر میتواند توکنهای دسترسی را که محدود به فضاهای کاری و چتهای فردی هستند، با هفت مجوز، محدودیتهای IP، تاریخ انقضا، محدودیتهای ورود و کنترل جلسه صادر کند. یک بازبین فقط-خواندن میتواند یک پرونده را بدون دریافت مجوز تلگرام یا کلید پنل اصلی بررسی کند. دسترسی محدود به چت، از تنظیمات کل حساب و خروجیهای کامل دفترچه شواهد جداگانه باقی میماند.
MTProxy خودکار، مسیرهای فعال تلگرام را از چهار منبع عمومی یا یک کاتالوگ اپراتور حفظ میکند. حالتهای آیپی تعیین میکنند که آیا خرابی باید منتظر پروکسی دیگری بماند یا میتواند از یک مسیر مستقیم صریحاً مجاز استفاده کند. درخواستهای HTTP خارجی دارای یک مسیر جداگانه و دکمه خاموش هستند.
ابزارهای بایگانی#
نسخهٔ کنونی main قابلیتهای دریافت تاریخچه، جستوجو و تحلیل آرشیو،
MCP فقط-خواندنی، OCR/استنساخ محلی و وبهوکهای خروجی را اضافه میکند. اینها ویژگیهایی هستند که پس از پیشنمایش نسخهٔ قابل حمل 0.7.0 به کد منبع افزوده شدهاند. گزارشهای تحلیلی و متنهای شناساییشده از رویدادهای ضبطشده جدا میمانند.
افزودنیهای اختیاری#
راهاندازی روزانه عبارت است از: حساب کاربری → منابع → مشاهده. بخش اضافی یک مقصد جداگانه با یک ربات شاهد تلگرام و پیشنمایش ضبط در گیتهاب است. هر بخش قبل از نمایش تنظیمات، در دسترس بودن و نیازمندیهای خود را اعلام میکند. انتخاب یک کارت، دستورالعملها را باز میکند؛ این کار باعث ثبتنام یا راهاندازی هیچ سرویسی نمیشود.
راهاندازی ربات سه مرحله دارد: ایجاد دسترسی فقط-خواندنی، انتخاب تنظیمات انتشار، و راهاندازی روی میزبان شاهد. گزینههای شبکه و انتشار، اتصالات موجود و دستورات تأیید هویت بنا به درخواست افشا میشوند. پیکربندی دانلود شده با یک شاهد در حال اجرا متفاوت است. سوئیچینگ اضافی، پیشنویس را حفظ میکند؛ تغییرات حساب کاربری و قفل کردن، توکن و فرم موقت را پاک میکند. راهنمای داخلی شامل دستورالعملهای راهاندازی است. اقدامی که توسط GitHub Actions ضبط میشود، یک جمعآورنده پینشده را از فورک شما راهاندازی میکند، یک چت را ضبط کرده و یک انتقال رمزگذاریشده با منشأ گردش کار تولید میکند.
پروتکل و منابع خصوصی#
MTProto پروتکل تلگرام است؛ Telethon کتابخانه پایتونی است که TgWitness برای ارتباط با MTProto از آن استفاده میکند. آنها روشهای اتصال جایگزین نیستند. Collection از MTProto استفاده میکند؛ Witness اختیاری از طریق Bot API چکهای امضا شده را منتشر میکند.
هر فضای کاری دارای جریان بهروزرسانی حساب کاربری و کلاینت مجاز خود است. TgWitness مشاهدات را از منابع پیکربندیشده انتخاب کرده و برای عملکردهایی مانند اسنپشاتهای تاریخچه و دانلود رسانهها، درخواستهای صریح و جداگانهای ارسال میکند.
یک منبع خصوصی به نام کاربری عمومی نیازی ندارد. نوع همتا و شناسه عددی تلگرام، شناسهها هستند؛ عناوین و نامهای کاربری میتوانند تغییر کنند. دسترسی به عضویت و مجوزهای موجود بستگی دارد. TgWitness به طور خودکار به منابع ملحق نمیشود یا تأیید عضویت را دور نمیزند. یک هش دسترسی از حساب دیگر، توکن دسترسی جهانی نیست.
مدل جمعآوری باید تاریخچه پنهان پیش از پیوستن، نقشهای شرکتکننده/مدیر، لغو جلسه، حذف یا تغییر مجوزها، مهاجرت از گروه به ابرگروه، موضوعات/انجمنها، بحثهای مرتبط، هویت کانالها و پیوستهای در دسترس نبوده را در نظر بگیرد. هر ترکیبی به صورت زنده تأیید نشده است.
در دسترس بودن منبع در شروع کار جمعآورنده بررسی میشود. عدم وجود یک منبع در نتیجهٔ دیالوگ محدود به معنای تأیید نشدن دسترسی است، نه اثبات حذف. یک منبع در دسترس نبوده مانع مشاهده سایر منابع قابل دسترسی نمیشود. هرگز لینکهای دعوت یا جلسات واقعی را در مکانهای عمومی قرار ندهید.
حسابهای متعدد#
پنل از هر تعداد فضای کاری پشتیبانی میکند، هر کدام با ویژگیهای خاص خود:
- مجازیسازی، گاوصندوق رمزگذاریشده و مسیر اتصال.
- ژورنال SQLite و هویت امضای Ed25519.
- منابع منتخب، صف رسانهای و تنظیمات ضبط.
- وضعیت مشاهده، خطاها، نقاط کنترل و خروجیها.
تغییر فضای کاری نمایشدادهشده، جمعآوریکننده دیگری را متوقف نمیکند. تأیید مجوز حساب تکراری در فضاهای کاری مختلف رد میشود. ژورنالی که قبلاً به یک حساب تلگرام متصل شده است را نمیتوان به حساب دیگری اختصاص داد؛ اما اتصال مجدد به همان حساب مجاز است. این کار هویت حساب و دامنه مرتبط با شناسه پیام را حفظ میکند.
تعداد ثابتی وجود ندارد و هیچ تضمینی برای نرخ انتقال اندازهگیریشده ارائه نمیشود. فضاهای کاری یک فرآیند پایتون و حلقه رویداد را به اشتراک میگذارند. کارگران حساب کاربری جداگانه در آینده توسعه داده خواهند شد. برای جداسازی فرآیند فعلی، از نصبها، پورتها و دایرکتوریهای داده جداگانه استفاده کنید.
منابع هر حساب کاربری را که به آن دسترسی دارد، تعیین کنید. حسابهای کاربری مختلف ممکن است یک گروه را مشاهده کنند، اما مشاهدات آنها جداگانه باقی میماند و منشأ خود را حفظ میکند. دو حساب کاربری روی یک دستگاه تحت کنترل یک اپراتور، دو شاهد مستقل محسوب نمیشوند. خروجیها به ازای هر فضای کاری هستند؛ بسته پرونده ادغامشده یا خط زمانی جهانی تلگرام پیادهسازی نشده است.
ثبت و انتساب#
منابع، کلیدهای تغییر برای هر حساب کاربری در مورد پیامهای جدید، ویرایشها، حذفها، واکنشها و عضویت را فراهم میکند. تنظیمات از پیش تعیینشده، یا تمام دستهبندیها یا پیامها/ویرایشها/حذفها را حفظ میکنند. این سیاست برای گروههای انتخابشده در فضای کاری اعمال میشود، پس از راهاندازی مجدد نیز باقی میماند و با تغییرات قبل و بعد امضا میشود. تنظیمات پیشفرض تمام دستهبندیها را حفظ میکنند. غیرفعال کردن یک دستهبندی، سوابق قدیمی را حذف نمیکند؛ فعال کردن مجدد آن نیز رویدادهای از دست رفته را بازسازی نمیکند. سوابق عملیاتی، سایر رویدادهای خدمات گروه و اسنپشاتهای صریح تاریخچه، جدا هستند. اشیاء تلگرام ضبطشده ممکن است صرفنظر از سوئیچهای بهروزرسانی جداگانه، متادیتای جاسازیشده را حفظ کنند. هنوز هیچ اولویتبندی دستهبندی بر اساس گروه وجود ندارد.
| مطالب | اکنون ضبط شد | مرز |
|---|---|---|
| پیام | متن، شناسههای همپیش/پیام، متادیتای فرستنده، پاسخها و پاکت بهروزرسانی اصلی | امضای تلگرام برای این پیام بهصورت عمومی قابل تأیید نیست |
| ویرایش | نسخهٔ جدید مشاهدهشده و هر نسخهٔ قبلی ذخیرهشده | ویرایشهای میانی در طول زمان توقف ممکن است از دست بروند؛ فرستنده لزوماً ویراستار نیست |
| حذف | اطلاعرسانی و محتوای ضبطشده قبلی (در صورت وجود) | معمولاً زمان دقیق اقدام یا حذفکننده مشخص نیست |
| حذف بدون محدوده | اطلاعیهٔ اصلی در سطح حساب بدون حدس زدن همتا | همبستگی دقیق با شناسههای دامنهحساب کاربری که قبلاً ذخیره شدهاند، در آینده انجام خواهد شد |
| واکنش | شمارندههای تحویلشده و هویتهای اخیر قابل مشاهده | برای دریافت فهرست کامل راکتورها باید پرسوجوهای جداگانهای انجام داد؛ کانالها ممکن است هویتها را پنهان کنند |
| عضویت | پیامهای سرویس و بهروزرسانیهای تحویلشده به شرکتکنندگان | دیدهشدن بستگی به نقش و نوع چت دارد؛ رویدادهای از دست رفته دلیلی بر عدم حضور نیستند |
| اقدامات ادمین | فقط بهروزرسانیهای مرتبط ارائه میشوند | جمعآوری جداگانه لاگهای ادمین پیادهسازی نشده است |
| پیوست | توضیحدهنده نسخه اصلی، بایتهای دانلودشده/SHA-256 و نتایج تلاشها | یک فایل ناپدیدشده ممکن است بازیابیناپذیر باشد؛ آخرین نسخه جایگزین نمیشود |
| تاریخچه | اسکرینشات صریح پیامهای قابل مشاهدهٔ فعلی | تمام ویرایشها یا محتوای حذفشده را بازسازی نمیکند |
| فرآیند جمعآوری | شروع/توقف، ضربان قلب، خطاها، تنظیمات، دامنه و دریافت برنامه | گزارش خوداظهاری، نه تأیید فرآیند مستقل |
یک اقدام تنها در صورتی به یک شخص نسبت داده میشود که منبع واقعاً آن عامل را ارائه دهد. در غیر این صورت، رابط کاربری نسبتدهیِ غایب را گزارش میکند. نامهای کاربری و نامها ویژگیهای مشاهدهشده هستند، نه مدرکی بر هویت دنیای واقعی.
ظرفیت و محدودیتهای تلگرام#
تعداد چتهای یکسانی که بتوان با کیفیت تضمینشده نظارت کرد، وجود ندارد. ظرفیت بستگی به حداکثر رویدادها در ثانیه، حجم و اندازه پیوستها، RPCهای اضافی، حسابهای فعال، تأخیر/فضای خالی دیسک، شرایط شبکه، محدودیتهای تلگرام، تأخیر قابل قبول و عمق صف دارد.
تلگرام بین تحویل غیرفعال و استعلام کوتاه فعال تمایز قائل میشود. مستندات بهروزرسانی آن، فراخوانیهای اضافی updates.getChannelDifference را برای کانالهای باز/ابرگروهها توصیف میکند و حداکثر ده منبع استعلامشده کوتاه همزمان را توصیه میکند. این محدودیت دهتایی برای گروههای منتخب نیست و تضمینی برای جامعیت نیز ارائه نمیدهد.
| حالت | هدف | وضعیت |
|---|---|---|
| مشاهده استاندارد | ثبت بهروزرسانیهای ارائهشده از منابع منتخب | پیادهسازی شد |
| مشاهده اولویتدار | تستهای اضافی تفاوت برای یک مجموعهٔ منبع محدود | بهعنوان حالت کاربری پیادهسازی نشده است |
نظرسنجی با فرکانس بالا و دلخواه، نادیده گرفتن FloodWait یا فرض ظرفیت خطی از حسابهای اضافی، یک مدل اندازهگیری معتبر نیست. محدودیتهای پیشفرض عبارتند از ۱۰۰۰ دیالوگ اول فهرستشده، تا ۵۰۰ پیام در هر اسنپشات تاریخچه، ۱–۲۰۰۰ مگابایت برای هر فایل جمعآوریشده بر اساس نوع، و ۴ گیگابایت برای محتوای فشردهشده ZIP بدون فشردهسازی؛ هر یک از این مقادیر در هر فضای کاری تحت «پارامترها» قابل تغییر است. خروجیها محدودیت ثابت تعداد رویداد ندارند. حالت پشتیبان مرورگر به طور پیشفرض به ۱۲۸ مگابایت محدود است؛ CLI پخش دارای محدودیت انتقال قابل پیکربندی است که به طور پیشفرض ۵ گیگابایت است.
tools/check_capacity.py میزان دریافت و ارسال مصنوعی محلی را اندازهگیری میکند. نتایج آن اندازهگیریهای تحویل تلگرام یا شمارش تضمینشده گفتگوهای واقعی نیست. برای مشاهده نسخه اندازهگیریشده و بار کاری به VERIFICATION.md مراجعه کنید.
اعتمادپذیری و بازیابی#
رفتار پیادهسازیشده شامل تراکنشهای همزمان WAL در SQLite؛ نوشتارهای اتمی پیام و وظایف رسانهای؛ وظایف پایدار و تأخیرهای تلاش مجدد؛ توصیهگرهای نسخه اصلی؛ تلاشهای مجدد محدود؛ منتظر ماندن (FloodWait) پایدار برای رسانهها؛ دانلود رسانهها خارج از زمان انتظار شبکهای رویداد متنی؛ خروجیهای پیشوند ثابت در حالی که نوشتارهای بعدی ادامه دارند؛ تنظیمات اتمی و سوابق حسابرسی؛ حفظ مجوز فعال پس از ورود مجدد ناموفق؛ ایزولهسازی یک فضای کاری اضافی آسیبدیده؛ تلاشهای صریح برای اتصال مجدد؛ گزارشدهی متمایز از از دست رفتن مجوز؛ و تشخیص تغییر بر اساس زمان واقعی با استفاده از یک ساعت مونوتونیک.
موقعیتهای حساب کاربری و کانال (pts/qts/seq) پس از راهاندازی مجدد ذخیره و از سر گرفته میشوند، و چتهای مشاهدهشده بهطور دورهای مجدداً بررسی میشوند؛ به فرمت شواهد مراجعه کنید. ذخیره دورهای موقعیت، یک تأیید اتمی و بدونازدسترفتن پذیرش دفترچه شواهد نیست.
هر شروع فرآیند، رکوردهای قبلی و مرز آفلاین را ثبت میکند. تاریخچهٔ جاری به عنوان ترمیم شکاف در نظر گرفته نمیشود. نگهداری تفاوتها در تلگرام محدود است؛
differenceTooLong نمیتواند تمام محتوای ناپدید شده را بازسازی کند. شکافهای غیرقابل بازیابی باید حتی اگر یک اسنپشات بعدی از تاریخچه موفق شود، صریح باقی بمانند.
مدل مدرک#
هر رویداد یک توالی، زمان مشاهده محلی UTC، زمان منبع در صورت ارائه، نوع، منبع، عامل در صورت ارائه، بار باری اصلی، هش و امضای قبلی را ثبت میکند. مشاهدات پیام همچنین زمینه حساب/اجرای گردآورنده را نیز حفظ میکنند.
رسید فرایند امضا شده حاوی شناسه اجرای تصادفی؛ نسخههای وابستگی TgWitness/Python/OS؛ مقادیر SHA-256 و اثر انگشت تجمیعی فایل منبع؛ حساب کاربری اولیه، دامنه و تنظیمات؛ خوانشهای مونوتونیک UTC؛ و سرآیند ژورنال قبلی است. تغییرات تنظیمات، شروع/توقف و خطاها در همان دفترچه ثبت میشوند. نقاط کنترل در هنگام راهاندازی، هر پنج دقیقه در حین مشاهده (قابل تغییر) و در هنگام توقف منظم، حفظ میشوند. یک نقطه کنترل محلی حفظشده میتواند بازگشت به یک پیشوند دفترچه قبلی را تشخیص دهد.
| مکانیزم | آنچه اثبات میکند |
|---|---|
| SHA-256 فایل | بایتها با هَش شناختهشده مطابقت دارند |
| زنجیره هش رویداد | ثبت ترتیب/ارتباط نسبت به یک مرز شناختهشده |
| Ed25519 | امضا زیر یک کلید خاص |
| نقطهٔ کنترل مستقل نگهداریشده | مطالب بعدی با مرز حفظشده مطابقت دارد |
| اندازهگیری فایل برنامه | گزارش خوداظهاری جمعآورنده دربارهٔ فایلهای اندازهگیریشده |
| پاسخ معتبر و مستقل TSA | وجود بایتهای خاص در زمان TSA تحت فرضیات اعتماد صریح |
آمادهسازی درخواست RFC 3161 و تأیید پاسخ OpenSSL پیادهسازی شدهاند. ارسال خودکار پیادهسازی نشده است. یک درخواست یا امضای محلی که زمان ماشین را حمل میکند، یک مهر زمانی مستقل نیست. به TIMESTAMP.md مراجعه کنید.
یک اپراتور که کنترل کلید جمعآوریکننده و امضا را در دست دارد میتواند مشاهدات جدید امضاشدهای را جعل کند. این امضاها منشأ تلگرام، صحت یا پذیرش قانونی خودکار را اثبات نمیکنند. نگهداری امن قویتر مستلزم نقاط کنترل مستقل/ذخیرهسازی زمانی، کنترلهای دسترسی به کلید، سوابق انتقال و تأیید از نرمافزار مورد اعتماد است.
صادرات، استقرار و تحویل#
یک فایل ZIP امضا شده حاوی JSONL، CSV، HTML اصلی، پیوستهای حفظشده، هشها، یک مانیفست امضا شده و یک اعتبارسنجیکنندهٔ آسان است. این فایل یک فضای کاری و یک پیشوند ثابت و کامل برای دفترچه را پوشش میدهد. فیلترهای جستجو در پنل، رکوردها را بهصورت پنهان حذف نمیکنند. کلیدهای مخفی، توکنها و جلسات تلگرام حذف میشوند؛ مشاهدات اصلی همچنان میتوانند حاوی اطلاعات شخصی و متادیتای تلگرام باشند.
هَش زیپ، اثر انگشت مورد اعتماد، نقطه کنترل، رسید فرآیند و سوابق تحویل را جداگانه نگهداری کنید. به جای اعتماد صرف به کد اجرایی صرفاً به این دلیل که در فایل زیپ بررسیشده وجود دارد، از یک اعتبارسنج از یک نصب مورد اعتماد استفاده کنید.
رابط کاربری مرورگر بهصورت محلی و بدون Node.js، CDNها یا فونتهای خارجی عرضه میشود. یک توکن اپراتور نصب را کنترل میکند. دسترسی از راه دور به HTTPS یا تونل SSH نیاز دارد. تعاریف بومی پایتون و کانتینر فراهم شده است، همراه با نمونههای سرویس در پوشه deploy/؛ بررسیهای پلتفرم اجراشده بهطور جداگانه فهرست شدهاند.
فضای کاری پیشفرض از ریشه دادهها استفاده میکند؛ فضاهای کاری اضافی از profiles/<id>/ استفاده میکنند.
برای پشتیبانگیری، متوقف شدن فرآیند و مجموعه کامل دادهها/کلیدها لازم است. فایلهای فشرده (ZIP) شواهد، پشتیبانگیری از برنامه نیستند. اسرار میتوانند از یک کلید اصلی خارجی برای یک دایرکتوری داده جدید استفاده کنند؛ رمزگذاری دفترچه/رسانه توسط دیسک/حجم اپراتور فراهم میشود.
به CONNECTION-SECURITY.md و OPERATIONS.md مراجعه کنید.
معیارهای انتشار پایدار#
پیش از انتشار پایدار، مشخص کنید:
- گروههای خصوصی واقعی، ابرگروهها، انجمنها و کانالها با نقشهای اعضا/مدیر و تاریخچه پنهان/نمایان، شامل ورود/احراز هویت دو مرحلهای، لغو دسترسی و از دست دادن دسترسی.
- ویرایشها، حذفها، واکنشها، عضویت و رسانهها کنترلشده در برابر اقدامات شناختهشده.
- خرابی/قطعی فرایند/میزبان، خرابی دیسک/پر شدن دیسک، ارجاعات فایل منقضیشده، FloodWait، از دست رفتن شبکه، فایلهای خراب و بازگشت پایگاه داده به نسخه قبلی.
- استفادهٔ مستمر از چندین حساب با تأخیر اندازهگیریشده، صفها، حافظه و دیسک، شامل منابع بیصدا و پرصدا بهطور همزمان.
- وقفه بین پیشرفت وضعیت MTProto و پذیرش دفترچه.
- نصب تمیز روی ماتریس سیستمعامل/کانتینر هدف و بازیابی پشتیبان تأییدشده.
- بازبینی مستقل ادعاهای امنیتی، امضاها و انتساب/شواهد.
نظرسنجی لاگهای ادمین، لیستهای ریاکتور اضافی، نظرسنجی اولویتبندیشده، کارگران جداگانه و رمزگذاری در سراسر برنامه از کارهای آینده هستند. دسترسی پنل محدود در بخش «دسترسی و مجوزها» توضیح داده شده است. نسخه 0.6 از TData حساب واحد محدود و وارد کردن فایل حساب که در ACCOUNTS.md توضیح داده شده است، پشتیبانی میکند. پیش از انتشار، شرایط API تلگرام را مرور کنید. مراجع تحقیق و یافتههای پلتفرم در RESEARCH.md قرار دارند.