Lompat ke konten
dokumentasi.id
Commit a5cb8ad
v2
Star20 rb

Kamu membaca versi lama. Halaman ini hanya bisa dibaca.

10

Peta Endpoint dan Konfigurasi

GhostTrack tidak membaca berkas konfigurasi apa pun. Semua titik konfigurasi ditulis sebagai literal di dalam GhostTR.py: URL endpoint, daftar social_media, dan default_region. Empat handler menu memakai titik-titik itu, yaitu IP_Track (GhostTR.py:40-41), phoneGW (GhostTR.py:80-81), TrackLu (GhostTR.py:121-122), dan showIP (GhostTR.py:169-170). Halaman ini memetakan endpoint beserta data yang dikonsumsinya. Perilaku tiap menu dijelaskan di IP Tracker, Phone Number Tracker, Username Tracker, dan Show Your IP.

Peta handler ke endpoint

Hanya tiga permintaan HTTP keluar yang ada di seluruh berkas: satu ke ipwho.is, satu ke api.ipify.org, dan satu per entri social_media.

graph TD
  IP_Track["IP_Track"] --> IPWHOIS["ipwho.is GET"]
  showIP["showIP"] --> IPIFY["api.ipify.org GET"]
  TrackLu["TrackLu"] --> SOCIAL["social_media 24 URL template"]
  SOCIAL --> S1["domain + username"]
  SOCIAL --> S2["path tetap + username"]
  phoneGW["phoneGW"] --> PH["phonenumbers.parse"]
  PH --> REGION["default_region = ID"]
  PH --> FMT["format_number_for_mobile_dialing"]
  REQ["requests"] --> IPWHOIS
  REQ --> IPIFY
  REQ --> SOCIAL
  style IPWHOIS fill:#f59e0b,color:#000
  style IPIFY fill:#f59e0b,color:#000
  style SOCIAL fill:#f59e0b,color:#000
  style REGION fill:#f59e0b,color:#000
  style S1 fill:#8b5cf6,color:#fff
  style S2 fill:#8b5cf6,color:#fff
  style FMT fill:#8b5cf6,color:#fff
  style PH fill:#2d7d46,color:#fff
  style REQ fill:#2d7d46,color:#fff
%% fig: Kaitan handler ke endpoint dan pustaka
%% desc: Tiga handler memanggil endpoint lewat pustaka requests, sementara phoneGW bergantung pada phonenumbers dan default_region.
Fig. 1: Kaitan handler ke endpoint dan pustakaTiga handler memanggil endpoint lewat pustaka requests, sementara phoneGW bergantung pada phonenumbers dan default_region.

Warna jingga menandai literal konfigurasi di dalam berkas, ungu menandai nilai turunan yang dibentuk saat runtime, dan hijau menandai jalur pemanggilan yang berhasil.

HandlerPemanggilanEndpoint atau nilaiBaris
IP_Trackrequests.get(f"http://ipwho.is/{ip}") lalu json.loads(req_api.text)http://ipwho.is/{ip}GhostTR.py:45-46
showIPrequests.get('https://api.ipify.org/') lalu respone.texthttps://api.ipify.org/GhostTR.py:171-172
TrackLurequests.get(url) untuk setiap entri social_mediasite['url'].format(username)GhostTR.py:152-158
phoneGWphonenumbers.parse(User_phone, default_region)default_region = "ID"GhostTR.py:84-86

TrackLu memperlakukan kode status 200 sebagai satu-satunya tanda akun ditemukan; kode lain, termasuk 403 dan 429, masuk ke cabang Username not found (GhostTR.py:152-158).

Field ipwho.is yang dibaca

IP_Track mengakses 26 kunci secara langsung tanpa pengecekan keberadaan kunci, sehingga perubahan bentuk response akan memunculkan KeyError. Penanganan kegagalan seperti itu dibahas di Penanganan Error dan Interupsi.

KelompokKunci yang dibaca
Datartype, country, country_code, city, continent, continent_code, region, region_code, latitude, longitude, is_eu, postal, calling_code, capital, borders
flagemoji
connectionasn, org, isp, domain
timezoneid, abbr, is_dst, offset, utc, current_time

Keseluruhan kunci itu dibaca berurutan di GhostTR.py:49-77. Dua kunci dipakai ulang untuk menyusun tautan peta: int(ip_data['latitude']) dan int(ip_data['longitude']) dipotong menjadi bilangan bulat sebelum ditempel ke https://www.google.com/maps/@... (GhostTR.py:59-61).

Daftar social_media

Daftar ini berisi 24 entri (GhostTR.py:126-151). Hanya dua bentuk pola yang dipakai: username langsung setelah domain, atau username setelah satu segmen path tetap.

nameurl templateBaris
Facebookhttps://www.facebook.com/{}127
Twitterhttps://www.twitter.com/{}128
Instagramhttps://www.instagram.com/{}129
LinkedInhttps://www.linkedin.com/in/{}130
GitHubhttps://www.github.com/{}131
Pinteresthttps://www.pinterest.com/{}132
Tumblrhttps://www.tumblr.com/{}133
Youtubehttps://www.youtube.com/{}134
SoundCloudhttps://soundcloud.com/{}135
Snapchathttps://www.snapchat.com/add/{}136
TikTokhttps://www.tiktok.com/@{}137
Behancehttps://www.behance.net/{}138
Mediumhttps://www.medium.com/@{}139
Quorahttps://www.quora.com/profile/{}140
Flickrhttps://www.flickr.com/people/{}141
Periscopehttps://www.periscope.tv/{}142
Twitchhttps://www.twitch.tv/{}143
Dribbblehttps://www.dribbble.com/{}144
StumbleUponhttps://www.stumbleupon.com/stumbler/{}145
Ellohttps://www.ello.co/{}146
Product Hunthttps://www.producthunt.com/@{}147
Snapchathttps://www.snapchat.com/add/{}148
Telegramhttps://www.telegram.me/{}149
We Heart Ithttps://www.weheartit.com/{}150

⚠️ Snapchat tercatat dua kali dengan template yang sama, yaitu pada baris 136 dan baris 148. Karena results di-key dengan site['name'], entri kedua menimpa entri pertama dan satu permintaan HTTP tambahan tetap dikirim (GhostTR.py:126-151).

Region default dan dependensi

Titik konfigurasiNilaiPemakaianBaris
default_region"ID"argumen kedua phonenumbers.parseGhostTR.py:84-86
default_region"ID"argumen kedua phonenumbers.format_number_for_mobile_dialingGhostTR.py:92-94

Tanpa prefiks negara pada input, default_region menentukan bagaimana phonenumbers menafsirkan nomor; nilai ini juga menjadi dasar format panggilan mobile. Hanya dua pustaka pihak ketiga yang diperlukan, yaitu requests dan phonenumbers, dan keduanya ditulis tanpa pin versi (requirements.txt:1-2).

Jebakan konfigurasi

⚠️ Endpoint ipwho.is dipanggil lewat http://, bukan https://, sehingga seluruh respons perujukan IP berjalan tanpa TLS (GhostTR.py:45-46).

⚠️ Tidak satu pun pemanggilan requests.get diberi timeout, baik pada IP_Track (GhostTR.py:45-46), TrackLu (GhostTR.py:154), maupun showIP (GhostTR.py:171-172). Bila host tujuan tidak menjawab, proses menunggu tanpa batas. Karena itu, mengganti host atau menambah field berarti mengubah tiga titik berbeda di dalam satu berkas.