# CutWin Resolver Resolve **final destination URL** dari short link CutWin tanpa browser. Script memakai **curl** di backend (menghindari deteksi TLS fingerprint Node.js `fetch`). ## Domain didukung | Domain | Status | |--------|--------| | `cutw.in` | ✅ | | `cutwin.com` | ✅ | | `cutwin.net` | ✅ | | `cutwin.org` | ✅ | | `cutwin.cz` | ✅ | Alias/short-code **sama** di semua domain. ## Syarat - **Node.js 18+** - **curl** (sudah ada di macOS & Linux) Cek curl: ```bash curl --version ``` ## Install Tidak perlu `npm install` — zero dependency. ```bash # Cukup salin file cutw.js (atau rename jadi cutw.js) chmod +x cutw.js # opsional ``` ## Cara pakai (CLI) ```bash # Pretty JSON (default) node cutw.js https://cutw.in/rPe73P # JSON 1 baris node cutw.js https://cutw.in/rPe73P --raw # Tambah jeda sebelum POST (jika kena lock) node cutw.js https://cutw.in/rPe73P --wait=2000 ``` ### Contoh output sukses ```json { "success": true, "input": "https://cutw.in/rPe73P", "finalUrl": "https://code.vyrgo.cyou/donate", "intermediateUrl": "https://www.masrawytrend.com/..../?flow=....", "domain": "cutw.in", "flowId": "5703b746f29eb837", "durationMs": 6000, "error": null, "timestamp": "2026-10-11T04:25:45.987Z" } ``` ### Contoh output gagal ```json { "success": false, "input": "https://cutw.in/rPe73P", "finalUrl": null, "intermediateUrl": "...", "domain": "cutw.in", "flowId": "...", "durationMs": 5000, "error": "Flow is locked due to suspicious activity", "timestamp": "..." } ``` | Exit code | Arti | |-----------|------| | `0` | Sukses | | `1` | Gagal | ## Sebagai module ```js import { resolveCutw } from './cutw.js'; const res = await resolveCutw('https://cutw.in/rPe73P'); if (res.success) { console.log(res.finalUrl); // https://... console.log(res.durationMs); // ms } else { console.error(res.error); } ``` ### Opsi ```js await resolveCutw('https://cutw.in/xxx', { wait: 2000, // jeda sebelum POST (ms), default 0 }); ``` ## Alur kerja 1. `curl GET` short URL → ikuti redirect ke halaman intermediate 2. Parse HTML → ambil `adxCsrfToken` + `adxFlowId` 3. `curl POST` `ajax=get_link` ke intermediate page 4. Response: `{ "status": "success", "url": "https://..." }` ## Troubleshooting | Error | Solusi | |-------|--------| | `Flow is locked due to suspicious activity` | Tunggu beberapa menit, ganti jaringan/IP, atau tambah `--wait=2000` | | `curl tidak ditemukan` | Install curl (`brew install curl` / `apt install curl`) | | `Tidak menemukan flowId` | Struktur HTML berubah / halaman error | | `Domain tidak didukung` | Pakai domain di tabel atas | | Lambat (5–8 detik) | Normal dari Indonesia; 2 request + latency jaringan | ## Catatan - Lebih cepat & ringan dibanding Puppeteer (biasanya 20–40 detik). - Node `fetch` / axios murni sering kena lock karena TLS fingerprint berbeda dari browser. - Karena itu script ini memakai **curl** sebagai HTTP client. - Jangan spam request dari IP yang sama agar tidak di-flag. ## License MIT