8 poin oleh baeba 2024-08-28 | 16 komentar | Bagikan ke WhatsApp

Ini adalah aplikasi Android yang memungkinkan Anda mencari tiket pesawat domestik
dan melakukan pemesanan melalui situs web resmi maskapai.

Secara pribadi saya cukup sering bepergian ke Pulau Jeju,
jadi saat mencari tiket pesawat yang praktis, cepat, dan murah,
saya mendapat ide lalu membuat aplikasi ini.

[ Fitur utama ]

  • Pencarian perbandingan tiket pesawat
  • Tiket pesawat dapat dipesan langsung di situs web resmi maskapai

[ Hal yang dipertimbangkan ]

  • Dibuat ringan agar bisa berjalan di smartphone dengan spesifikasi rendah.
  • Jika aplikasi maskapai yang sudah ada terpasang, aplikasi tersebut dapat dibuka langsung.

[ Perbedaan dengan aplikasi lain ]

  • Tanpa biaya komisi.
  • Pengguna dapat memesan tiket pesawat secara langsung melalui aplikasi ini.
  • Tidak meminta data pribadi. Tidak perlu login.

[ Teknologi yang digunakan ]

  • Android : WebView, java
  • Frontend : Vanilna JS, CSS, Webpack, Swagger API

Jika Anda bertanya tentang hal-hal terkait pengembangan, saya juga akan menjawabnya.
Karena dibuat sebagai hobi, masih ada banyak kekurangan.
Saya akan sangat berterima kasih jika Anda memberi masukan terkait hal tersebut.

16 komentar

 
sonhy02 2024-09-04

Bagaimana Anda menganalisis API situs maskapai?

 
baeba 2024-09-05

Saya mengerjakannya dengan cara brutal. -_-

Korean Air, Asiana, Jin Air, Jeju Air, T'way, Air Seoul, Air Busan, Eastar
Google Flights, Naver Air, Webtour, Interpark Air, dll.
Saya masuk ke situs web maskapai yang diperkenalkan di dalam negeri,
lalu satu per satu membuka jendela debugger dan packet capture jaringan
untuk menganalisis bagaimana mereka saling bertukar data.

Kalau dianalisis terus, lama-lama jalannya(?) mulai kelihatan.

 
sonhy02 2024-09-05

Saya juga ingin menganalisisnya, tapi setelah dilihat-lihat rasanya ada yang kurang terlihat jelas T_T Boleh minta sedikit tip mungkin..?

 
baeba 2024-09-05

Dan lagi...
karena sistem pembayaran tiap maskapai sangat berbeda-beda,
kalau mencoba melakukan pembayaran di dalam webview
akan muncul berbagai macam error.
Kalau dijelaskan dengan mudah,
seperti saat melakukan perbankan di PC perlu memasang program keamanan,
ada juga tempat yang mengharuskan pemasangan program keamanan untuk Android
agar pembayaran bisa diproses,
karena itu

kalau satu maskapai punya 5 modul pembayaran,
berarti untuk 8 maskapai perlu sekitar 40 macam pengujian.
Ini sulit dilakukan oleh perorangan.

Saya sempat bertanya singkat di komunitas lain
tentang bagaimana orang memesan tiket pesawat...
ternyata mereka hanya mencari harga
di tempat seperti Naver, Interpark, atau Google Flights.
Pemesanan yang sebenarnya dilakukan lewat aplikasi maskapai.

Aplikasi yang saya buat pada awalnya juga punya maksud yang mirip.
Mencari, lalu tanpa membuka aplikasi maskapai, langsung berpindah ke
halaman hasil pencarian di situs maskapai dan langsung melakukan pembayaran..

 
baeba 2024-09-05

Kalau saya boleh memberi saran...
Ada browser Firefox untuk pengembang.
DevTools Chrome juga cukup bagus.
Tapi ada sedikit perbedaan.

Biasanya API dipanggil lalu di-redirect ke halaman berikutnya, jadi..
Tidak mudah untuk mengetahui bagaimana API yang sebenarnya dipanggil.
Cara kasarnya, hentikan web sebelum redirect berlangsung..

Atau..
Jalankan program capture paket jaringan
dan lakukan pemantauan, nanti Anda bisa menemukan API akhirnya.

Walaupun API-nya sudah ditemukan..
Kalau key autentikasi, informasi cookie, dan informasi sesi terkait tidak cocok,
meskipun API tersebut dipanggil tetap akan terjadi error.

Karena masing-masing maskapai punya karakteristik sendiri.
Benar-benar perlu trik -_-.

Yang paling sulit adalah Korean Air!! Karena memakai Angular,
sangat sulit untuk di-reverse.

Saya sempat mau menyerah...
Saya jungkir balik mengutak-atik ini sekitar 2 tahun. hahaha Karena otak saya kurang encer.. jadi tangan dan kaki yang kerja keras...

 
sonhy02 2024-09-08

Pertama saya sedang mencoba mulai dari Jin Air, bolehkah saya bertanya bagaimana Anda menangani nilai x-csrf-token dan cookie...? Untuk maskapai lain saya masih belum benar-benar paham, tetapi untuk Jin Air saya sudah menemukan bagaimana harus mengirim request, namun dua nilai ini yang jadi masalah T_T

 
baeba 2024-09-09

Kalau tekan F12 di Chrome, Firefox, atau Edge,
maka alat developer akan muncul.
Di sini pilih tab debugger, lalu cek jendela source di sebelah kiri,
dan kalau pilih tab storage, di sebelah kiri ada item seperti local storage, session storage, cache storage, indexed DB, dan cookie.
Cek itu semua...

Lalu pilih tab network, dan saat halaman web diklik, cek bagaimana paket-paket data bolak-balik,
dan setelah kira-kira paham,

pasang breakpoint di tab debugger,
dan dalam keadaan itu
Anda harus memeriksa satu per satu bagaimana halaman web berkomunikasi bolak-balik dengan server.

Jin Air termasuk yang cukup mudah^^;;; memang tampilannya baru-baru ini diperbarui jadi lebih bagus.
Logika internalnya masih seperti dulu (hampir tidak berubah dibanding 2 tahun lalu).

Kalau token yang dibuat di server diteruskan ke klien, coba cek
di mana token itu disimpan di storage internal browser web.

Dalam kasus saya, saya hanya memakai info pengguna dan info tanggal secara sederhana,
lalu hanya berpindah sampai ke layar tersebut,
scroll layar sampai ke posisi waktu yang dimaksud, lalu selesai.

Dari sini sebenarnya bisa juga menekan harga lalu membuat pengguna login.
Tapi bagian ini terlalu case by case...

Jadi saya biarkan agar pengguna bisa melakukannya dengan bebas.

Kalau dijelaskan lebih mudah,
pengguna tidak membuka aplikasi maskapai,
melainkan langsung memakai browser web yang paling sering dipakai di smartphone (Chrome, Samsung Internet, dll.)
untuk mengakses situs maskapai, mencari penerbangan,
login, lalu melakukan pembayaran.

Tetapi kalau ini dilakukan dengan WebView,
ada sangat banyak batasan sehingga tidak bisa diimplementasikan dengan baik.
Karena tiap maskapai diimplementasikan dengan logika aneh yang berbeda-beda.
Bahkan untuk Jin Air saja kemungkinan ada beberapa sistem pembayaran.
Jadi semuanya harus diuji satu per satu untuk integrasi...

 
sonhy02 2024-09-05

Saya juga melihat tulisan ini dan jadi ingin mencoba berfokus pada maskapai di rute yang sering saya naiki, tapi sepertinya saya juga akan banyak trial and error wkwkwk
Terima kasih

 
kdhyo98 2024-08-30

Proyek yang keren!! Sayang saya tidak punya Android T_T Saya menantikan versi iOS atau halaman web!!

 
baeba 2024-09-02

Karena ini web app... sebenarnya bisa juga dibuat sebagai halaman web... ^^
Karena malas mengelola server -_-
Saya jadi langsung menaruh semua file untuk halaman web ke ponsel.
Dari sudut pandang pengguna, karena tidak perlu terhubung ke server..
kecepatan responsnya juga cepat..

Jadinya...
ada banyak batasan keamanan dan konflik terkait
sehingga saya cukup kesulitan saat mengembangkannya.
Terutama modul pembayaran
berbeda-beda sekali untuk tiap maskapai, dan saya baru tahu tepat sebelum rilis
bahwa ada bermacam-macam sistem pembayaran yang terpasang,
jadi melelahkan saat harus mengujinya.

 
kandk 2024-08-30

Saya juga kadang saat mau beli pernah bikin crawler untuk mencari harga termurah, jadi sepertinya ini akan berguna wkwk.
Ada yang saya penasaran. Apakah dulu ada banyak yang tidak muncul di Skyscanner?

 
baeba 2024-08-30

Situs pencarian tiket pesawat luar negeri seperti skyscanner mendukung pencarian secara global.
Artinya, karena fokusnya pada perpindahan antarnegara dengan harga termurah... jadi kurang cocok untuk penerbangan domestik.

Untuk penggunaan domestik, arah pengembangan awalnya adalah
membuatnya agar maskapai, tanggal, dan waktu yang saya inginkan bisa dilihat dengan mudah sekaligus.

Awalnya saya ingin melakukan pencarian otomatis (?) untuk mencocokkan maskapai, waktu, dan harga pada tanggal tertentu
dan mengirimkan notifikasi... tetapi fitur ini untuk sementara saya tunda...
Sebagai gantinya, seperti aplikasi tiket pesawat yang sudah ada, saya membuatnya agar bisa dicari, difilter dengan mudah, lalu langsung berpindah ke situs maskapai
untuk melakukan pemesanan.

 
bncgood 2024-08-28

Anda telah membuat layanan yang keren.

  1. Apakah informasi harga tiket pesawat domestik diproses dengan screen scraping?
  2. Karena masalah kecepatan pasti akan muncul, apakah Anda menggunakan cache?
 
baeba 2024-08-28

Saya tidak menggunakan screen scraping.
Saya tidak menggunakan cache.
Informasi yang dikirim maskapai ke halaman web pengguna
saya parse satu per satu secara manual (-_-) secara internal, lalu hanya mengambil informasi yang diperlukan
untuk membuat informasi harga...

Awalnya mau dikerjakan di server..
Tapi karena biaya server...
akhirnya semuanya diproses langsung di webview.

 
bncgood 2024-08-29

Wah, keren sekali. Apakah ada rencana untuk iOS?

 
baeba 2024-08-30

Saya membeli Mac mini untuk membuat versi iOS. ^^