Menghindari Turnstile dan hCaptcha: teknologi perlindungan dan metode solusi
Cloudflare Turnstile dan hCaptcha telah menjadi standar perlindungan layanan web dari bot, menggantikan reCAPTCHA tradisional. Sistem ini menganalisis puluhan parameter browser dan lingkungan jaringan, yang membuat penggunaan proxy menjadi tantangan serius untuk otomatisasi. Dalam artikel ini, kita akan membahas bagaimana teknologi ini bekerja pada tingkat teknis dan metode bypass mana yang benar-benar efektif saat bekerja melalui proxy.
Bagaimana Cloudflare Turnstile Bekerja
Cloudflare Turnstile adalah sistem perlindungan generasi baru yang diposisikan sebagai "alternatif tak terlihat untuk CAPTCHA". Berbeda dengan reCAPTCHA klasik, Turnstile tidak meminta pengguna untuk memilih lampu lalu lintas atau penyeberangan jalan. Sebaliknya, sistem ini menganalisis karakteristik perilaku dan teknis browser di latar belakang.
Secara teknis, Turnstile bekerja dalam tiga tahap. Pertama — memuat widget JavaScript yang disisipkan ke halaman melalui iframe. Kedua — pengumpulan telemetri: sistem mengumpulkan data tentang browser, termasuk WebGL fingerprint, Canvas fingerprint, daftar font, resolusi layar, zona waktu, bahasa sistem, dan banyak parameter lainnya. Tahap ketiga — validasi di server Cloudflare, di mana data yang dikumpulkan dicocokkan dengan pola bot dan proxy yang diketahui.
Fitur kunci Turnstile adalah penggunaan sistem reputasi alamat IP. Cloudflare memiliki basis data besar yang dikumpulkan dari jutaan situs yang menggunakan CDN dan perlindungan DDoS mereka. Jika alamat IP terdeteksi dalam aktivitas mencurigakan, kemungkinan untuk melewati Turnstile secara drastis menurun. Ini menciptakan masalah pertama bagi pengguna proxy — bahkan IP residensial yang bersih dapat memiliki reputasi rendah karena pemilik sebelumnya.
Penting: Turnstile memiliki tiga mode operasi — managed (otomatis), non-interactive (tanpa interaksi), dan invisible (sepenuhnya tersembunyi). Mode menentukan ketatnya pemeriksaan dan mempengaruhi metode bypass.
Teknologi hCaptcha dan metode deteksi
hCaptcha muncul sebagai pesaing Google reCAPTCHA dengan fokus pada privasi dan monetisasi melalui pembelajaran mesin. Sistem ini menawarkan pemilik situs untuk membayar penggunaan data pengguna untuk melatih model AI. Dari sudut pandang teknis, hCaptcha lebih agresif dalam mendeteksi otomatisasi dibandingkan Turnstile.
Mekanisme utama kerja hCaptcha mencakup beberapa tingkat perlindungan. Tingkat pertama — pemeriksaan parameter jaringan: sistem menganalisis TTL paket, latensi jaringan, konsistensi geolokasi alamat IP, dan zona waktu yang dinyatakan oleh browser. Tingkat kedua — panggilan JavaScript: hCaptcha memeriksa keberadaan dan kinerja Web API, termasuk WebRTC, Battery API, Sensor API. Tingkat ketiga — analisis perilaku gerakan mouse, kecepatan gulir, pola klik.
Ciri khas hCaptcha adalah penggunaan pemeriksaan berbasis tantangan. Jika sistem mencurigai bot, ia menampilkan tugas visual: memilih gambar dengan objek tertentu, menyelesaikan teka-teki, mengenali teks pada gambar yang terdistorsi. Tingkat kesulitan tugas meningkat secara dinamis dengan setiap upaya yang gagal. Bagi pengguna proxy, ini berarti bahwa bahkan dengan fingerprint yang benar, mereka dapat menghadapi rantai captcha yang tak berujung.
| Parameter | Turnstile | hCaptcha |
|---|---|---|
| Mode invisibilitas | Ya, secara default | Opsional |
| Reputasi IP | Kritis | Penting |
| Fingerprinting | Sedang | Agresif |
| Analisis perilaku | Dasar | Lanjutan |
| Frekuensi captcha | Rendah | Sedang-tinggi |
Browser fingerprinting dan proxy
Browser fingerprinting adalah teknik identifikasi pengguna berdasarkan kumpulan karakteristik unik dari browser dan perangkat. Bahkan jika Anda menggunakan proxy untuk mengganti alamat IP, fingerprint tetap tidak berubah dan dapat mengungkapkan penggunaan otomatisasi. Sistem perlindungan modern mengumpulkan antara 50 hingga 200+ parameter untuk membuat fingerprint.
Komponen utama fingerprint mencakup: Canvas fingerprint (rendering grafis unik yang bergantung pada GPU dan driver), WebGL fingerprint (parameter akselerator grafis), Audio Context fingerprint (fitur pemrosesan suara), daftar font yang diinstal, parameter layar (resolusi, kedalaman warna, rasio piksel), User-Agent dan header browser, pengaturan bahasa, zona waktu, keberadaan plugin dan ekstensi.
Masalah bagi pengguna proxy terletak pada ketidaksesuaian. Misalnya, jika alamat IP Anda menunjukkan lokasi di Jerman, tetapi zona waktu browser diatur ke Moskow — ini adalah sinyal merah. Jika kebocoran WebRTC mengungkapkan alamat IP asli Anda yang berbeda dari proxy — sistem akan segera mengidentifikasi penyamaran. Jika User-Agent menyatakan Windows, tetapi Canvas fingerprint sesuai dengan Linux — deteksi dijamin.
// Contoh pengumpulan fingerprint dasar
const fingerprint = {
canvas: getCanvasFingerprint(),
webgl: getWebGLFingerprint(),
fonts: getFonts(),
screen: {
width: screen.width,
height: screen.height,
colorDepth: screen.colorDepth,
pixelRatio: window.devicePixelRatio
},
timezone: Intl.DateTimeFormat().resolvedOptions().timeZone,
language: navigator.language,
platform: navigator.platform,
hardwareConcurrency: navigator.hardwareConcurrency,
deviceMemory: navigator.deviceMemory,
webrtc: await getWebRTCIPs()
};
function getCanvasFingerprint() {
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.textBaseline = 'top';
ctx.font = '14px Arial';
ctx.fillText('Browser fingerprint', 2, 2);
return canvas.toDataURL();
}
Metode deteksi server proxy
Sistem perlindungan menggunakan berbagai teknik untuk mendeteksi proxy. Metode pertama — pemeriksaan melalui basis data proxy dan VPN yang dikenal. Layanan seperti IPHub, IP2Proxy, MaxMind GeoIP2 memiliki jutaan alamat IP yang diklasifikasikan sebagai proxy, VPN, penyedia hosting. Cloudflare dan hCaptcha terintegrasi dengan basis data semacam itu dan secara otomatis meningkatkan tingkat pemeriksaan untuk IP yang mencurigakan.
Metode kedua — analisis ASN (Nomor Sistem Otonom). Proxy pusat data biasanya dimiliki oleh penyedia hosting (AWS, DigitalOcean, OVH), yang mudah ditentukan berdasarkan ASN. Proxy residensial menggunakan ASN dari penyedia internet biasa (Comcast, Verizon, Deutsche Telekom), yang membuat mereka kurang mencurigakan. Namun, bahkan jaringan residensial dapat sebagian dikompromikan jika penyedia dikenal menjual proxy.
Metode ketiga — analisis perilaku pada tingkat jaringan. Sistem melacak anomali: TTL paket yang terlalu rendah atau tinggi, latensi yang tidak biasa, penggunaan port yang tidak standar, ketidaksesuaian geolokasi dan jalur routing. Misalnya, jika alamat IP terlokalisasi di AS, tetapi traceroute menunjukkan rute melalui server Eropa — ini adalah tanda proxy.
Kesalahan umum: Menggunakan satu alamat IP untuk beberapa sesi dengan fingerprint yang berbeda. Sistem melacak pola semacam itu dan memblokir IP secara keseluruhan, bahkan jika itu adalah proxy residensial berkualitas.
Proxy residensial sebagai solusi dasar
Proxy residensial adalah fondasi untuk menghindari Turnstile dan hCaptcha. Berbeda dengan proxy pusat data, proxy residensial menggunakan alamat IP dari perangkat nyata: router rumah, ponsel, perangkat IoT. Ini membuat mereka hampir tidak dapat dibedakan dari pengguna biasa dalam hal infrastruktur jaringan.
Keuntungan utama proxy residensial untuk menghindari captcha: kepemilikan oleh ISP (Penyedia Layanan Internet), bukan penyedia hosting; reputasi alamat IP yang bersih dalam banyak kasus; geolokasi dan routing yang benar; kemungkinan rendah untuk masuk daftar hitam. Namun, tidak semua proxy residensial sama efektifnya. Beberapa faktor sangat penting.
Faktor pertama — rotasi alamat IP. Proxy residensial statis (sticky sessions) memungkinkan penggunaan satu IP dari beberapa menit hingga beberapa jam. Ini optimal untuk skenario di mana pemeliharaan sesi diperlukan: otorisasi, pengisian formulir, operasi multi-langkah. Proxy rotasi mengubah IP pada setiap permintaan atau berdasarkan timer, yang berguna untuk pengambilan data, tetapi dapat menyebabkan masalah dengan captcha karena seringnya perubahan konteks.
Faktor kedua — distribusi geografis. Untuk menghindari captcha, penting agar geolokasi IP sesuai dengan target situs dan pengaturan browser. Jika Anda bekerja dengan situs Jerman, gunakan proxy residensial Jerman dan atur zona waktu yang sesuai (Europe/Berlin), bahasa (de-DE), dan lokal di browser.
Faktor ketiga — kualitas penyedia proxy. Proxy residensial murah sering kali dikumpulkan melalui metode yang meragukan (aplikasi VPN gratis, perangkat terinfeksi), yang mengarah pada reputasi rendah dari kumpulan IP. Penyedia profesional bekerja dengan kemitraan SDK yang sah dan memantau kualitas jaringan dengan cermat. Periksa tingkat keberhasilan penyedia di situs target sebelum melakukan skala.
Alat otomatisasi: Selenium, Puppeteer, Playwright
Pemilihan alat otomatisasi sangat mempengaruhi kemampuan untuk menghindari captcha. Selenium, Puppeteer, dan Playwright adalah tiga solusi utama, masing-masing dengan karakteristik deteksinya sendiri. Sistem perlindungan dapat menentukan penggunaan alat ini melalui puluhan tanda.
Selenium adalah alat tertua dan paling mudah terdeteksi. Browser yang dikendalikan oleh Selenium memiliki tanda yang jelas: variabel window.navigator.webdriver diatur ke true, beberapa properti objek navigator hilang, ukuran jendela browser yang khas untuk otomatisasi. Bahkan dengan proxy, Selenium sering gagal melewati pemeriksaan Turnstile dan hCaptcha tanpa obfuscation tambahan.
Puppeteer dan Playwright adalah alat yang lebih modern berdasarkan Chrome DevTools Protocol. Mereka juga terdeteksi, tetapi memiliki lebih sedikit tanda yang jelas. Metode deteksi utama: pemeriksaan chrome.runtime, analisis permissions API, deteksi mode headless melalui ketiadaan plugin dan ukuran viewport yang spesifik, pemeriksaan keberadaan DevTools melalui serangan timing.
// Pengaturan dasar Puppeteer dengan proxy dan anti-detect
const puppeteer = require('puppeteer-extra');
const StealthPlugin = require('puppeteer-extra-plugin-stealth');
puppeteer.use(StealthPlugin());
const browser = await puppeteer.launch({
headless: false, // headless: true mudah terdeteksi
args: [
'--proxy-server=http://your-proxy:port',
'--disable-blink-features=AutomationControlled',
'--disable-dev-shm-usage',
'--no-sandbox',
'--disable-setuid-sandbox',
'--disable-web-security',
'--disable-features=IsolateOrigins,site-per-process',
`--window-size=1920,1080`,
'--user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
]
});
const page = await browser.newPage();
// Autentikasi proxy
await page.authenticate({
username: 'proxy_user',
password: 'proxy_pass'
});
// Mengubah properti webdriver
await page.evaluateOnNewDocument(() => {
Object.defineProperty(navigator, 'webdriver', {
get: () => false
});
// Emulasi plugin untuk headless
Object.defineProperty(navigator, 'plugins', {
get: () => [1, 2, 3, 4, 5]
});
});
Untuk menghindari captcha secara serius, disarankan untuk menggunakan browser anti-detect khusus: Multilogin, GoLogin, AdsPower, Dolphin Anty. Solusi ini membuat profil browser terisolasi dengan fingerprint unik, mengelola cookies dan session storage, secara otomatis menyinkronkan zona waktu dengan geolokasi proxy, dan meniru fingerprint Canvas dan WebGL yang realistis.
Layanan pemecahan captcha: integrasi dan efektivitas
Ketika metode teknis tidak cukup, layanan pemecahan captcha datang untuk membantu. Mereka dibagi menjadi dua jenis: manusia (crowdsourcing) dan otomatis (pembelajaran mesin). Untuk Turnstile dan hCaptcha, efektivitasnya berbeda.
Layanan manusia (2Captcha, AntiCaptcha, CapSolver, CapMonster Cloud) bekerja berdasarkan prinsip kerja terdistribusi: captcha Anda dikirim ke orang nyata yang menyelesaikannya secara manual. Keuntungan: tingkat keberhasilan tinggi (95-99% untuk hCaptcha, 85-95% untuk Turnstile), dukungan untuk tugas visual yang kompleks, stabilitas relatif. Kerugian: kecepatan penyelesaian 10-60 detik, biaya $1-3 untuk 1000 captcha, ketergantungan pada ketersediaan operator.
Layanan otomatis menggunakan model AI untuk pengenalan. Mereka lebih cepat (1-5 detik) dan lebih murah, tetapi memiliki tingkat keberhasilan yang lebih rendah untuk captcha modern — biasanya 60-80% untuk hCaptcha dan 50-70% untuk Turnstile. Efektif untuk tugas berbasis tantangan yang sederhana, tetapi sering gagal pada pemeriksaan yang tidak terlihat.
// Integrasi 2Captcha untuk memecahkan hCaptcha
const axios = require('axios');
async function solveHCaptcha(sitekey, pageUrl, proxyConfig) {
const API_KEY = 'your_2captcha_api_key';
// Mengirim tugas
const createTask = await axios.post('https://2captcha.com/in.php', null, {
params: {
key: API_KEY,
method: 'hcaptcha',
sitekey: sitekey,
pageurl: pageUrl,
proxy: `${proxyConfig.type}:${proxyConfig.host}:${proxyConfig.port}:${proxyConfig.user}:${proxyConfig.pass}`,
json: 1
}
});
const taskId = createTask.data.request;
// Menunggu penyelesaian
let solution = null;
for (let i = 0; i < 60; i++) {
await new Promise(resolve => setTimeout(resolve, 3000));
const result = await axios.get('https://2captcha.com/res.php', {
params: {
key: API_KEY,
action: 'get',
id: taskId,
json: 1
}
});
if (result.data.status === 1) {
solution = result.data.request;
break;
}
}
return solution; // token untuk dimasukkan ke dalam formulir
}
// Penggunaan di Puppeteer
const captchaToken = await solveHCaptcha(
'site-key-from-page',
'https://example.com',
{ type: 'http', host: 'proxy.example.com', port: 8080, user: 'user', pass: 'pass' }
);
await page.evaluate((token) => {
document.querySelector('[name="h-captcha-response"]').value = token;
document.querySelector('[name="g-recaptcha-response"]').value = token;
}, captchaToken);
Sangat penting untuk mengirimkan parameter proxy yang benar ke layanan pemecahan captcha. Jika captcha diselesaikan dari satu IP, dan kemudian token digunakan dari yang lain — validasi akan gagal. Captcha modern mengaitkan token dengan alamat IP, User-Agent, dan parameter sesi lainnya.
Teknik lanjutan: emulasi perangkat dan TLS fingerprinting
Untuk menghindari sistem yang paling terlindungi, diperlukan teknik lanjutan yang melampaui pengaturan dasar proxy dan browser. Dua area kunci — emulasi perangkat mobile dan pengelolaan TLS fingerprint.
Proxy mobile dikombinasikan dengan emulasi browser mobile memberikan efektivitas tinggi terhadap captcha. Alasan: lalu lintas mobile memiliki skor kepercayaan yang lebih tinggi, alamat IP mobile (terutama 4G/5G) sering kali dinamis dan berubah secara alami, perangkat mobile memiliki kumpulan parameter fingerprint yang berbeda, banyak situs menyederhanakan pemeriksaan untuk pengguna mobile.
Untuk emulasi perangkat mobile yang benar, perlu: menggunakan User-Agent mobile (kesesuaian yang tepat dengan model perangkat), mengatur viewport dan devicePixelRatio yang benar, meniru peristiwa sentuh alih-alih peristiwa mouse, menggunakan nilai mobile untuk navigator.platform dan navigator.maxTouchPoints, mengatur WebGL dan Canvas fingerprint sesuai dengan model perangkat tertentu.
// Emulasi iPhone 13 Pro di Playwright
const { chromium, devices } = require('playwright');
const iPhone13Pro = devices['iPhone 13 Pro'];
const browser = await chromium.launch({
proxy: {
server: 'http://mobile-proxy:port',
username: 'user',
password: 'pass'
}
});
const context = await browser.newContext({
...iPhone13Pro,
locale: 'en-US',
timezoneId: 'America/New_York',
geolocation: { latitude: 40.7128, longitude: -74.0060 },
permissions: ['geolocation']
});
const page = await context.newPage();
// Pengaturan tambahan untuk fingerprint
await page.addInitScript(() => {
Object.defineProperty(navigator, 'hardwareConcurrency', {
get: () => 6 // iPhone 13 Pro memiliki 6 inti
});
Object.defineProperty(navigator, 'deviceMemory', {
get: () => 6 // 6GB RAM
});
});
TLS fingerprinting adalah metode identifikasi klien berdasarkan parameter koneksi TLS/SSL. Setiap browser dan sistem operasi memiliki kombinasi unik dari cipher suites, extensions, elliptic curves, yang dikirimkan saat membangun koneksi HTTPS. Sistem perlindungan menganalisis TLS fingerprint dan membandingkannya dengan User-Agent yang dinyatakan.
Masalah dengan alat otomatisasi standar adalah mereka menggunakan TLS fingerprint dari Chromium dasar, yang berbeda dari Chrome penuh. Ketidaksesuaian ini terdeteksi. Solusi: menggunakan pustaka seperti curl-impersonate atau tls-client untuk Python, yang meniru TLS fingerprint dari browser tertentu; menerapkan klien HTTP dengan kustomisasi TLS (misalnya, cycletls untuk Node.js); menggunakan browser penuh alih-alih mode headless.
Pendekatan gabungan:
- Proxy residensial atau mobile untuk IP yang bersih
- Browser anti-detect atau Playwright yang disetel dengan benar untuk fingerprint yang tepat
- Sinkronisasi semua parameter: geolokasi IP = zona waktu = bahasa = lokal
- Meniru perilaku manusia: penundaan, gerakan mouse, gulir
- Layanan pemecahan captcha sebagai fallback untuk kasus yang kompleks
Contoh kode praktis
Mari kita lihat contoh lengkap untuk menghindari Turnstile menggunakan Playwright, proxy residensial, dan teknik anti-detect. Kode ini menunjukkan pendekatan komprehensif untuk menyelesaikan tugas ini.
const { chromium } = require('playwright-extra');
const stealth = require('puppeteer-extra-plugin-stealth')();
// Konfigurasi proxy
const proxyConfig = {
server: 'http://residential-proxy.proxycove.com:8080',
username: 'your_username',
password: 'your_password'
};
// Pengaturan untuk meniru pengguna nyata dari Jerman
const userConfig = {
viewport: { width: 1920, height: 1080 },
userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36',
locale: 'de-DE',
timezoneId: 'Europe/Berlin',
geolocation: { latitude: 52.5200, longitude: 13.4050 }, // Berlin
permissions: ['geolocation']
};
async function bypassTurnstile(url) {
const browser = await chromium.launch({
headless: false, // penting untuk captcha yang kompleks
proxy: proxyConfig,
args: [
'--disable-blink-features=AutomationControlled',
'--no-sandbox',
'--disable-dev-shm-usage'
]
});
const context = await browser.newContext({
...userConfig,
// Header tambahan
extraHTTPHeaders: {
'Accept-Language': 'de-DE,de;q=0.9,en-US;q=0.8,en;q=0.7',
'Accept-Encoding': 'gzip, deflate, br',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'DNT': '1',
'Connection': 'keep-alive',
'Upgrade-Insecure-Requests': '1'
}
});
const page = await context.newPage();
// Menyisipkan skrip anti-detect
await page.addInitScript(() => {
// Menyembunyikan webdriver
Object.defineProperty(navigator, 'webdriver', {
get: () => undefined
});
// Emulasi chrome runtime
window.chrome = {
runtime: {}
};
// Mengubah permissions
const originalQuery = window.navigator.permissions.query;
window.navigator.permissions.query = (parameters) => (
parameters.name === 'notifications' ?
Promise.resolve({ state: Notification.permission }) :
originalQuery(parameters)
);
// Nilai yang lebih realistis untuk Windows
Object.defineProperty(navigator, 'platform', {
get: () => 'Win32'
});
Object.defineProperty(navigator, 'hardwareConcurrency', {
get: () => 8
});
Object.defineProperty(navigator, 'deviceMemory', {
get: () => 8
});
});
// Meniru perilaku manusia
async function humanLikeDelay(min = 1000, max = 3000) {
const delay = Math.random() * (max - min) + min;
await page.waitForTimeout(delay);
}
async function humanLikeMouseMove() {
const viewportSize = page.viewportSize();
const x = Math.random() * viewportSize.width;
const y = Math.random() * viewportSize.height;
await page.mouse.move(x, y, { steps: 10 });
}
try {
// Mengunjungi halaman
await page.goto(url, { waitUntil: 'networkidle' });
await humanLikeDelay(2000, 4000);
await humanLikeMouseMove();
// Menunggu pemuatan Turnstile
await page.waitForSelector('iframe[src*="turnstile"]', { timeout: 10000 });
console.log('Turnstile terdeteksi, menunggu penyelesaian otomatis...');
// Turnstile dalam mode managed sering diselesaikan secara otomatis
// Menunggu munculnya token
await page.waitForFunction(() => {
const response = document.querySelector('[name="cf-turnstile-response"]');
return response && response.value.length > 0;
}, { timeout: 30000 });
console.log('Turnstile berhasil dilewati!');
// Tindakan lebih lanjut di situs
await humanLikeDelay();
// Contoh: mengisi formulir
await page.fill('#email', 'user@example.com');
await humanLikeDelay(500, 1500);
await page.fill('#password', 'SecurePassword123');
await humanLikeDelay(500, 1500);
await humanLikeMouseMove();
await page.click('button[type="submit"]');
await page.waitForNavigation({ waitUntil: 'networkidle' });
console.log('Otorisasi berhasil');
} catch (error) {
console.error('Kesalahan saat menghindari Turnstile:', error.message);
// Screenshot untuk debugging
await page.screenshot({ path: 'turnstile_error.png', fullPage: true });
} finally {
await browser.close();
}
}
// Menjalankan
bypassTurnstile('https://example.com/login');
Untuk hCaptcha dengan tugas visual, diperlukan integrasi layanan pemecahan. Berikut adalah contoh menggunakan 2Captcha:
const axios = require('axios');
class HCaptchaSolver {
constructor(apiKey) {
this.apiKey = apiKey;
this.baseUrl = 'https://2captcha.com';
}
async solve(sitekey, pageUrl, proxy = null) {
// Membuat tugas
const params = {
key: this.apiKey,
method: 'hcaptcha',
sitekey: sitekey,
pageurl: pageUrl,
json: 1
};
if (proxy) {
params.proxy = `${proxy.type}:${proxy.host}:${proxy.port}:${proxy.username}:${proxy.password}`;
params.proxytype = proxy.type.toUpperCase();
}
const createResponse = await axios.post(`${this.baseUrl}/in.php`, null, { params });
if (createResponse.data.status !== 1) {
throw new Error(`Kesalahan saat membuat tugas: ${createResponse.data.request}`);
}
const taskId = createResponse.data.request;
console.log(`Tugas dibuat: ${taskId}`);
// Polling hasil
for (let attempt = 0; attempt < 60; attempt++) {
await new Promise(resolve => setTimeout(resolve, 5000));
const resultResponse = await axios.get(`${this.baseUrl}/res.php`, {
params: {
key: this.apiKey,
action: 'get',
id: taskId,
json: 1
}
});
if (resultResponse.data.status === 1) {
console.log('hCaptcha terpecahkan!');
return resultResponse.data.request;
}
if (resultResponse.data.request !== 'CAPCHA_NOT_READY') {
throw new Error(`Kesalahan saat menyelesaikan: ${resultResponse.data.request}`);
}
console.log(`Percobaan ${attempt + 1}/60: captcha masih dalam proses...`);
}
throw new Error('Timeout: captcha tidak terpecahkan dalam 5 menit');
}
}
// Penggunaan dengan Playwright
async function bypassHCaptcha(page, proxyConfig) {
// Mendapatkan sitekey dari halaman
const sitekey = await page.getAttribute('[data-sitekey]', 'data-sitekey');
const pageUrl = page.url();
const solver = new HCaptchaSolver('your_2captcha_api_key');
const token = await solver.solve(sitekey, pageUrl, {
type: 'http',
host: 'residential-proxy.proxycove.com',
port: 8080,
username: 'your_username',
password: 'your_password'
});
// Menyisipkan token ke dalam halaman
await page.evaluate((captchaToken) => {
document.querySelector('[name="h-captcha-response"]').value = captchaToken;
// Untuk beberapa situs, g-recaptcha-response juga diperlukan
const gRecaptcha = document.querySelector('[name="g-recaptcha-response"]');
if (gRecaptcha) {
gRecaptcha.value = captchaToken;
}
// Memicu peristiwa untuk callback
const event = new Event('change', { bubbles: true });
document.querySelector('[name="h-captcha-response"]').dispatchEvent(event);
}, token);
console.log('Token hCaptcha telah disisipkan');
}
Kesimpulan
Menghindari Turnstile dan hCaptcha melalui proxy adalah tugas yang kompleks, memerlukan pemahaman tentang mekanisme perlindungan dan kombinasi teknologi yang cerdas. Kesimpulan kunci: gunakan proxy residensial atau proxy mobile berkualitas daripada proxy pusat data; sinkronkan semua parameter lingkungan (geolokasi IP, zona waktu, bahasa, lokal); terapkan teknik anti-detect untuk menyembunyikan otomatisasi; tiru perilaku manusia yang realistis; gunakan layanan pemecahan captcha sebagai tingkat perlindungan tambahan.
Efektivitas metode tergantung pada situs tertentu dan pengaturan perlindungannya. Disarankan untuk memulai dengan konfigurasi dasar dan secara bertahap memperumit, memantau tingkat keberhasilan. Uji pada volume kecil sebelum melakukan skala untuk menghindari pemblokiran kumpulan IP. Secara teratur perbarui parameter fingerprint dan User-Agent sesuai dengan versi browser terbaru.
Untuk pekerjaan profesional dengan captcha, pertimbangkan untuk menggunakan platform otomatisasi khusus yang menggabungkan proxy, browser anti-detect, dan layanan pemecahan dalam satu ekosistem. Ini mengurangi kompleksitas integrasi dan meningkatkan stabilitas hasil. Mulailah dengan mengujicoba proxy berkualitas di situs target Anda — ini adalah fondasi untuk menghindari sistem perlindungan modern yang sukses.