Lompat ke konten
dokumentasi.id
Commit a5cb8ad
v4
Star20 rb

4.4

Username Tracker

Opsi nomor 4 pada menu, Username Tracker, dipetakan ke fungsi TrackLu melalui 'func': TrackLu di list options (GhostTR.py:197-200). Fungsi itu dideklarasikan dengan dekorator is_option, sehingga run_banner tampil lebih dulu sebelum ia membaca satu username lewat input dan masuk ke blok try (GhostTR.py:121-124). Rincian dekorator tersebut dibahas di Banner, Warna ANSI, dan Helper.

Siklus pemeriksaan satu username

TrackLu tidak memanggil satu endpoint agregator. Ia menyiapkan results = {}, lalu menyusun list social_media berisi 24 entri, masing-masing pasangan url bertemplat {} dan name yang dipakai sebagai label hasil (GhostTR.py:125-151). Loop sesudahnya mengisi templat dengan username target, meminta URL itu ke requests, lalu menulis satu nilai ke results untuk setiap situs (GhostTR.py:152-158).

sequenceDiagram
    autonumber
    actor U as User
    participant T as TrackLu
    participant L as social_media
    participant H as requests
    participant D as results
    U->>T: input Enter Username
    T->>D: siapkan dict kosong
    loop tiap site pada social_media
        T->>L: ambil site url
        L-->>T: templat berisi {}
        T->>H: requests.get dengan url hasil format
        H-->>T: response
        alt response.status_code == 200
            T->>D: results name diisi url
        else status lain
            T->>D: results name diisi Username not found !
        end
    end
    loop tiap pasangan pada results
        T-->>U: baris [ + ] site dan nilainya
    end
%% fig: Siklus TrackLu untuk satu username
%% desc: Satu username diuji ke setiap entri social_media secara berurutan, dan status 200 menentukan nilai yang masuk ke results.
Fig. 1: Siklus TrackLu untuk satu usernameSatu username diuji ke setiap entri social_media secara berurutan, dan status 200 menentukan nilai yang masuk ke results.

Request dijalankan satu per satu di dalam loop, sehingga urutan pemeriksaan sama dengan urutan list: Facebook, Twitter, Instagram, sampai We Heart It. Tidak ada timeout, headers, atau session pada pemanggilan requests.get (GhostTR.py:152-158).

Percabangan status ke results

Satu-satunya sinyal "ditemukan" adalah response.status_code == 200 (GhostTR.py:152-158). Status lain tidak memisahkan 404, 403, atau 500; semuanya jatuh ke string Username not found ! yang sudah membawa kode warna Ye di dalam nilainya (GhostTR.py:152-158). Kedua cabang itu bertemu lagi di results sebelum dicetak.

graph LR
    A["username dari input"] --> B["social_media 24 entri"]
    B --> C["url = site url + format username"]
    C --> D["requests.get url"]
    D --> E{"status_code == 200"}
    D -.->|exception| I["print Error lalu return"]
    E -->|ya| F["results[name] = url"]
    E -->|tidak| G["results[name] = Username not found !"]
    F --> H["print header dan baris per situs"]
    G --> H
    style A fill:#f59e0b,color:#000
    style B fill:#f59e0b,color:#000
    style F fill:#2d7d46,color:#fff
    style G fill:#dc2626,color:#fff
    style I fill:#dc2626,color:#fff
    style H fill:#8b5cf6,color:#fff
%% fig: Percabangan status HTTP ke dict results
%% desc: Hasil tiap request dipetakan ke satu kunci results, lalu semua cabang gabung pada pencetakan header dan baris per situs.
Fig. 2: Percabangan status HTTP ke dict resultsHasil tiap request dipetakan ke satu kunci results, lalu semua cabang gabung pada pencetakan header dan baris per situs.
AspekNilai di TrackLu
Jumlah entri social_media24
Kunci unik di results23, karena nama Snapchat dipakai dua kali
Nilai saat status_code == 200results[name] = url
Nilai saat status lainUsername not found ! dengan prefiks warna Ye
timeout pada requesttidak diset
Penentu urutan cetakurutan penyisipan kunci pada results

Nama Snapchat muncul dua kali di list dengan URL yang sama, https://www.snapchat.com/add/{} (GhostTR.py:136-148). Karena results ber-key site['name'], penulisan kedua menimpa yang pertama, jadi 24 entri hanya menghasilkan 23 kunci (GhostTR.py:152-158).

Pola URL yang diperiksa

Semua entri memakai satu tempat kosong {} yang diisi username lewat str.format (GhostTR.py:152-158). Perbedaan antarentri hanya path di sekitar tempat kosong itu (GhostTR.py:125-151).

Pola pathSitus
/{} tepat setelah domainFacebook, Twitter, Instagram, GitHub, Pinterest, Tumblr, Youtube, Behance, Periscope, Twitch, Dribbble, Ello, Telegram, We Heart It
https://soundcloud.com/{} tanpa wwwSoundCloud
/@{}TikTok, Medium, Product Hunt
/in/{}LinkedIn
/add/{}Snapchat, ditulis dua kali
/profile/{}Quora
/people/{}Flickr
/stumbler/{}StumbleUpon

Format keluaran

Setelah loop selesai, TrackLu mencetak header ========== SHOW INFORMATION USERNAME ==========, satu baris kosong, lalu satu baris per kunci results dengan bentuk [ + ] <site> : <nilai> (GhostTR.py:163-166). URL yang ditemukan tampil hijau karena prefiks {Gr} pada format string, sedangkan penanda tidak ditemukan tetap kuning karena nilai string-nya sendiri diawali Ye (GhostTR.py:163-166).

README menyertakan tangkapan layar menu ini tepat di atas keterangan bahwa pencarian dilakukan pada username target di media sosial (README.md:45-48). Pada gambar tersebut header yang tampak berbunyi GHOST - TRACKER USERNAME, sementara run_banner di commit ini menulis GHOST - TRACKER - IP ADDRESS (GhostTR.py:275-282).

Kegagalan dan jebakan

Blok try menutup hampir seluruh badan fungsi, dari input sampai loop request (GhostTR.py:121-124). Bila satu request melempar exception, TrackLu mencetak Error : {e} berwarna merah lalu return tanpa mencetak header maupun baris hasil (GhostTR.py:159-161). Kegagalan pada situs terakhir pun membuang semua hasil yang sudah terkumpul di results.

⚠️ requests.get dipanggil 24 kali secara berurutan tanpa timeout (GhostTR.py:152-158). Satu host yang menggantung menahan seluruh pemeriksaan, dan exception dari request tersebut menghentikan fungsi sebelum hasil dicetak (GhostTR.py:159-161).

⚠️ Ambang 200 tidak membedakan profil yang benar-benar ada dari halaman error yang tetap membalas 200 (GhostTR.py:152-158). Verifikasi manual tetap diperlukan sebelum menyimpulkan sebuah username ditemukan.

Hasil pemeriksaan tidak disimpan ke berkas atau database; fungsi hanya mencetaknya ke terminal lalu mengembalikan kendali ke menu. Alur kembali ke menu dan penantian Press enter to continue dijelaskan di Loop Menu dan Dispatch Opsi, sedangkan batas penggunaan fitur ini dibahas di Batasan dan Etika Penggunaan.