A client library for accessing the CF Bypass.
npm install cftoKlien API untuk CF Clearance Scraper
_Bypass Cloudflare WAF & Turnstile tanpa browser headless._
cfto adalah klien ringan yang memungkinkan Anda mengakses fungsionalitas inti dari CF Clearance Scraper API.
Gunakan modul ini untuk mengatasi tantangan Cloudflare (seperti WAF dan Turnstile) tanpa menjalankan browser headless sendiri.
---
``bashMenggunakan npm
npm install cfto
---
📋 Penggunaan
Modul ini mendukung CommonJS (
require) dan ES Modules (import).Kami merekomendasikan menggunakan destructuring untuk memberi alias pada objek
cfto menjadi cf.---
$3
`js
const { cfto: cf } = require('cfto');async function getSession() {
try {
const session = await cf.wafSession('https://example.com/protected', 'host:port');
console.log('Cookies:', session.cookies);
console.log('User-Agent:', session.headers['User-Agent']);
} catch (error) {
console.error('Gagal mendapatkan WAF Session:', error.message);
}
}
getSession();
`---
$3
`js
import { cfto as cf } from 'cfto';(async () => {
try {
const result = await cf.turnstileMin('https://forms.com/login', '0x4AAAAAAAT-yE...');
console.log('Token Turnstile:', result.token);
} catch (error) {
console.error('Gagal:', error.message);
}
})();
`---
$3
`js
const cftoPromise = import('cfto');async function runDynamicScraper() {
const cftoModule = await cftoPromise;
const cf = cftoModule.cfto || (cftoModule.default && cftoModule.default.cfto);
try {
const result = await cf.turnstileMin('https://forms.com/login', '0x4AAAAAAAT-yE...');
console.log('Token Dynamic Import:', result.token);
} catch (error) {
console.error('Gagal menjalankan dynamic import:', error.message);
}
}
runDynamicScraper();
`---
🧭 API Reference
Semua fungsi bersifat async dan akan melempar
Error jika terjadi kegagalan.---
$3
Mengambil cookies dan headers untuk melewati Cloudflare WAF,
sehingga request HTTP berikutnya dapat berjalan tanpa challenge.
| Parameter | Tipe | Diperlukan | Deskripsi |
|------------|--------|-------------|------------|
|
url | string | ✅ Ya | URL yang dilindungi WAF |
| proxy | string | ❌ Tidak | Alamat proxy opsional (user:pass@host:port) |Contoh:
`js
const { cfto: cf } = require('cfto');async function getSession() {
const session = await cf.wafSession('https://example.com/protected', 'host:port');
console.log('Cookies:', session.cookies);
console.log('Headers:', session.headers);
}
getSession();
`---
$3
Menyelesaikan challenge Cloudflare Turnstile dengan mode minimal (cepat).
Mengembalikan token yang dapat diverifikasi di server Anda.
| Parameter | Tipe | Diperlukan | Deskripsi |
|------------|--------|-------------|------------|
|
url | string | ✅ Ya | URL halaman dengan widget Turnstile |
| siteKey | string | ✅ Ya | Site Key Turnstile |
| proxy | string | ❌ Tidak | Proxy opsional |Contoh:
`js
const { cfto: cf } = require('cfto');async function solveTurnstile() {
const result = await cf.turnstileMin(
'https://forms.com/login',
'0x4AAAAAAAT-yE...', // Site Key
'host:port'
);
console.log('Token Turnstile Min:', result.token);
}
solveTurnstile();
`---
$3
Mode maksimum (simulasi interaksi pengguna alami).
Lebih andal pada halaman yang memiliki proteksi ketat.
| Parameter | Tipe | Diperlukan | Deskripsi |
|------------|--------|-------------|------------|
|
url | string | ✅ Ya | URL target Turnstile |
| proxy | string | ❌ Tidak | Proxy opsional |---
$3
Mengambil HTML yang sudah di-render oleh JavaScript dari suatu halaman.
Cocok untuk situs SPA (Single Page Application) atau konten dinamis.
| Parameter | Tipe | Diperlukan | Deskripsi |
|------------|--------|-------------|------------|
|
url | string | ✅ Ya | URL target |
| proxy | string | ❌ Tidak | Proxy opsional |Contoh:
`js
const { cfto: cf } = require('cfto');async function getSource() {
const result = await cf.source('https://spa-website.com/');
console.log('HTML Source:', result.source.substring(0, 200) + '...');
}
getSource();
`---
⚠️ Penanganan Error
Semua fungsi akan melempar
Error jika:
- Permintaan gagal di tingkat jaringan (misal: koneksi putus, DNS gagal)
- API mengembalikan status 4xx atau 5xx
- Parameter wajib hilang atau challenge gagal diselesaikanGunakan
try...catch:
`js
try {
const token = await cf.turnstileMin(url, siteKey, proxy);
console.log('Token:', token);
} catch (err) {
console.error('cfto error:', err.message);
}
`---
🔒 Catatan Keamanan
- Token Turnstile harus diverifikasi di server-side.
- Hindari menampilkan atau menyimpan token sensitif di log produksi.
- Gunakan proxy secara bijak dan hanya dari sumber tepercaya.
---
🧠 Tips
- Gunakan
turnstileMin untuk kecepatan.
- Gunakan turnstileMax jika challenge sulit dilewati.
- wafSession() cocok untuk scraping awal sebelum request utama.
- source()` ideal untuk situs SPA atau konten JS-rendered.---
Lisensi mengikuti ketentuan dalam package.json atau repositori resmi proyek ini.