Last active
June 30, 2025 08:10
-
-
Save agusibrahim/03a20d2ec1164d137c1460529fd5cec6 to your computer and use it in GitHub Desktop.
get pelni ports
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
var token = document.querySelector("input[name='_token']").value; | |
var options = Array.from(document.querySelectorAll("select[name='ticket_org'] option")).filter(x => x.getAttribute("value") != ""); | |
var results = []; | |
for (const option of options) { | |
var ids = option.getAttribute("value"); | |
var b = option.innerText; | |
var dest="" | |
try { | |
var f = await fetch("https://pelni.co.id/getdes", { | |
"headers": { | |
"content-type": "application/x-www-form-urlencoded;", | |
}, | |
"referrer": "https://pelni.co.id/", | |
"referrerPolicy": "strict-origin-when-cross-origin", | |
"body": "ticket_org=" + ids + "&_token=" + token, | |
"method": "POST", | |
"mode": "cors", | |
"credentials": "include" | |
}); | |
var div = document.createElement('div'); | |
div.innerHTML = await f.text(); | |
var dest = Array.from(div.querySelectorAll("option")).filter(x => x.getAttribute("value") != "").map(x => x.getAttribute("value")).join(","); | |
await new Promise(resolve => setTimeout(resolve, 100)); | |
} catch (e) { | |
} | |
var result = { | |
"name": b.split("|")[1].split("-")[1].trim(), | |
"code": b.split("|")[1].split("-")[0].trim(), | |
"city": b.split("|")[0].trim(), | |
"id": parseInt(ids), | |
"dest": dest | |
}; | |
results.push(result); | |
} | |
document.body.outerText=JSON.stringify(results) |
update list of ports
[
{
"name": "MALAHAYATI",
"code": "MLH",
"city": "ACEH BESAR, ACEH",
"id": 102,
"dest": "256,431,266,144"
},
{
"name": "KALABAHI",
"code": "KBH",
"city": "ALOR, NUSA TENGGARA TIMUR",
"id": 694,
"dest": "694,946,948,921,655,613,684,949,944,747,681,688,893,950,662,979,983,696,683,971,673,685,563,773,923"
},
{
"name": "AMBON",
"code": "AMQ",
"city": "AMBON, MALUKU",
"id": 946,
"dest": "694,946,948,921,973,835,951,929,976,777,925,431,974,949,977,944,928,975,681,688,893,947,950,972,979,983,982,955,683,971,563,942,923,061"
},
{
"name": "AGATS",
"code": "AGS",
"city": "ASMAT, PAPUA SELATAN",
"id": 948,
"dest": "694,946,948,921,835,976,949,977,944,681,688,950,979,983,683,971,942,889,923"
},
{
"name": "SEMAYANG",
"code": "BPN",
"city": "BALIKPAPAN, KALIMANTAN TIMUR",
"id": 803,
"dest": "803,921,835,687,974,975,681,688,893,972,982,809,863,892,683,971,563,808,942"
},
{
"name": "PANJANG",
"code": "PNJ",
"city": "BANDAR LAMPUNG, LAMPUNG",
"id": 395,
"dest": "395,431,433"
},
{
"name": "LUWUK",
"code": "LUW",
"city": "BANGGAI, SULAWESI TENGAH",
"id": 868,
"dest": "868,921,655,835,613,841,922,106,651,893,662,924"
},
{
"name": "BANGGAI",
"code": "BGG",
"city": "BANGGAI KEPULAUAN, SULAWESI TENGAH",
"id": 908,
"dest": "908,921,973,835,925,974,893,972,982,971,563,942"
},
{
"name": "BELINYU",
"code": "BLU",
"city": "BANGKA, KEPULAUAN BANGKA BELITUNG",
"id": 322,
"dest": "322,431,269,252,725,255,246,714,563,251"
},
{
"name": "SADAI",
"code": "SDI",
"city": "BANGKA SELATAN, KEPULAUAN BANGKA BELITUNG",
"id": 338,
"dest": ""
},
{
"name": "KOTABARU",
"code": "KTB",
"city": "BARU, KALIMANTAN SELATAN",
"id": 996,
"dest": ""
},
{
"name": "BATAM/BATU AMPAR",
"code": "BUR",
"city": "BATAM, KEPULAUAN RIAU",
"id": 256,
"dest": "256,431,266,144"
},
{
"name": "BAU",
"code": "BBM",
"city": "BAU-BAU, SULAWESI TENGGARA",
"id": 921,
"dest": "694,946,948,803,868,908,921,973,655,835,951,613,976,687,841,777,925,431,974,949,977,922,944,975,681,688,651,106,893,947,950,662,972,979,983,924,982,809,863,892,683,971,685,563,251,808,942,923,061"
},
{
"name": "TANJUNG PANDAN",
"code": "TJQ",
"city": "BELITUNG, KEPULAUAN BANGKA BELITUNG",
"id": 336,
"dest": "336,431,747,714,494,563,773"
},
{
"name": "BIAK",
"code": "BIK",
"city": "BIAK NUMFOR, PAPUA",
"id": 973,
"dest": "946,908,921,973,835,925,431,974,893,972,982,971,563,942"
},
{
"name": "BIMA",
"code": "BMU",
"city": "BIMA, NUSA TENGGARA BARAT",
"id": 655,
"dest": "694,868,921,655,835,898,613,684,841,922,747,681,106,651,891,893,662,924,892,696,673,685,563,773"
},
{
"name": "BITUNG",
"code": "BIT",
"city": "BITUNG, SULAWESI UTARA",
"id": 835,
"dest": "946,948,803,868,908,921,973,655,835,951,613,976,841,777,925,431,974,949,977,922,944,928,975,106,651,893,947,662,972,979,983,924,982,863,955,971,563,942,889"
},
{
"name": "LHOK TUAN",
"code": "LTU",
"city": "BONTANG, KALIMANTAN TIMUR",
"id": 898,
"dest": "655,898,613,684,681,651,891,893,662,892,685,563,773"
},
{
"name": "NAMLEA",
"code": "NAM",
"city": "BURU, MALUKU",
"id": 951,
"dest": "946,921,835,951,976,777,925,431,974,928,893,947,972,982,955,971,563,942,061"
},
{
"name": "NAMROLE",
"code": "NRE",
"city": "BURU SELATAN, MALUKU",
"id": 929,
"dest": "946,947,950"
},
{
"name": "BENOA",
"code": "BOA",
"city": "DENPASAR, BALI",
"id": 613,
"dest": "694,946,868,921,655,835,898,613,684,841,922,747,681,688,106,651,891,893,662,924,892,696,683,971,685,563,923"
},
{
"name": "ENDE",
"code": "ENE",
"city": "ENDE, NUSA TENGGARA TIMUR",
"id": 684,
"dest": "694,655,613,684,747,681,893,662,696,673,685,563,773"
},
{
"name": "FAK",
"code": "FKQ",
"city": "FAKFAK, PAPUA BARAT",
"id": 976,
"dest": "946,948,921,835,951,976,925,431,949,977,944,928,893,947,979,983,955,971,563,942,889"
},
{
"name": "LARANTUKA",
"code": "LKA",
"city": "FLORES TIMUR, NUSA TENGGARA TIMUR",
"id": 687,
"dest": "803,921,687,431,681,688,893,809,863,892,683,563,251,808"
},
{
"name": "GORONTALO",
"code": "GTO",
"city": "GORONTALO, GORONTALO",
"id": 841,
"dest": "868,921,655,835,613,841,922,106,651,893,662,924"
},
{
"name": "BAWEAN",
"code": "BWN",
"city": "GRESIK, JAWA TIMUR",
"id": 590,
"dest": ""
},
{
"name": "GUNUNG SITOLI",
"code": "GNS",
"city": "GUNUNGSITOLI, SUMATERA UTARA",
"id": 160,
"dest": "336,431,191,714,159"
},
{
"name": "JAILOLO",
"code": "JIO",
"city": "HALMAHERA BARAT, MALUKU UTARA",
"id": 1466,
"dest": ""
},
{
"name": "JAILOLO",
"code": "JIO",
"city": "HALMAHERA BARAT, MALUKU UTARA",
"id": 777,
"dest": "946,921,835,951,777,431,893,563,942"
},
{
"name": "BABANG",
"code": "BBG",
"city": "HALMAHERA SELATAN, MALUKU UTARA",
"id": 925,
"dest": "946,908,921,973,835,951,976,925,974,928,893,947,972,982,955,971,563,942"
},
{
"name": "TOBELO",
"code": "TBO",
"city": "HALMAHERA UTARA, MALUKU UTARA",
"id": 941,
"dest": ""
},
{
"name": "TANJUNG PRIOK",
"code": "TPR",
"city": "JAKARTA UTARA, DKI JAKARTA",
"id": 431,
"dest": "946,322,256,921,336,973,835,951,976,687,777,431,974,949,977,266,252,269,944,975,747,681,688,893,947,972,144,982,255,246,725,714,494,683,971,563,773,251,981,942"
},
{
"name": "JAYAPURA",
"code": "DJJ",
"city": "JAYAPURA, PAPUA",
"id": 974,
"dest": "946,803,908,921,973,835,951,925,431,975,893,972,982,863,971,563,981,942,061"
},
{
"name": "LEGON BAJAK, KARIMUN JAWA",
"code": "LKK",
"city": "JEPARA, JAWA TENGAH",
"id": 496,
"dest": "747,746,494,563"
},
{
"name": "TUAL",
"code": "TUA",
"city": "KAB. TUAL, MALUKU",
"id": 949,
"dest": "694,946,948,921,835,976,431,949,977,944,681,688,893,947,950,979,983,683,971,563,942,889,923"
},
{
"name": "KAIMANA",
"code": "KNG",
"city": "KAIMANA, PAPUA BARAT",
"id": 977,
"dest": "946,948,921,835,976,431,949,977,944,893,947,979,983,971,563,889"
},
{
"name": "TANJUNG BALAI KARIMUN",
"code": "TJB",
"city": "KARIMUN, KEPULAUAN RIAU",
"id": 266,
"dest": "256,431,266,144"
},
{
"name": "KENDARI",
"code": "KDI",
"city": "KENDARI, SULAWESI TENGGARA",
"id": 922,
"dest": "868,921,655,835,613,841,922,106,651,893,662,924,923"
},
{
"name": "TAREMPA",
"code": "TMP",
"city": "KEPULAUAN ANAMBAS, KEPULAUAN RIAU",
"id": 252,
"dest": "322,431,269,252,725,255,246,714,563,251"
},
{
"name": "LETUNG",
"code": "LTG",
"city": "KEPULAUAN ANAMBAS, KEPULAUAN RIAU",
"id": 269,
"dest": "322,431,269,252,725,255,246,714,563,251"
},
{
"name": "DOBO",
"code": "DOB",
"city": "KEPULAUAN ARU, MALUKU",
"id": 944,
"dest": "694,946,948,921,835,976,431,949,977,944,681,688,893,947,950,979,983,683,971,563,942,923"
},
{
"name": "KAHAKITANG",
"code": "KKG",
"city": "KEPULAUAN SANGIHE, SULAWESI UTARA",
"id": 829,
"dest": "946,835,951,841,829,836,928,845,846,844,840,942,839"
},
{
"name": "TAHUNA",
"code": "THA",
"city": "KEPULAUAN SANGIHE, SULAWESI UTARA",
"id": 836,
"dest": "946,835,951,841,829,836,928,845,846,844,840,942,839"
},
{
"name": "SANANA",
"code": "SQN",
"city": "KEPULAUAN SULA, MALUKU UTARA",
"id": 928,
"dest": "946,921,835,951,976,925,928,947,955,942"
},
{
"name": "LIRUNG",
"code": "LRG",
"city": "KEPULAUAN TALAUD, SULAWESI UTARA",
"id": 844,
"dest": "946,835,951,841,829,836,928,845,846,844,840,942,839"
},
{
"name": "KARATUNG",
"code": "KTN",
"city": "KEPULAUAN TALAUD, SULAWESI UTARA",
"id": 845,
"dest": "946,835,951,841,829,836,928,845,846,844,840,942,839"
},
{
"name": "MIANGAS",
"code": "MGS",
"city": "KEPULAUAN TALAUD, SULAWESI UTARA",
"id": 846,
"dest": "946,835,951,841,829,836,928,844,845,840,942,839"
},
{
"name": "SERUI",
"code": "ZRI",
"city": "KEPULAUAN YAPEN, PAPUA",
"id": 975,
"dest": "946,803,921,973,835,431,974,975,893,972,982,863,971,563,942"
},
{
"name": "KENDAWANGAN",
"code": "KDW",
"city": "KETAPANG, KALIMANTAN BARAT",
"id": 116,
"dest": ""
},
{
"name": "KUMAI",
"code": "KUM",
"city": "KOTAWARINGIN BARAT, KALIMANTAN TENGAH",
"id": 747,
"dest": "694,336,655,613,684,431,496,747,746,681,714,696,494,685,563,773"
},
{
"name": "PANGKALAN BUN",
"code": "PLB",
"city": "KOTAWARINGIN BARAT, KALIMANTAN TENGAH",
"id": 324,
"dest": ""
},
{
"name": "SAMPIT",
"code": "SMQ",
"city": "KOTAWARINGIN TIMUR, KALIMANTAN TENGAH",
"id": 746,
"dest": "496,747,746,494,563"
},
{
"name": "KUPANG",
"code": "TQP",
"city": "KUPANG, NUSA TENGGARA TIMUR",
"id": 681,
"dest": "694,946,948,803,921,655,613,684,687,431,949,944,747,681,688,893,950,662,979,983,809,892,696,683,971,673,685,563,773,251,808,923"
},
{
"name": "LEWOLEBA",
"code": "LWE",
"city": "LEMBATA, NUSA TENGGARA TIMUR",
"id": 688,
"dest": "694,946,948,803,921,613,687,431,949,944,681,688,893,950,979,983,809,892,683,971,685,563,251,808,923"
},
{
"name": "LEMBAR",
"code": "LMR",
"city": "LOMBOK BARAT, NUSA TENGGARA BARAT",
"id": 651,
"dest": "868,921,655,835,898,613,841,922,651,893,662,924,892,685,563,773"
},
{
"name": "AWERANGE/BARRU",
"code": "AGU",
"city": "LUWU TIMUR, SULAWESI SELATAN",
"id": 891,
"dest": "655,898,613,891,893,662,892,563"
},
{
"name": "MAKASSAR",
"code": "MAK",
"city": "MAKASAR, SULAWESI SELATAN",
"id": 893,
"dest": "694,946,803,868,908,921,973,655,835,898,951,613,684,976,687,841,777,925,431,974,949,977,922,944,975,681,688,106,651,891,893,947,662,972,924,982,809,863,892,683,971,673,685,563,773,251,808,981,942,923,061"
},
{
"name": "MOA",
"code": "KWU",
"city": "MALUKU BARAT DAYA, MALUKU",
"id": 959,
"dest": "946,959,956,958,947,950,955"
},
{
"name": "KISAR",
"code": "KXR",
"city": "MALUKU BARAT DAYA, MALUKU",
"id": 956,
"dest": "946,958,959,947,950,955"
},
{
"name": "TEPA",
"code": "TPA",
"city": "MALUKU BARAT DAYA, MALUKU",
"id": 958,
"dest": "946,959,956,958,947,950,955"
},
{
"name": "BANDA NAIRA",
"code": "NDA",
"city": "MALUKU TENGAH, MALUKU",
"id": 947,
"dest": "946,921,835,951,929,976,925,431,949,977,944,928,893,947,950,955,563,942"
},
{
"name": "AMAHAI",
"code": "AHI",
"city": "MALUKU TENGAH, MALUKU",
"id": 952,
"dest": ""
},
{
"name": "SAUMLAKI",
"code": "SXK",
"city": "MALUKU TENGGARA BARAT, MALUKU",
"id": 950,
"dest": "694,946,948,921,949,944,681,688,947,950,979,983,683,971,923"
},
{
"name": "LARAT",
"code": "LRT",
"city": "MALUKU TENGGARA BARAT, MALUKU",
"id": 957,
"dest": ""
},
{
"name": "BELANG",
"code": "BEL",
"city": "MAMUJU, SULAWESI BARAT",
"id": 894,
"dest": ""
},
{
"name": "REO",
"code": "REO",
"city": "MANGGARAI, NUSA TENGGARA TIMUR",
"id": 672,
"dest": "655,684,681,893,662,673,685,773"
},
{
"name": "LABUAN BAJO",
"code": "LBO",
"city": "MANGGARAI BARAT, NUSA TENGGARA TIMUR",
"id": 662,
"dest": "694,868,921,655,835,898,613,684,841,922,681,651,106,891,893,662,924,892,673,685,563,773"
},
{
"name": "MANOKWARI",
"code": "MKW",
"city": "MANOKWARI, PAPUA BARAT",
"id": 972,
"dest": "946,803,908,921,973,835,951,925,431,974,975,893,972,982,863,971,563,981,942,061"
},
{
"name": "BELAWAN",
"code": "BLW",
"city": "MEDAN, SUMATERA UTARA",
"id": 144,
"dest": "256,431,266"
},
{
"name": "MERAUKE",
"code": "MKQ",
"city": "MERAUKE, PAPUA SELATAN",
"id": 979,
"dest": "694,946,948,921,835,976,949,977,944,681,688,950,983,683,971,942,889,923"
},
{
"name": "POMAKO",
"code": "PMK",
"city": "MIMIKA, PAPUA TENGAH",
"id": 983,
"dest": "694,946,948,921,835,976,949,977,944,681,688,950,979,983,683,971,942,889,923"
},
{
"name": "AMURANG",
"code": "AUG",
"city": "MINAHASA SELATAN, SULAWESI UTARA",
"id": 920,
"dest": ""
},
{
"name": "KOLONEDALE",
"code": "KAN",
"city": "MOROWALI, SULAWESI TENGAH",
"id": 867,
"dest": ""
},
{
"name": "RAHA",
"code": "RAQ",
"city": "MUNA, SULAWESI TENGGARA",
"id": 924,
"dest": "868,921,655,835,613,841,922,106,651,893,662,924,923"
},
{
"name": "NABIRE",
"code": "NBX",
"city": "NABIRE, PAPUA TENGAH",
"id": 982,
"dest": "946,803,908,921,973,835,951,925,431,974,975,893,972,982,863,971,563,981,942,061"
},
{
"name": "MARAPOKOT",
"code": "MOT",
"city": "NAGEKO, NUSA TENGGARA TIMUR",
"id": 663,
"dest": ""
},
{
"name": "MIDAI",
"code": "MDA",
"city": "NATUNA, KEPULAUAN RIAU",
"id": 246,
"dest": "322,431,269,252,725,255,246,714,563,251"
},
{
"name": "SERASAN",
"code": "SRS",
"city": "NATUNA, KEPULAUAN RIAU",
"id": 255,
"dest": "322,431,269,252,725,255,246,714,563,251"
},
{
"name": "NATUNA (SELAT LAMPA)",
"code": "NTA",
"city": "NATUNA, KEPULAUAN RIAU",
"id": 725,
"dest": "322,431,269,252,725,255,246,714,563,251"
},
{
"name": "NUNUKAN / TUNON TAKA",
"code": "TTK",
"city": "NUNUKAN, KALIMANTAN TIMUR",
"id": 809,
"dest": "803,921,687,681,688,893,809,863,892,683,563,808"
},
{
"name": "TELUK BAYUR",
"code": "TBY",
"city": "PADANG, SUMATERA BARAT",
"id": 191,
"dest": "336,160,431,191,714,159"
},
{
"name": "PANTOLOAN",
"code": "PTL",
"city": "PALU, SULAWESI TENGAH",
"id": 863,
"dest": "803,921,835,687,974,975,893,972,982,809,863,892,683,971,563,808,942"
},
{
"name": "PARE",
"code": "ARE",
"city": "PARE-PARE, SULAWESI SELATAN",
"id": 892,
"dest": "803,921,655,898,613,684,687,681,688,651,891,893,662,809,863,892,683,685,563,773,808"
},
{
"name": "PONTIANAK",
"code": "PNK",
"city": "PONTIANAK, KALIMANTAN BARAT",
"id": 714,
"dest": "322,336,431,252,269,747,246,255,725,714,494,563,773,251"
},
{
"name": "POSO",
"code": "PSJ",
"city": "POSO, SULAWESI TENGAH",
"id": 840,
"dest": "946,835,951,841,928,942,839"
},
{
"name": "MERANTI/DORAK",
"code": "MRT",
"city": "PULAU MERANTI, RIAU",
"id": 926,
"dest": ""
},
{
"name": "BAA, ROTE",
"code": "BRO",
"city": "ROTENDAO, NUSA TENGGARA TIMUR",
"id": 696,
"dest": "694,655,613,684,747,681,685,563"
},
{
"name": "SEBA, SABU",
"code": "ISA",
"city": "SABU RAIJUA, NUSA TENGGARA TIMUR",
"id": 697,
"dest": "694,655,681,893,662,696,773"
},
{
"name": "TANJUNG EMAS",
"code": "SRG",
"city": "SEMARANG, JAWA TENGAH",
"id": 494,
"dest": "336,431,496,747,746,714,494,563,773"
},
{
"name": "GESER",
"code": "GER",
"city": "SERAM BAGIAN TIMUR, MALUKU",
"id": 955,
"dest": "946,921,835,951,976,925,928,947,955,942"
},
{
"name": "SIBOLGA",
"code": "SLG",
"city": "SIBOLGA, SUMATERA UTARA",
"id": 159,
"dest": "336,160,431,191,714"
},
{
"name": "MAUMERE /LAURENTIUS SAY",
"code": "MOF",
"city": "SIKA, NUSA TENGGARA TIMUR",
"id": 683,
"dest": "694,946,948,803,921,613,687,431,949,944,681,688,893,950,979,983,809,863,892,683,971,685,563,251,808,923"
},
{
"name": "SORONG",
"code": "SOQ",
"city": "SORONG, PAPUA BARAT",
"id": 971,
"dest": "694,946,948,803,908,921,973,835,951,613,976,925,431,974,949,977,944,975,681,688,893,950,972,979,983,982,863,683,971,563,981,942,889,923,061"
},
{
"name": "PATIMBAN",
"code": "PTM",
"city": "SUBANG, JAWA BARAT",
"id": 464,
"dest": "431"
},
{
"name": "WAIKELO",
"code": "WIO",
"city": "SUMBA BARAT DAYA, NUSA TENGGARA TIMUR",
"id": 673,
"dest": "694,655,684,681,893,662,673,685,773"
},
{
"name": "WAINGAPU",
"code": "WGP",
"city": "SUMBA TIMUR, NUSA TENGGARA TIMUR",
"id": 685,
"dest": "694,946,921,655,898,613,684,747,681,688,651,893,662,892,696,683,971,673,685,563,773,923"
},
{
"name": "KETAPANG",
"code": "IKL",
"city": "SUMENEP, JAWA TIMUR",
"id": 715,
"dest": ""
},
{
"name": "TANJUNG PERAK",
"code": "SUB",
"city": "SURABAYA, JAWA TIMUR",
"id": 563,
"dest": "694,946,803,908,322,921,336,973,655,835,898,951,613,684,976,687,777,925,431,974,496,949,977,252,269,944,975,747,746,681,688,651,893,947,972,982,255,246,725,863,892,714,696,494,683,971,685,563,773,251,981,942,061"
},
{
"name": "SAMUDERA, BATULICIN",
"code": "SUR",
"city": "TANAH BUMBU, KALIMANTAN SELATAN",
"id": 773,
"dest": "694,336,655,898,684,431,747,681,651,893,662,892,714,494,673,685,563,773"
},
{
"name": "SEI KOLAK KIJANG",
"code": "SKJ",
"city": "TANJUNG PINANG, KEPULAUAN RIAU",
"id": 251,
"dest": "322,921,687,431,252,269,681,688,893,255,246,725,714,683,563,251"
},
{
"name": "TARAKAN",
"code": "MLD",
"city": "TARAKAN, KALIMANTAN TIMUR",
"id": 808,
"dest": "803,921,687,681,688,893,809,863,892,683,563,808"
},
{
"name": "WASIOR",
"code": "WSR",
"city": "TELUK WONDAMA, PAPUA BARAT",
"id": 981,
"dest": "431,974,893,972,982,971,563,981"
},
{
"name": "TERNATE",
"code": "TEI",
"city": "TERNATE, MALUKU UTARA",
"id": 942,
"dest": "946,948,803,908,921,973,835,951,976,777,925,431,974,949,944,928,975,893,947,972,979,983,982,863,955,971,563,942"
},
{
"name": "GITA PAYAHE",
"code": "PYH",
"city": "TIDORE KEPULAUAN, MALUKU UTARA",
"id": 889,
"dest": "948,835,976,949,977,979,983,971,889"
},
{
"name": "WAKAI, TOGIAN",
"code": "WAK",
"city": "TOJO UNA-UNA, SULAWESI TENGAH",
"id": 839,
"dest": "946,835,951,841,928,840,942,839"
},
{
"name": "TOLI",
"code": "TLI",
"city": "TOLI-TOLI, SULAWESI TENGAH",
"id": 861,
"dest": ""
},
{
"name": "WANCI",
"code": "WCI",
"city": "WAKATOBI, SULAWESI TENGGARA",
"id": 923,
"dest": "694,946,948,921,949,922,944,681,688,950,979,983,924,683,971,923"
}
]
scrapper
function showProgressOverlay(message){let overlay=document.getElementById('pelni-progress-overlay');if(!overlay){overlay=document.createElement('div');overlay.id='pelni-progress-overlay';Object.assign(overlay.style,{position:'fixed',top:'0',left:'0',width:'100%',height:'100%',backgroundColor:'rgba(255, 255, 255, 0.95)',display:'flex',flexDirection:'column',justifyContent:'center',alignItems:'center',zIndex:'99999',fontSize:'24px',fontFamily:'Arial, sans-serif',color:'#333'});const progressBarContainer=document.createElement('div');Object.assign(progressBarContainer.style,{width:'300px',height:'20px',backgroundColor:'#eee',borderRadius:'10px',overflow:'hidden',marginBottom:'15px'});const progressBar=document.createElement('div');progressBar.id='pelni-progress-bar';Object.assign(progressBar.style,{width:'0%',height:'100%',backgroundColor:'#007bff',borderRadius:'10px',transition:'width 0.2s ease-in-out'});progressBarContainer.appendChild(progressBar);overlay.appendChild(progressBarContainer);const progressText=document.createElement('div');progressText.id='pelni-progress-text';progressText.innerText=message;overlay.appendChild(progressText);document.body.appendChild(overlay)}else{document.getElementById('pelni-progress-text').innerText=message}
document.body.style.overflow='hidden'}
function updateProgress(current,total,message){const progressBar=document.getElementById('pelni-progress-bar');const progressText=document.getElementById('pelni-progress-text');if(progressBar&&progressText){const percentage=(current/total)*100;progressBar.style.width=percentage+'%';progressText.innerText=`Memproses: ${message} (${current}/${total})`}}
function hideProgressOverlay(){const overlay=document.getElementById('pelni-progress-overlay');if(overlay){overlay.remove()}
document.body.style.overflow=''}
function displayJsonResult(data){document.body.innerHTML='';document.body.style.backgroundColor='#f5f5f5';document.body.style.margin='0';document.body.style.padding='20px';document.body.style.fontFamily='monospace';document.body.style.whiteSpace='pre-wrap';document.body.style.wordWrap='break-word';document.body.style.color='#333';const pre=document.createElement('pre');pre.textContent=JSON.stringify(data,null,2);document.body.appendChild(pre);const copyButton=document.createElement('button');copyButton.textContent='Salin JSON';Object.assign(copyButton.style,{position:'fixed',top:'10px',right:'10px',padding:'10px 20px',fontSize:'16px',backgroundColor:'#28a745',color:'white',border:'none',borderRadius:'5px',cursor:'pointer',zIndex:'100000'});copyButton.onclick=()=>{navigator.clipboard.writeText(JSON.stringify(data,null,2)).then(()=>{copyButton.textContent='Tersalin!';setTimeout(()=>copyButton.textContent='Salin JSON',2000)}).catch(err=>{console.error('Gagal menyalin:',err);alert('Gagal menyalin JSON ke clipboard.')})};document.body.appendChild(copyButton)}(async()=>{document.body.innerHTML='';showProgressOverlay("Memulai scraping data...");let token;let tempDiv;try{const originalBody=await fetch(window.location.href).then(res=>res.text());tempDiv=document.createElement('div');tempDiv.innerHTML=originalBody;const tokenInput=tempDiv.querySelector("input[name='_token']");if(tokenInput){token=tokenInput.value}else{throw new Error("Token CSRF tidak ditemukan. Pastikan Anda menjalankan script ini di halaman Pelni yang memiliki formulir.")}}catch(error){hideProgressOverlay();displayJsonResult({error:error.message});console.error(error);return}
if(!tempDiv){hideProgressOverlay();displayJsonResult({error:"Gagal mendapatkan elemen halaman asli untuk scraping."});return}
const options=Array.from(tempDiv.querySelectorAll("select[name='ticket_org'] option")).filter(x=>x.getAttribute("value")!=="");const totalOptions=options.length;const results=[];for(let i=0;i<totalOptions;i++){const option=options[i];const ids=option.getAttribute("value");const b=option.innerText;let dest="";updateProgress(i+1,totalOptions,`Pelabuhan ${b.split('|')[1].split('-')[1].trim()}`);try{const f=await fetch("https://pelni.co.id/getdes",{"headers":{"content-type":"application/x-www-form-urlencoded;",},"referrer":"https://pelni.co.id/","referrerPolicy":"strict-origin-when-cross-origin","body":"ticket_org="+ids+"&_token="+token,"method":"POST","mode":"cors","credentials":"include"});const div=document.createElement('div');div.innerHTML=await f.text();dest=Array.from(div.querySelectorAll("option")).filter(x=>x.getAttribute("value")!=="").map(x=>x.getAttribute("value")).join(",");await new Promise(resolve=>setTimeout(resolve,100))}catch(e){console.error(`Gagal mengambil data untuk ID ${ids}:`,e)}
const result={"name":b.split("|")[1].split("-")[1].trim(),"code":b.split("|")[1].split("-")[0].trim(),"city":b.split("|")[0].trim(),"id":parseInt(ids),"dest":dest};results.push(result)}
hideProgressOverlay();displayJsonResult(results);console.log("Scraping Selesai!");console.log(results)})()
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
var token=document.querySelector("input[name='_token']").value;var options=Array.from(document.querySelectorAll("select[name='ticket_org'] option")).filter(x=>x.getAttribute("value")!="");var results=[];for(const option of options){var ids=option.getAttribute("value");var b=option.innerText;var dest=""
try{var f=await fetch("https://pelni.co.id/getdes",{"headers":{"content-type":"application/x-www-form-urlencoded;",},"referrer":"https://pelni.co.id/","referrerPolicy":"strict-origin-when-cross-origin","body":"ticket_org="+ids+"&_token="+token,"method":"POST","mode":"cors","credentials":"include"});var div=document.createElement('div');div.innerHTML=await f.text();var dest=Array.from(div.querySelectorAll("option")).filter(x=>x.getAttribute("value")!="").map(x=>x.getAttribute("value")).join(",");await new Promise(resolve=>setTimeout(resolve,100))}catch(e){}
var result={"name":b.split("|")[1].split("-")[1].trim(),"code":b.split("|")[1].split("-")[0].trim(),"city":b.split("|")[0].trim(),"id":parseInt(ids),"dest":dest};results.push(result)}
document.body.outerText=JSON.stringify(results)