# move2link-resolver > CLI tool untuk resolve shortlink/AdLink [move2link.co](https://move2link.co) secara otomatis dan cepat — bypass Cloudflare WAF via Fgsi API dan kembalikan URL asli dalam format JSON. --- ## Features - **Auto mode** — bypass Cloudflare WAF otomatis via [Fgsi RestAPIs](https://fgsi.dpdns.org), ambil `SESSION` JWT tanpa browser - **Manual mode** — support input token/cookie langsung, dari file, atau stdin - **Output JSON** — bersih, terstruktur, lengkap dengan timing dan step info - **Zero dependency** — pure Node.js, tidak butuh package npm tambahan --- ## Requirements - Node.js `>= 18` (native `fetch` built-in) - API key [Fgsi RestAPIs](https://fgsi.dpdns.org) (untuk auto mode) --- ## Installation Tidak perlu `npm install` — tidak ada dependency eksternal. --- ## Configuration Edit baris berikut di `move2link.js` sesuai API key kamu: ```js const FGSI_KEY = 'fgsiapi-xxxxxxx'; ``` --- ## Usage ### Auto Mode (recommended) Resolve URL secara penuh — Cloudflare bypass + unlock dilakukan otomatis. ```bash node move2link.js --url "https://move2link.co/4b08f3c" ``` ### Manual Mode — Token langsung Jika kamu sudah punya `SESSION` JWT (dari browser inspect, dsb): ```bash node move2link.js --token "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." ``` ### Manual Mode — Cookie string ```bash node move2link.js --cookie "SESSION=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." ``` ### Manual Mode — Dari file ```bash # isi file: token JWT atau cookie string node move2link.js --token-file token.txt ``` ### Manual Mode — Dari stdin ```bash echo "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." | node move2link.js --stdin # atau pipe dari command lain cat token.txt | node move2link.js --stdin ``` --- ## CLI Reference | Flag | Deskripsi | |---|---| | `--url ` | URL move2link — auto bypass CF + unlock | | `--token ` | SESSION JWT langsung | | `--cookie ` | Cookie string (`SESSION=eyJ...`) | | `--token-file ` | Path ke file berisi token/cookie | | `--stdin` | Baca token/cookie dari stdin | > Prioritas: `--token` → `--cookie` → `--token-file` → `--stdin` → `--url` --- ## Output Semua mode mengembalikan JSON ke stdout. **Sukses:** ```json { "ok": true, "finalUrl": "https://safefileku.com/download/tgGjhshRTBv8bN2H", "durationMs": 6831, "durationSec": 6.83, "steps": [ { "step": 0, "maxStep": 3 }, { "step": 1, "maxStep": 3 }, { "step": 2, "maxStep": 3 } ], "source": "fgsi+url", "input": "https://move2link.co/4b08f3c", "timestamp": "2026-08-24T15:43:16.887Z" } ``` **Gagal:** ```json { "ok": false, "durationMs": 1021, "durationSec": 1.02, "source": null, "error": "SESSION cookie tidak ada di response Fgsi", "timestamp": "2026-08-24T15:38:58.000Z" } ``` ### Field Reference | Field | Tipe | Deskripsi | |---|---|---| | `ok` | `boolean` | `true` jika berhasil | | `finalUrl` | `string` | URL asli hasil resolve | | `durationMs` | `number` | Total waktu eksekusi (ms) | | `durationSec` | `number` | Total waktu eksekusi (detik) | | `steps` | `array` | Progress step unlock | | `source` | `string` | Sumber token (`fgsi+url`, `token`, `cookie`, dll) | | `input` | `string` | URL input (hanya di auto mode) | | `error` | `string` | Pesan error (hanya jika gagal) | | `timestamp` | `string` | Waktu eksekusi (ISO 8601) | --- ## How It Works ``` --url input │ ▼ Fgsi WAF Session API (bypass Cloudflare, ambil SESSION cookie) │ ▼ Decode JWT → cek step & max_step │ ▼ Loop: PUT /views/track (per step) │ ▼ POST /views/finalize │ ▼ finalUrl ✓ ``` --- ## Exit Codes | Code | Keterangan | |---|---| | `0` | Berhasil, `finalUrl` tersedia | | `1` | Gagal, lihat field `error` di output JSON | --- ## License MIT