
ローカルWebアプリとして動作するTelegram OSINT、スクレイピング、アーカイブツール。マルチアカウント収集、過去の写真と変更差分を含むプロフィール検索、10種類のエクスポート形式に対応。
Telegram OSINT、スクレイピング、アーカイブ。
あなたのマシン上だけで動作し、Telegramとのみ通信するローカルWebアプリ。
npm install
npm start
次に http://127.0.0.1:5173 を開きます。初回起動時はAPI認証情報、QRコードサインイン、ダイアログの読み込みを順に案内されます。通信するサーバーはTelegramのみです。作成するアカウントも、テレメトリも、間に挟まるサービスもありません。収集したデータはあなたが所有するSQLiteファイルに保存されます。
telegram-scraper、telescope、Harrier の後継であり、Telethon 1.44 上に構築されています。
| 収集 | 複数アカウントにまたがるチャンネル、グループ、フォーラムトピック。メディア、重複排除、再開に対応 |
| 調査 | 電話番号、@username、ID、t.me リンクからプロフィールへ。過去のすべての写真と、前回からの差分 |
| エクスポート | プレーンなCSVからハッシュ化された証拠バンドルまで10形式 |
| 動作環境 | Node 18+、Python 3.12+、SQLite。データベース1つ、フォルダ1つ、サービス不要 |
収集
-100 ID、そしてそれを閲覧できるアカウントのバッジを表示調査
@username、ユーザーID、t.me リンクを検索エクスポート
npm install は server/.venv の下にPython環境を作成し、両側をインストールします。
| 項目 | 場所 |
|---|---|
| 設定 | ~/.config/tgscope/config.json (mode 600) |
1つのデータベースにすべてが格納されるため、ダイアログ横断検索、共有ユーザーテーブル、メディアの重複排除、転送グラフが可能になっています。
ファイルはダイアログ種別、次にダイアログ、フォーラムトピック、メディア種別の順に整理されます:
media/
├── channels/technews_-1002116176890/
│ ├── photos/00004711-8001-conference-slides.jpg
│ └── documents/00004802-8210-quarterly-report.pdf
├── groups/pythondev_-1001597139842/
│ ├── general/photos/…
│ └── help/voice/00000004-9004-voice.ogg
└── profiles/123456789/000-5544332211.jpg
ディレクトリ名はハンドルと完全なIDを組み合わせたもので、非ASCIIのタイトルは音訳され、ファイル名はゼロ埋めされて時系列に並ぶようになっています。
すべてのTelegram呼び出しは、トークンバケットと FloodWait バックオフを備えたアカウント単位のガバナーを通過します。メッセージ、ダイアログ、メンバー、プロフィール写真など、すべてのページング読み取りは、フラッド待機を待ってから再開され、実行を失敗させません。3つのプロファイル:
より長い待機はアクティビティログに表示され、待機が行われます。1回の読み取りで12回連続すると断念して報告されます。
複数のアカウントがサポートされています。設定で1つを バーナー としてマークすると、電話番号の検索は自動的にそのアカウントで実行されます。なぜなら、それが唯一のリスクのある操作だからです:
電話番号の検索は、その番号を一瞬だけ連絡先としてインポートし、再び削除します。相手がすでにあなたの番号を保存している場合、「Telegramに参加しました」という通知が表示される可能性があります。tgscopeは毎回必ず最初に確認を求め、プロフィールカードには使用したアカウントが記録されます。
npm test # 92 backend and 42 frontend tests, no network needed
npm run build # production bundle of the client
バックエンドはTelethonコア上のFastAPIで、フェイクのTelethonクライアントに対してテストされています:スクレイパー、エクスポーター、メディアの構成、すべてのスキーママイグレーション。フロントエンドのテストは、ブラウザの背後にある純粋なロジック、期間計算、ヒストグラムのバケット分割、数値とタイムスタンプのフォーマットをカバーし、すべての画面を空の状態とデータ投入状態の2回レンダリングします。
scripts/demo/ は、シードされたフェイクデータから docs/preview.gif を再生成します。chromium と ffmpeg が必要で、実際のワークスペースには一切触れず、アプリの一部でもありません。
ソースコードにはコメントがありません — 命名と構造が意味を担い、テストがそれを強制しています。
研究、ジャーナリズム、および許可された調査のためのものです。Telethonを通じて公式のTelegram APIを使用し、あなたのアカウントがすでに閲覧できるものだけを読み取ります — 誰かのプライバシー設定を迂回することはありません。嫌がらせやストーキングに使用せず、Telegramの利用規約を尊重し、適用されるデータ保護法に注意してください。
MITライセンス。
| 形式 | 内容 |
|---|
csv | ダイアログごとに1ファイル |
json / jsonl | 完全なメタデータ。JSONLは行ごとにストリーム出力 |
xlsx | メッセージ、メディア、参加者、リアクションのシート |
html | スタンドアロンレポート:統計、アクティビティ、上位送信者、転送元、検索可能なテーブル |
markdown | 同じレポートをテキストで |
gexf / edges | GephiとMaltego用の転送グラフ |
sqlite | 選択したダイアログのみを含むスタンドアロンデータベース |
bundle | データ、メディア、SHA-256ハッシュのマニフェスト、収集ログを含むZIP |
| データベース |
~/.local/share/tgscope/tgscope.db (WAL, FTS5) |
| メディア | ~/.local/share/tgscope/media/ |
| エクスポート | ~/.local/share/tgscope/exports/<timestamp>-<label>/ |
| プロファイル | メディアワーカー数 | リクエスト間隔 | 静かに吸収される待機時間 |
|---|
stealth | 1 | 1.6 s | 最大180秒 |
balanced | 4 | 0.35 s | 最大90秒 |
fast | 8 | なし | 最大45秒 |