TgWitness / เอกสาร

อ้างอิง / การตั้งค่า

การเชื่อมต่อ, พร็อกซี และการคุ้มครองข้อมูล

การยืนยันตัวตน, กลุ่มพร็อกซีอัตโนมัติ, โหมด IP, นโยบายสำรอง, คำขอจากภายนอก และการจัดเก็บข้อมูลลับ

เอกสารนี้อธิบายการทำงานและข้อจำกัดของ TgWitness 0.7.0 การยืนยันตัวตน, การเข้าถึงแหล่งข้อมูล, การเชื่อมต่อเครือข่าย และความครบถ้วนของการบันทึก เป็นสถานะที่แยกกัน สำหรับขั้นตอนการลงชื่อเข้าใช้ รูปแบบไฟล์ และบัญชีหลายบัญชี ให้เริ่มจาก ส่วนบัญชีและรูปแบบเซสชัน สำหรับนโยบายเหตุการณ์และพฤติกรรม เมื่อเริ่มต้นใหม่ ให้ดูส่วนวิธีการทำงานของการเก็บรวบรวมข้อมูล

วิธีการยืนยันตัวตน#

API ID และ API hash ใช้เพื่อระบุแอปพลิเคชัน; ทั้งสองไม่แทนที่การเข้าสู่ระบบบัญชี ทั้งสองเป็นตัวเลือกใน TgWitness ลำดับความสำคัญ: คู่ที่ป้อนในแบบฟอร์ม, ตามด้วยคู่จาก ไฟล์ JSON ของบัญชีที่นำเข้า, ตามด้วยคู่ที่บันทึกในพื้นที่ทำงาน, และสุดท้ายคือกลุ่มคู่ในตัวระบบจำนวน 50 คู่สาธารณะในพูลที่สร้างขึ้นในตัว ซึ่งจะถูกทดลองในลำดับสุ่มพร้อมการหมุนเวียนอัตโนมัติเมื่อ Telegram ปฏิเสธคู่ใดคู่หนึ่ง เฉพาะ คู่ Telegram Desktop (2040) เท่านั้นที่จะถูกส่งไปพร้อมกับคำอธิบายลูกค้า Telegram Desktop ที่ตรงกัน คู่ของคุณเองจากเครื่องมือพัฒนา API ที่ my.telegram.org สามารถใช้กับบัญชีทั้งหมดของคุณได้; แต่ละบัญชียังคงมีการอนุญาตเป็นของตัวเอง

วิธีการ ข้อกำหนด การสนับสนุน TgWitness
โทรศัพท์, รหัส, 2FA (ตามความต้องการ) การเข้าถึงบัญชี; คู่ API เป็นตัวเลือก เข้าสู่ระบบ Panel
Auth Key HEX + DC ID กุญแจเต็ม 512 ตัวอักษร และ DC 1–5 แท็บ Direct Auth key; ตรวจสอบ User ID (ตามตัวเลือก) ก่อนบันทึกการอนุญาต
Telethon StringSession สตริงเซสชันที่ถูกต้อง เข้าสู่ระบบ Panel
Telethon SQLite .session เนื้อหาที่ปิดสมบูรณ์และสอดคล้องกัน นำเข้าสคีมาโดยตรงจากแผงควบคุม 7/8; CLI แบบออฟไลน์ (เป็นตัวเลือก)
Pyrogram SQLite .session เซสชันผู้ใช้ในสภาพแวดล้อมการผลิตที่ปิด การนำเข้าสคีมาแบบตรงจากแผงควบคุม 2/3
Telegram Desktop TData ZIP บัญชีเดียวแบบทันสมัย; รหัสผ่านท้องถิ่นหากมีการป้องกัน การแปลงข้อมูลในหน่วยความจำพร้อมการตรวจสอบค่าเช็กซัมและการถอดรหัส
JSON ของบัญชี สนาม API/session/key ที่รองรับ ข้อมูลเมตาดาต้าเพียงอย่างเดียวก็เพียงพอที่จะกรอกข้อมูลรับรอง API; แต่ยังจำเป็นต้องใช้การเข้าสู่ระบบด้วยเซสชัน/คีย์ หรือหมายเลขโทรศัพท์/QR Code
QR code สำหรับการเข้าสู่ระบบ การยืนยันจากแอป Telegram ที่ได้รับอนุญาต สร้าง QR Code ท้องถิ่น, กำหนดวันหมดอายุ/ลองใหม่, ตัวเลือกการยืนยันสองขั้นตอน (2FA)
TDLib / Pyrogram StringSession รูปแบบอื่น ๆ ที่เฉพาะสำหรับไลบรารี ไม่ได้รับการสนับสนุน
โทเค็นบอท บอทที่มีโมเดลการเข้าถึง/อัปเดตเป็นของตัวเอง ไม่ถูกใช้โดยผู้รวบรวมข้อมูลนี้

Telegram ใช้การส่งรหัสผ่าน; SMS ไม่มีการรับประกัน API hash ไม่สามารถกู้คืน เซสชันที่ถูกยกเลิก หรือแทนที่รหัสผ่าน 2FA ที่ลืมได้ TgWitness ไม่เก็บ รหัสเข้าสู่ระบบหรือรหัสผ่าน 2FA ของ Telegram ลงบนดิสก์

สำหรับแหล่งข้อมูลส่วนตัว บัญชีดังกล่าวต้องได้รับสิทธิ์การเข้าถึงแล้ว ชื่อผู้ใช้ของกลุ่ม ไม่จำเป็น การนำเข้าผ่านพร็อกซีหรือเซสชันจะไม่ให้สิทธิ์การเป็นสมาชิกหรือสิทธิ์ผู้ดูแลระบบ การเป็นสมาชิกในปัจจุบันไม่รับประกันการเข้าถึงประวัติก่อนการเข้าร่วม

นำเข้าไฟล์เซสชัน Telethon#

Telethon SQLite, Pyrogram SQLite และ Telegram Desktop TData ใช้รูปแบบไฟล์ที่แตกต่างกัน แผงควบคุมจะตรวจจับและแปลงโครงสร้างที่รองรับ; การเปลี่ยนชื่อไฟล์ไม่ถือเป็นการ แปลงข้อมูล ให้เลือกเซสชันหนึ่งและไฟล์ JSON ที่เกี่ยวข้องภายใต้ส่วน Files แล้วกด Connect account ระบบจะรับไฟล์ที่ตรงกันสูงสุดสี่ไฟล์และ รวมทั้งหมด 8 MiB ดูข้อจำกัดรูปแบบเพื่อทราบรายละเอียดเกี่ยวกับ TData/JSON ไม่มีระบบกู้คืนรหัสผ่าน การเข้าสู่ระบบด้วยโทรศัพท์/2FA หรือ QR จะสร้างการอนุญาตแยกต่างหาก

เส้นทางบรรทัดคำสั่งเฉพาะ Telethon (แบบเลือกใช้) ยังคงใช้งานได้:

  1. หยุดการทำงานของไคลเอนต์ที่ใช้เซสชันต้นฉบับ และสร้างสำเนาที่สอดคล้องกัน เครื่อง แปลงจะปฏิเสธไฟล์ที่มี WAL/journal ที่ยังไม่เสร็จสมบูรณ์ ปิดไคลเอนต์ต้นฉบับ อย่างถูกต้อง แทนที่จะลบไฟล์เหล่านั้นเพื่อหลีกเลี่ยงการตรวจสอบ
  2. จากสภาพแวดล้อม TgWitness ให้รัน:
python -m tgwitness.sessions account.session --out account.tgwitness-session
  1. ในส่วน "เพิ่มบัญชี" → "ไฟล์" ให้โหลดผลลัพธ์หรือ วางสตริงของมัน แล้วดำเนินการต่อ
  2. ตรวจสอบ ID บัญชีแบบตัวเลขที่แสดงอยู่ เลือกแหล่งข้อมูล และเริ่มการติดตาม

ตัวแปลงเปิด SQLite ในโหมดอ่านอย่างเดียว ไม่ดำเนินการอัปเกรดสคีมาหรือส่งคำขอเครือข่าย และไม่พิมพ์ข้อมูลเซสชัน มันตรวจสอบเวอร์ชันสคีมา ประเภทตาราง แถวเซสชันเดียว IP/พอร์ต/DC และความยาวของคีย์ การป้อนข้อมูลผ่าน CLI จำกัดอยู่ที่ 64 MiB; ข้อความ StringSession จำกัดอยู่ที่ 4 KiB. การแปลงผ่านแผงควบคุมจะอัปโหลดไฟล์ไปยังเซิร์ฟเวอร์ TgWitness ที่ได้รับการยืนยันตัวตน ประมวลผลในหน่วยความจำ และส่งข้อมูลรับรองที่ปรับให้เป็นมาตรฐานกลับไปยัง เบราว์เซอร์นั้น โดยไม่บันทึกไฟล์ต้นฉบับที่อัปโหลดไว้ ใช้ HTTPS สำหรับเซิร์ฟเวอร์ระยะไกล

ไฟล์ที่แปลงมาคือรหัสลับการเข้าถึงบัญชีที่ยังไม่ได้รับการเข้ารหัส เก็บไว้ในที่เก็บข้อมูล ที่ได้รับการป้องกัน และอย่าบันทึกหรือส่งไปยังบริการแปลงไฟล์ของฝ่ายที่สาม TgWitness เก็บเซสชันที่ได้รับอนุญาตไว้ในห้องนิรภัยที่เข้ารหัส การคัดลอกเซสชันจะไม่ สร้างการอนุญาตแยกต่างหาก: อย่าเรียกใช้ไคลเอนต์หลายตัวพร้อมกันด้วยกุญแจการอนุญาตที่คัดลอก และอย่าสมมติว่าการอัปเดตจะถูกส่งมาอย่างอิสระ

การแปลงข้อมูลจะโอนสิทธิ์การเข้าถึงเท่านั้น ไม่ใช่ข้อความต้นฉบับ แคชของเอนทิตี หรือ เคอร์เซอร์การอัปเดตที่คงอยู่ มันไม่แก้ไขปัญหาการกู้คืนการอัปเดตเมื่อกระบวนการเริ่มต้นใหม่

MTProto, Telethon และพร็อกซี#

MTProto คือโปรโตคอลของ Telegram ส่วน Telethon คือไลบรารีไคลเอนต์ Python ที่ TgWitness ใช้ MTProxy เป็นพร็อกซีการส่งข้อมูลของ Telegram; SOCKS5 และ HTTP CONNECT ให้บริการ อุโมงค์ทั่วไป แต่ไม่มีตัวใดที่สามารถแทนที่การยืนยันตัวตนของบัญชีได้

บันทึกเส้นทางสำหรับแต่ละพื้นที่ทำงานใน Account → Settings → Connection settings → Change connection route ก่อน เข้าสู่ระบบ พื้นที่ทำงานใหม่จะตั้งค่าเริ่มต้นเป็น Automatic MTProxy · public lists พร้อมฟังก์ชัน Hide IP พื้นที่ทำงานที่มีอยู่ซึ่งใช้ Direct อย่างชัดเจนจะยังคงรักษาโหมดที่อนุญาตให้ใช้งานได้

โหมด IP#

เส้นทางจะกำหนดการเชื่อมต่อ โหมด IP จะกำหนดว่าเมื่อใดที่อยู่ของเซิร์ฟเวอร์ อาจถูกเปิดเผย การควบคุมเหล่านี้ไม่ติดตั้ง VPN หรือกำหนดเส้นทางให้กับการรับส่งข้อมูลทั้งหมดของเครื่อง

โหมด Telegram คำขอจากภายนอก
ซ่อน IP (hide) ใช้พร็อกซี; หากไม่มีพร็อกซีใดทำงานได้ ให้รอ ไม่มีการสำรองโดยตรง ต้องใช้ SOCKS5/HTTP; ปฏิเสธคำขอที่ไม่มีพร็อกซีที่เหมาะสม
อนุญาตให้ใช้ตัวเลือกสำรอง (fallback) MTProxy อัตโนมัติอาจใช้ Direct หลังจากช่วงเวลาหน่วงที่กำหนดไว้ แล้วกลับสู่พร็อกซีที่ทำงานได้ แนะนำให้ใช้พร็อกซีภายนอกที่ตั้งค่าไว้แล้ว หรือเส้นทาง SOCKS5/HTTP ของบัญชีนั้น; หากไม่มี สามารถใช้ Direct ได้
Tunnel / VPN (tunnel) อนุญาตให้ใช้เส้นทางตรงและระบบสำรองอัตโนมัติแบบทันที การเชื่อมต่อโดยตรงได้รับอนุญาตเมื่อไม่มีการกำหนดค่าพร็อกซีที่เกี่ยวข้อง

โหมด Tunnel/VPN สมมติว่าคุณจัดการเครือข่ายนั้นแยกต่างหาก หากไม่มี tunnel ที่ทำงานได้ ผู้รับปลายทางจะสามารถเห็นที่อยู่ของเซิร์ฟเวอร์เองได้ ให้เลือกโหมดตาม สภาพเครือข่ายจริงของคุณ ไม่ใช่ตามชื่อของตัวเลือก

เลือกเส้นทาง#

เส้นทาง การตั้งค่า ขอบเขต
MTProxy อัตโนมัติ รายชื่อที่สร้างไว้ล่วงหน้า หรือแคตตาล็อกตัวดำเนินการ รักษาเส้นทาง Telegram ที่ใช้งานได้; การเปลี่ยนไปใช้เส้นทางสำรองโดยตรงขึ้นอยู่กับโหมด IP
ตรงไปตรงมา โหมด Tunnel/VPN Telethon ใช้เส้นทางเครือข่ายของผู้จัดงาน
SOCKS5 โฮสต์, พอร์ต, ชื่อผู้ใช้/รหัสผ่าน (ตามต้องการ) python-socks, เปิดใช้งาน DNS ปลายทางระยะไกล
HTTP CONNECT โฮสต์, พอร์ต, ชื่อผู้ใช้/รหัสผ่าน (ตามต้องการ) ใช้ HTTP CONNECT แบบธรรมดา; TLS ไปยังพร็อกซีเองยังไม่ได้รับการนำไปใช้
MTProxy โฮสต์, พอร์ต, รหัสลับ การส่งข้อมูล Telethon แบบทดลอง; 32 ตัวเลขฐานสิบหก หรือ dd + 32 ตัวเลขฐานสิบหก

ข้อมูลลับ TLS ee ปลอมจะถูกปฏิเสธ การปรับรูปแบบของ Telethon 1.45 สามารถลบคำนำหน้า และโดเมนได้ แต่ไม่ได้ใช้ Fake TLS วาง tg://proxy?server=…&port=…&secret=… หรือ https://t.me/proxy?server=…&port=…&secret=… และเลือก "Fill fields from link" สิ่งนี้จะตรวจสอบความถูกต้องและกรอกข้อมูลในช่องโดยไม่ต้องเชื่อมต่อหรือบันทึก; ตรวจสอบและบันทึก เส้นทางแยกกัน ช่องข้อมูลที่กรอกด้วยมือยังคงใช้งานได้ ดูลิงก์พร็อกซี Telegram

พร็อกซีสาธารณะที่ระบบของคุณจัดหา#

รายชื่อที่มาในตัวรวมสี่แหล่ง: SoliSpirit/mtproto, zakky8/mtproto-proxy-pro, kort0881/telegram-proxy-collector และ 3yed-61/MTP-Collector. สแนปช็อตที่รวมไว้มีข้อมูลเกี่ยวกับจุดปลายทาง (endpoint), ที่มาของข้อมูล และวันที่ดาวน์โหลด การปรากฏในรายชื่อของผู้ให้บริการไม่ใช่หลักฐานว่าพร็อกซีนั้นทำงานได้หรือส่งข้อมูลอัปเดตของ Telegram ทุกครั้ง

MTProxy ตรวจสอบการเชื่อมต่อเครือข่ายของ Telegram โดยอัตโนมัติ รักษาพร็อกซีที่ทำงานได้ และเปลี่ยนไปใช้พร็อกซีอื่นเมื่อพร็อกซีเดิมล้มเหลว พื้นที่ทำงาน (Workspaces) จะเลือกใช้พร็อกซีต่างกันเมื่อมี รายการที่ทำงานได้เพียงพอ; ไม่รับประกันว่าจะมีที่อยู่ทางออก (exit address) ที่ไม่ซ้ำกัน พร็อกซีที่ล้มเหลว จะพักก่อนที่จะลองอีกครั้ง หากไม่มีพร็อกซีใดทำงานได้ โหมด IP จะกำหนดว่าการเก็บข้อมูล ต้องรอหรือสามารถใช้การเชื่อมต่อโดยตรงได้ การเปลี่ยนพร็อกซีจะไม่เปลี่ยนบัญชี หรือลบบันทึกของบัญชีนั้น การเลือกและเปลี่ยนแปลงเส้นทางจะถูกบันทึกไว้ในบันทึกที่ลงนามแล้ว

เมื่อเส้นทางอัตโนมัติกำลังทำงาน รายการจะอัปเดตทุกชั่วโมง และการตรวจสอบการส่งข้อมูลจะดำเนินการ ทุกสิบนาทีตามค่าเริ่มต้น ช่วงเวลานี้สามารถปรับตั้งค่าได้ การอัปเดตรายการสาธารณะจะขอ อัปเดต; การดูรายการเพียงอย่างเดียวจะไม่เปลี่ยนแปลงเส้นทางที่ตั้งไว้ด้วยตนเอง

การตอบสนองของฟีดแต่ละครั้งถูกจำกัดไว้ที่ 1 MiB พร้อมเวลาหมดอายุคำขอ 8 วินาที และ เวลาดาวน์โหลดรวม 20 วินาที; การเปลี่ยนเส้นทาง จะถูกปฏิเสธ ระบบจะเก็บรักษาและกำจัดข้อมูลซ้ำได้สูงสุด 64 รายการที่เข้ากันได้ต่อแหล่งข้อมูล ตัววิเคราะห์ข้อมูล (parser) รับข้อมูลลับในรูปแบบเลขฐานสิบหก (hexadecimal) และ base64url ที่รองรับ รวมถึงฟีด JSON TLS ปลอมee ลิงก์ที่ไม่ถูกต้อง ค่า IP แบบตัวอักษรส่วนตัว/สำรอง และชื่อโฮสต์ท้องถิ่นจะถูก ข้ามไป ชื่อโฮสต์จะถูกแปลงและตรวจสอบก่อนใช้งาน และ IP ที่เลือกจะถูกตรึง ไว้สำหรับการเชื่อมต่อนั้น การรับข้อมูลใหม่โดยอัตโนมัติจะแปลงชื่อโฮสต์อีกครั้ง; ให้ใช้ ข้อมูลที่ป้อนด้วยตนเองอีกครั้งเพื่อแปลงชื่อโฮสต์นั้นใหม่

การตอบสนองจากฟีดที่ล้มเหลว ว่าง หรือไม่เข้ากัน จะเก็บภาพสแนปช็อตของแหล่งข้อมูลเดิมไว้ การอัปเดตเป็นแบบอะตอมิก ถูกจัดลำดับ และจำกัดการลองเพียงหนึ่งครั้งต่อนาทีต่อพื้นที่ทำงาน การตรวจสอบการส่งข้อมูลที่สำเร็จจะยืนยันการเชื่อมต่อเท่านั้น ไม่รับประกันความเป็นนิรนามหรือความครบถ้วนของการบันทึก

การส่งข้อมูลของ Telegram และคำขอ HTTPS ใช้เส้นทางที่ต่างกัน การดาวน์โหลดรายการใช้ การเชื่อมต่อ HTTPS แยกต่างหาก และเส้นทางคำขอภายนอกที่จัดเตรียมไว้ TGWITNESS_PROXY_FEED_PROXY กำหนดเส้นทางนั้นให้ใช้พร็อกซี HTTP/SOCKS5 อย่างชัดเจน; ทั้งสองเวอร์ชันของ Compose ในตัวเก็บข้อมูลจะส่งต่อข้อมูลนี้ กลุ่มพื้นหลังจะติดตามพื้นที่ทำงานหลัก ไม่มีการส่งเซสชัน Telegram, ข้อมูลรับรอง API, โทเค็นแผงควบคุม หรือ โทเค็นบอต ไปยังผู้ให้บริการฟีด ชื่อผู้ให้บริการ, วันที่ถ่ายภาพ และเส้นทางดาวน์โหลด จะปรากฏภายใต้ส่วน “แหล่งที่มาของรายชื่อ”

MTProxy ส่งผ่านเฉพาะการรับส่งข้อมูล Telegram เท่านั้น การดำเนินการ HTTP ใน Workspace เช่น การบันทึกเวลา, การแจ้งเตือน, การคัดลอกข้อมูลนอกระบบ และการตรวจสอบแหล่งที่มา จะใช้ proxy SOCKS5/HTTP แยกต่างหากเมื่อ ได้รับการกำหนดค่าไว้ แล้วจึงใช้เส้นทาง SOCKS5/HTTP ของบัญชี หากไม่มีทั้งสองอย่าง Hide IP จะปฏิเสธ คำขอ; โหมดอื่น ๆ อนุญาตให้ใช้ Direct ได้ สามารถปิดการใช้งานคำขอจากภายนอกได้ โปรกซีดาวน์โหลดฟีดที่ กำหนดค่าอย่างชัดเจนจะยังคงเป็นการตั้งค่าทับของผู้ดำเนินการที่แยกต่างหาก บริการพยานอิสระจะรักษาเส้นทางของตัวเอง

พารามิเตอร์พูลอัตโนมัติ ใน **Parameters → Automatic MTProxy** ให้กำหนดค่าเกณฑ์ความล้มเหลว (failure threshold), ระยะเวลาพัก (cooldown), การหมุนเวียนตามแผน (planned rotation), การแบ่งปันพร็อกซี (proxy sharing) และระยะเวลาหน่วงเวลาสำรองที่อนุญาต (permitted fallback delay) | การควบคุม | ค่าเริ่มต้น | | --- | --- | | ตัดการเชื่อมต่อก่อนการเปลี่ยน | 3 ครั้งภายใน 10 นาที | | จำนวนพร็อกซีที่ลองต่อครั้ง | 3 | | เวลาพักครั้งแรก / สูงสุดหลังความล้มเหลว | 10 นาที / 6 ชั่วโมง | | การหมุนเวียนตามแผน | ปิด; เปลี่ยนเมื่อเกิดข้อผิดพลาด | | จำนวนบัญชีต่อพร็อกซี | 0: ให้ความสำคัญกับการใช้บัญชีแยกกัน, แบ่งปันเมื่อจำเป็น ตั้งค่าเป็น 1 เพื่อรอการเข้าถึงแบบเอกสิทธิ์ | | ความล่าช้าก่อนอนุญาตให้ใช้ Direct fallback | 10 นาที; Hide IP ยังคงปฏิเสธ Direct | | การรีเฟรชฟีด / การตรวจสอบการส่งข้อมูล | 60 / 10 นาที; ค่าในพื้นที่ทำงานหลักใช้กับกลุ่มพร็อกซีที่ใช้ร่วมกัน | พร็อกซีที่แตกต่างกันไม่รับประกันว่าจะมีที่อยู่ทางออกที่แตกต่างกัน การตั้งค่าเหล่านี้ไม่ แทนที่ข้อจำกัดของ Telegram หรือรับประกันความเป็นนิรนาม

เพื่อแทนที่รายชื่อสาธารณะด้วยแคตตาล็อกผู้ให้บริการของคุณเอง ให้กำหนดค่าการแทนที่ด้านล่างนี้ การตั้งค่านี้จะปิดการสมัครรับข้อมูลจากภายนอกอย่างสมบูรณ์ รวมถึงเมื่ออาร์เรย์ proxies ของมันว่างเปล่า

คัดลอกแคตตาล็อกที่ว่าง ไปยัง proxy-config/proxies.json และเพิ่มจุดปลายทางสาธารณะที่คุณได้ติดตั้งแล้ว:

{"format": "tgwitness-proxy-catalog-v1", "proxies": [
  {"id": "project-eu", "label": "Project EU",
   "link": "tg://proxy?server=REPLACE_HOST&port=443&secret=REPLACE_SECRET"}
]}

ค่าตัวอย่างต้องถูกแทนที่ สามารถรับข้อมูลได้สูงสุด 32 รายการที่ต่างกัน รายการที่ ได้รับการยืนยันจะแสดงชื่อ/โฮสต์/พอร์ต โดยไม่ใช้ข้อมูลลับร่วมกัน; การเลือกหนึ่งรายการ จะบันทึกข้อมูลรับรองเข้าสู่คลังข้อมูลในพื้นที่ทำงาน ความพร้อมใช้งานยังไม่ได้รับการทดสอบจนกว่าจะ มีการทดสอบการส่งข้อมูลอย่างชัดเจน หากแคตตาล็อกมีรูปแบบไม่ถูกต้อง จะสามารถกำหนดค่าด้วยตนเองได้

การติดตั้งบนระบบท้องถิ่น: ตั้งค่า TGWITNESS_PROXY_CATALOG เป็นเส้นทาง JSON ในเครื่อง Docker:

docker compose -f compose.yaml -f deploy/compose/compose.proxies.yaml up -d --build

โอเวอร์เลย์ติดตั้ง proxy-config ในโหมดอ่านอย่างเดียว; ไฟล์ต้องสามารถอ่านได้โดย UID 10001 ของคอนเทนเนอร์ ไดเรกทอรีนี้ถูกยกเว้นจาก Git, บริบทการสร้าง Docker และไฟล์อาร์ไคฟ์ต้นฉบับ ไฟล์ แคตตาล็อกนี้กำหนดค่าบัญชีที่ใช้ในการเก็บข้อมูล; บอทพยานใช้ เส้นทาง HTTP/SOCKS5 ของตัวเอง ไม่ใช่ MTProxy

การเปลี่ยนเส้นทางสำรองโดยตรงถูกควบคุมโดยโหมด IP ข้างต้น ให้หยุดการสังเกตการณ์ก่อน ที่จะเปลี่ยนเส้นทาง การบันทึกจะตัดการเชื่อมต่อกับไคลเอนต์เก่าและยกเลิกการเข้าสู่ระบบที่ยังไม่เสร็จสิ้น; ไคลเอนต์ ใหม่จะใช้เส้นทางที่บันทึกไว้ การผูกมัดระหว่างบันทึก/เซสชันของบัญชีจะยังคงอยู่ การตั้งค่าจะแทนที่เส้นทางเดิม: ให้ป้อนข้อมูลรับรองพร็อกซีใหม่เมื่อแก้ไขเส้นทาง

ข้อมูลรับรองการเข้าสู่ระบบถูกเข้ารหัสด้วยnetwork.enc API ไม่ส่งคืนชื่อผู้ใช้ รหัสผ่าน หรือข้อมูลลับ บันทึกที่ลงนามแล้วจะระบุประเภทเส้นทางและระบุว่าข้อมูลรับรองการเข้าสู่ระบบ มีอยู่หรือไม่ โดยไม่รวมจุดปลายทางและข้อมูลลับ ผู้ใช้งานสามารถดูจุดปลายทาง ได้ในแผงควบคุม สนามข้อมูลลับจะถูกล้างหลังจากบันทึก ล็อก หรือเปลี่ยนพื้นที่ทำงาน

การทดสอบการเชื่อมต่อ Telegram (สามารถใช้งานได้ก่อนการเข้าสู่ระบบ) จะเปิดและปิดการเชื่อมต่อ Telegram ชั่วคราว ที่ไม่ได้รับอนุญาตผ่านเส้นทางดังกล่าว โดยไม่ติดต่อกับเว็บไซต์ตรวจสอบ IP การทดสอบที่สำเร็จจะยืนยันการเชื่อมต่อด้านการส่งข้อมูลเท่านั้น ไม่รวมถึงการเข้าถึงกลุ่ม การส่งข้อความที่สมบูรณ์ หรือความเป็นนิรนาม

พร็อกซีนี้ใช้กับการเชื่อมต่อของไคลเอนต์ Telegram รวมถึงการดาวน์โหลดสื่อจาก Telegram DC เครื่องมือ TSA ที่เรียกใช้ผ่านเบราว์เซอร์ pip SSH หรือแบบแมนนวล มีเส้นทางแยกต่างหาก ชื่อโฮสต์ของพร็อกซีอาจถูกแปลงชื่อในระบบท้องถิ่นได้ rdns มีผลต่อชื่อโฮสต์ปลายทาง; Telegram มักให้ที่อยู่ IP แบบตัวเลขของ DC

SOCKS5 และ HTTP CONNECT แบบธรรมดาไม่เข้ารหัสข้อมูลรับรองพร็อกซีหรือ ช่องอุโมงค์ระหว่างไคลเอนต์กับพร็อกซี MTProto ปกป้องการรับส่งข้อมูล Telegram แยกต่างหาก ใช้ ช่องทางการสื่อสารที่ปลอดภัยและเหมาะสมเพื่อเชื่อมต่อกับพร็อกซีบนเครือข่ายที่ไม่น่าเชื่อถือ กลุ่มส่วนตัว เป็นการสนทนาบนคลาวด์; MTProto ไม่เปลี่ยนกลุ่มเหล่านี้ให้เป็นการสนทนาลับ (Secret Chats) ที่เข้ารหัสแบบปลายทางถึงปลายทาง

การเข้ารหัสและลายเซ็น#

ชั้น ได้ดำเนินการแล้ว ความรับผิดชอบของผู้ดำเนินการ
การสื่อสารใน Telegram Telethon MTProto ความน่าเชื่อถือของแพลตฟอร์ม, เส้นทาง และความพร้อมใช้งาน
แผงควบคุมบนเว็บ Bearer token, loopback default, request limits HTTPS หรืออุโมงค์ SSH สำหรับการเข้าถึงจากระยะไกล
ความลับ Fernet สำหรับข้อมูลรับรอง API, เซสชัน, ข้อมูลรับรองพร็อกซี และกุญแจส่วนตัวสำหรับการลงนาม รักษาความปลอดภัยของกุญแจถอดรหัสและเซิร์ฟเวอร์ที่ทำงานอยู่
กุญแจ Vault กุญแจท้องถิ่น หรือกุญแจหลักภายนอก สำหรับการติดตั้งใหม่ พื้นที่จัดเก็บข้อมูลที่แยกต่างหากและได้รับการป้องกัน พร้อมการสำรองข้อมูลกุญแจ
ข้อความและไฟล์แนบ การเก็บข้อมูลแอปพลิเคชันในรูปแบบข้อความธรรมดา ดิสก์/โวลุ่มที่เข้ารหัส
ZIP/JSONL/CSV/HTML การตรวจสอบความถูกต้อง ไม่มีการเข้ารหัสเนื้อหา ปกป้องสำเนาที่ส่งออกและการถ่ายโอน
ที่มาและเวลา บันทึกที่ลงนาม, ใบรับกระบวนการ, เครื่องมือตาม RFC 3161 กุญแจที่เชื่อถือได้, จุดตรวจสอบอิสระ/TSA และขั้นตอนการเก็บรักษา

การป้องกันข้อมูลในส่วน Account แสดงสถานะเหล่านี้ โทเค็นของแผงควบคุมเป็น รหัสลับการเข้าถึง ไม่ใช่รหัสผ่านสำหรับการเข้ารหัส มันให้สิทธิ์การเข้าถึงระดับผู้ดูแลระบบ; โทเค็นที่ออกสามารถกำหนดขอบเขตให้ใช้ได้กับบัญชีและแชทได้ พื้นที่ทำงาน (Workspaces) ใช้ กระบวนการโฮสต์ร่วมกัน และไม่ใช่เทนท์ที่แยกกัน

การสาธิตสังเคราะห์ที่เริ่มต้นอย่างชัดเจนและแยกเป็นอิสระสามารถเปิดได้โดยอัตโนมัติผ่านการเชื่อมต่อ loopback โดยตรง ซึ่งใช้ความสามารถที่ทำงานในกระบวนการแยกต่างหาก; มันไม่ เปิดเผยโทเค็นแผงควบคุมที่ตั้งค่าไว้ และไม่ให้สิทธิ์เข้าถึงพื้นที่ทำงานจริง คำขอจากระยะไกล ผ่านพร็อกซี หรือข้ามต้นทาง ไม่สามารถรับหรือใช้ความสามารถการเข้าอัตโนมัตินี้ได้ ความสะดวกนี้ไม่ทำให้ขอบเขตการยืนยันตัวตนสำหรับข้อมูลบัญชีจริงถูกลบออก

BitLocker, LUKS, FileVault หรือ volume ที่เข้ารหัสแบบจัดการได้ สามารถปกป้องพื้นที่จัดเก็บข้อมูลได้ภายใต้ โมเดลภัยคุกคามของแต่ละระบบ ผู้ดูแลระบบของเครื่องที่เปิดล็อกและกำลังทำงาน ยังสามารถอ่านข้อมูลได้ ให้รวม SQLite WAL/SHM, ไฟล์สื่อ, ไฟล์ส่งออกชั่วคราว, swap, สำรองข้อมูล และไฟล์ที่ดาวน์โหลดจากเบราว์เซอร์ในการวางแผนพื้นที่จัดเก็บข้อมูล Docker volume ไม่ได้รับการเข้ารหัสเพียงเพราะ มันเป็น volume TgWitness ไม่ใช้ SQLCipher หรือการเข้ารหัสแบบอ็อบเจ็กต์

กุญแจหลักภายนอก#

สำหรับการติดตั้งใหม่ ให้วางกุญแจหลัก (master key) ไว้นอกไดเรกทอรีข้อมูล ขั้นตอนนี้จะไม่ย้ายคลังกุญแจท้องถิ่น (local-key vault) ที่มีอยู่โดยอัตโนมัติ ให้เตรียมไดเรกทอรีกุญแจ ที่เข้าถึงได้เฉพาะโดยตัวตนของบริการ (service identity) แล้วรันคำสั่งต่อไปนี้:

python -m tgwitness.security create-master-key /private/keys/tgwitness-master.key
export TGWITNESS_VAULT_KEY_FILE=/private/keys/tgwitness-master.key
python -m tgwitness --data-dir /private/observations/new-case

PowerShell, โดยใช้สภาพแวดล้อมโครงการที่ติดตั้งไว้:

python -m tgwitness.security create-master-key E:\PrivateKeys\tgwitness-master.key
$env:TGWITNESS_VAULT_KEY_FILE = 'E:\PrivateKeys\tgwitness-master.key'
python -m tgwitness --data-dir E:\PrivateData\new-case

ใน Docker ให้ mount ไฟล์แบบอ่านอย่างเดียว (read-only) นอก /data เช่น ที่ /run/secrets/tgwitness-master.key และตั้งค่าตัวแปรสภาพแวดล้อม (environment variable) ให้ชี้ไปยังเส้นทางนั้น UID ของบริการต้องสามารถอ่านไฟล์นั้นได้ ให้ส่งเส้นทาง (path) ไม่ใช่ไบต์ของกุญแจ (key bytes) ผ่าน ไฟล์สภาพแวดล้อม/ไฟล์การตั้งค่า

แต่ละพื้นที่ทำงานจะได้รับ salt สาธารณะแบบสุ่มและกุญแจ Fernet ของตัวเองที่สร้างขึ้นผ่าน HKDF-SHA256. vault.external.json เก็บข้อมูลเมตาดาต้าการสร้างกุญแจ ไม่ใช่กุญแจหลัก หากกุญแจขาดหายหรือผิดพลาด ระบบจะไม่สามารถเริ่มต้นได้โดยไม่แทนที่กุญแจนั้นโดยเงียบๆ ให้เก็บรักษาทั้ง ข้อมูลเมตาดาต้า salt และกุญแจหลักไว้เพื่อการกู้คืน

ทุกพื้นที่ทำงานล้วนมีต้นกำเนิดจากกุญแจหลักเดียวกัน; การถูกบุกรุกของกุญแจหลักจะส่งผลกระทบต่อ ระบบติดตั้งทั้งหมด กระบวนการที่กำลังทำงานอยู่สามารถถอดรหัสความลับได้ นี่ไม่ใช่ HSM หรือ KDF ของรหัสผ่าน รหัสผ่านที่ผู้ใช้กำหนดเองจะไม่ได้รับการยอมรับแทนกุญแจสุ่ม

เก็บกุญแจเดิมไว้สำหรับการติดตั้งที่มีอยู่จนกว่าการย้ายระบบอย่างตั้งใจจะ ถูกดำเนินการและตรวจสอบแล้ว การลบvault.key หรือการเปลี่ยนกุญแจหลักอาจทำให้ การเข้าถึงเซสชัน/กุญแจลงนามถูกทำลาย เก็บสำเนาสำรองที่เข้ารหัสและกุญแจไว้แยกกัน และ ทดสอบการกู้คืนในอินสแตนซ์ที่แยกออกมา

แหล่งข้อมูลและขอบเขตการตรวจสอบ#

ตรวจสอบเมื่อวันที่ 26 ตุลาคม 2026:

  • https://core.telegram.org/api/auth
  • https://core.telegram.org/api/obtaining_api_id
  • https://docs.telethon.dev/en/stable/basic/signing-in.html
  • https://docs.telethon.dev/en/stable/concepts/sessions.html
  • https://core.telegram.org/mtproto/mtproto-transports
  • https://github.com/telegramdesktop/tdesktop/blob/dev/Telegram/SourceFiles/storage/storage_account.cpp
  • Telethon 1.45.0: SQLiteSession, StringSession, Connection._proxy_connect, TcpMTProxy.normalize_secret และวิธีการดาวน์โหลด

การทดสอบในระบบท้องถิ่นครอบคลุมอุปกรณ์ทดสอบ loopback SOCKS5/HTTP CONNECT, เซสชัน SQLite สังเคราะห์, การแยกเส้นทาง, การยกเว้นข้อมูลลับ และการปฏิเสธเมื่อไม่มีกุญแจ ไม่มีการทดสอบ ความสามารถในการทำงานร่วมกันระหว่าง Telegram และพร็อกซีจริง หรือพฤติกรรมของ MTProxy ในสภาพแวดล้อมจริง ดู VERIFICATION.md และ LIVE_ACCEPTANCE.md