CAPSOLVER
Blog
Cara Menggunakan C# untuk Menyelesaikan Tantangan Cloudflare Turnstile CAPTCHA

Cara Menggunakan C# untuk Memecahkan Tantangan Cloudflare Turnstile CAPTCHA

Logo of CapSolver

Ethan Collins

Pattern Recognition Specialist

19-Sep-2024

Menavigasi kompleksitas tantangan CAPTCHA bisa menjadi tugas yang berat, terutama saat menghadapi Turnstile milik Cloudflare. Sebagai pengembang berpengalaman, saya telah menemui banyak sistem CAPTCHA selama bertahun-tahun, tetapi Cloudflare Turnstile menghadirkan tantangan unik karena algoritma canggihnya yang dirancang untuk menggagalkan sistem otomatis. Dalam panduan ini, saya akan memandu Anda melalui cara mengatasi tantangan CAPTCHA Cloudflare Turnstile menggunakan C#, memberikan Anda wawasan praktis dan teknik untuk meningkatkan upaya otomatisasi Anda.

Daftar Isi

  1. Pengenalan Cloudflare Turnstile
  2. Menyiapkan Lingkungan Pengembangan C#
  • Unduh dan Instal .NET
  • Konfigurasi VS Code untuk Pengembangan C#
  1. Peroleh Prasyarat Penggunaan API
  • Daftarkan diri untuk CapSolver
  • Ambil SiteKey untuk Turnstile
  1. Menggunakan CapSolver API untuk Memperoleh Token Turnstile
  2. Contoh Kode Lengkap
  3. Penanganan Kesalahan dan Pemecahan Masalah
  • Kesalahan Permintaan Gagal
  1. Penjelasan Kode
  2. Kesimpulan

Memahami Cloudflare Turnstile

Cloudflare Turnstile adalah sistem CAPTCHA canggih yang dirancang untuk melindungi situs web dari bot otomatis sambil memastikan gesekan minimal untuk pengguna yang sah. Tidak seperti CAPTCHA tradisional, yang sering kali melibatkan pemecahan teka-teki atau mengidentifikasi objek, Turnstile beroperasi melalui pendekatan yang lebih bernuansa. Ia menganalisis perilaku pengguna dan berbagai interaksi web untuk menentukan apakah pengunjung adalah manusia atau bot.
Turnstile menggunakan berbagai sinyal, termasuk gerakan mouse, pola klik, dan waktu interaksi, untuk menghasilkan tantangan yang sulit dipecahkan oleh sistem otomatis. Hal ini menjadikannya alat yang ampuh untuk keamanan situs web tetapi juga menjadi rintangan yang menantang bagi otomatisasi.

Kode Bonus

Klaim Kode Bonus Anda untuk solusi captcha teratas; CapSolver: WEBS. Setelah menukarkannya, Anda akan mendapatkan bonus tambahan 5% setelah setiap pengisian ulang, Tidak Terbatas

Menyiapkan Lingkungan Pengembangan C#

1. Unduh dan Instal .NET

  • Kunjungi halaman ini untuk mengunduh .NET.
  • Ikuti petunjuk yang diberikan untuk sistem operasi Anda untuk menginstal .NET.

2. Konfigurasi VS Code untuk Pengembangan C#

  • Instal ekstensi C# untuk VS Code.
    • Di VS Code, cari "C#" di pasar ekstensi dan instal plugin resmi oleh Microsoft.
    • Ekstensi ini menyediakan fitur seperti IntelliSense dan pemformatan kode, membuat pengembangan C# lebih mudah.
  • Instal paket parsing JSON Newtonsoft.Json untuk menangani data JSON.
    • Anda dapat menginstal paket ini menggunakan NuGet dengan perintah:
      bash Copy
      dotnet add package Newtonsoft.Json

Peroleh Prasyarat Penggunaan API

1. Daftarkan diri untuk CapSolver

  • Buat akun di CapSolver untuk mengakses layanan API mereka.
  • Setelah pendaftaran, Anda akan menerima kunci API yang diperlukan untuk mengakses layanan pemecahan CAPTCHA CapSolver.

2. Ambil SiteKey untuk Turnstile

  • Untuk tantangan CAPTCHA Cloudflare Turnstile, memperoleh siteKey untuk situs web target sangat penting. siteKey diperlukan untuk menggunakan API dekode dan memecahkan CAPTCHA.
  • Anda dapat mengekstrak siteKey menggunakan Ekstensi CapSolver, yang menyederhanakan prosesnya.

Menggunakan CapSolver API untuk Memperoleh Token Turnstile

Berikut kode untuk berinteraksi dengan CapSolver API, meminta pemecahan CAPTCHA, dan mengambil token Turnstile.

csharp Copy
public static async Task<string> CallCapsolver()
{
    // // Send GET request
    // var todoItem = await GetTodoItemAsync(API_URL);
    // Console.WriteLine("GET Request Result:");
    // Console.WriteLine(todoItem);

    var data = new
    {
        clientKey = CAPSOLVER_API_KEY,
        task = new
        {
            type = "AntiTurnstileTaskProxyLess",
            websiteURL = PAGE_URL,
            websiteKey = SITE_KEY,
            metadata = new { action = "login" }
        }
    };

    // Send POST request
    var response = await PostTodoItemAsync("https://api.capsolver.com/createTask", data);
    Console.WriteLine("POST Request Result:");
    var responseString = await response.Content.ReadAsStringAsync();
    Console.WriteLine(responseString);
    JObject taskResp = JsonConvert.DeserializeObject<JObject>(responseString);
    var taskId = taskResp["taskId"].ToString();
    if (string.IsNullOrEmpty(taskId))
    {
        Console.WriteLine("No task ID received.");
        return "";
    }
    Console.WriteLine($"Created task ID: {taskId}");

    while (true)
    {
        await Task.Delay(1000); // Sleep for 1 second
        var resultData = new
        {
            clientKey = CAPSOLVER_API_KEY,
            taskId = taskId
        };

        // content = new StringContent(JsonConvert.SerializeObject(data), System.Text.Encoding.UTF8, "application/json");
        // response = await httpClient.PostAsync(uri, content);

        response = await PostTodoItemAsync("https://api.capsolver.com/getTaskResult", resultData);
        responseString = await response.Content.ReadAsStringAsync();
        Console.WriteLine(responseString);
        if (!response.IsSuccessStatusCode)
        {
            Console.WriteLine($"Failed to get task result: {responseString}");
            return "";
        }

        taskResp = JsonConvert.DeserializeObject<JObject>(responseString);
        Console.WriteLine(taskResp);
        var status = taskResp["status"].ToString();

        if (status == "ready")
        {
            Console.WriteLine("Successfully => " + responseString);
            return taskResp["solution"]["token"].ToString();
        }

        if (status == "failed")
        {
            Console.WriteLine("Failed! => " + responseString);
            return "";
        }
    }
}

Contoh kode lengkap

csharp Copy
using System;
using System.Net.Http;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;

namespace HttpExample
{
    public class Program
    {
        private const string CAPSOLVER_API_KEY = "CAI-xxxxxxxxxxxxxxxxxxx";
        private const string PAGE_URL = "https://dash.cloudflare.com/login";
        private const string SITE_KEY = "0x4AAAAAAAJel0iaAR3mgkjp";

        public static async Task Main(string[] args)
        {
            var token = await CallCapsolver();
            Console.WriteLine($"token: {token}");
            await Login(token);
        }

        public static async Task<string> CallCapsolver()
        {
            // // Send GET request
            // var todoItem = await GetTodoItemAsync(API_URL);
            // Console.WriteLine("GET Request Result:");
            // Console.WriteLine(todoItem);

            var data = new
            {
                clientKey = CAPSOLVER_API_KEY,
                task = new
                {
                    type = "AntiTurnstileTaskProxyLess",
                    websiteURL = PAGE_URL,
                    websiteKey = SITE_KEY,
                    metadata = new { action = "login" }
                }
            };

            // Send POST request
            var response = await PostTodoItemAsync("https://api.capsolver.com/createTask", data);
            Console.WriteLine("POST Request Result:");
            var responseString = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseString);
            JObject taskResp = JsonConvert.DeserializeObject<JObject>(responseString);
            var taskId = taskResp["taskId"].ToString();
            if (string.IsNullOrEmpty(taskId))
            {
                Console.WriteLine("No task ID received.");
                return "";
            }
            Console.WriteLine($"Created task ID: {taskId}");

            while (true)
            {
                await Task.Delay(1000); // Sleep for 1 second
                var resultData = new
                {
                    clientKey = CAPSOLVER_API_KEY,
                    taskId = taskId
                };

                // content = new StringContent(JsonConvert.SerializeObject(data), System.Text.Encoding.UTF8, "application/json");
                // response = await httpClient.PostAsync(uri, content);

                response = await PostTodoItemAsync("https://api.capsolver.com/getTaskResult", resultData);
                responseString = await response.Content.ReadAsStringAsync();
                Console.WriteLine(responseString);
                if (!response.IsSuccessStatusCode)
                {
                    Console.WriteLine($"Failed to get task result: {responseString}");
                    return "";
                }

                taskResp = JsonConvert.DeserializeObject<JObject>(responseString);
                Console.WriteLine(taskResp);
                var status = taskResp["status"].ToString();

                if (status == "ready")
                {
                    Console.WriteLine("Successfully => " + responseString);
                    return taskResp["solution"]["token"].ToString();
                }

                if (status == "failed")
                {
                    Console.WriteLine("Failed! => " + responseString);
                    return "";
                }
            }
        }

        public static async Task Login(string token)
        {
            using var httpClient = new HttpClient();
            // Add request headers
            httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Cookie", $"cf_clearance={token}");
            httpClient.DefaultRequestHeaders.TryAddWithoutValidation("Host", "dash.cloudflare.com");
            var data = new {
                cf_challenge_response = token,
                email = "[email protected]",
                password = "123456",
            };
            var json = JsonConvert.SerializeObject(data);
            var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

            var response = await httpClient.PostAsync("https://dash.cloudflare.com/api/v4/login", content);

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception($"Request failed with status code {response.StatusCode}");
            }

            var responseString = await response.Content.ReadAsStringAsync();
            Console.WriteLine(responseString);
        }

        private static async Task<HttpResponseMessage> GetTodoItemAsync(string url)
        {
            using var httpClient = new HttpClient();
            var response = await httpClient.GetAsync(url);

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception($"Request failed with status code {response.StatusCode}");
            }

            // var responseString = await response.Content.ReadAsStringAsync();
            return response;
        }

        private static async Task<HttpResponseMessage> PostTodoItemAsync(string url, object item)
        {
            using var httpClient = new HttpClient();
            var json = JsonConvert.SerializeObject(item);
            var content = new StringContent(json, System.Text.Encoding.UTF8, "application/json");

            var response = await httpClient.PostAsync(url, content);

            if (!response.IsSuccessStatusCode)
            {
                throw new Exception($"Request failed with status code {response.StatusCode}");
            }

            return response;
        }
    }
}

Penanganan Kesalahan dan Pemecahan Masalah

  • Permintaan Gagal: Jika Anda mengalami kesalahan "Permintaan gagal", verifikasi bahwa kunci API dan kunci situs sudah benar.
    • Pastikan Anda memiliki kunci API aktif dari akun CapSolver Anda.
    • Periksa kembali apakah siteKey cocok dengan yang ada di situs web target.

Penjelasan

  1. Menyiapkan Tugas: Dalam metode CallCapsolver, Anda menentukan jenis tugas AntiTurnstileTaskProxyLess, websiteURL, dan websiteKey. Parameter ini dikirim ke CapSolver untuk membuat tugas pemecahan CAPTCHA.
  2. Polling untuk Status Tugas: Setelah tugas dibuat, kode melakukan polling ke titik akhir getTaskResult untuk memeriksa status tugas. Jika tugas sudah siap, maka akan mengambil solusi (token Turnstile); jika gagal, maka akan mengembalikan kesalahan.
  3. Menggunakan Token: Metode Login menggunakan token yang diterima dari CapSolver untuk mengautentikasi permintaan login di situs web yang dilindungi Cloudflare.

Kesimpulan

Dengan mengikuti panduan ini, Anda akan dapat menavigasi kompleksitas pemecahan tantangan CAPTCHA Cloudflare Turnstile menggunakan C#. API CapSolver memberikan cara yang andal dan efisien untuk mengotomatiskan proses, meningkatkan kemampuan otomatisasi Anda. Untuk informasi dan pembaruan lebih lanjut, kunjungi CapSolver.

Catatan tentang Kepatuhan

Penting: Saat terlibat dalam pengambilan web, sangat penting untuk mematuhi pedoman hukum dan etika. Selalu pastikan bahwa Anda memiliki izin untuk mengambil situs web target, dan hormati file robots.txt situs dan persyaratan layanan. CapSolver dengan tegas menentang penyalahgunaan layanan kami untuk aktivitas yang tidak patuh. Penyalahgunaan alat otomatis untuk melewati CAPTCHA tanpa otorisasi yang tepat dapat menyebabkan konsekuensi hukum. Pastikan kegiatan pengambilan data Anda sesuai dengan semua hukum dan peraturan yang berlaku untuk menghindari potensi masalah.

Pernyataan Kepatuhan: Informasi yang diberikan di blog ini hanya untuk tujuan informasi. CapSolver berkomitmen untuk mematuhi semua hukum dan peraturan yang berlaku. Penggunaan jaringan CapSolver untuk kegiatan ilegal, penipuan, atau penyalahgunaan sangat dilarang dan akan diselidiki. Solusi penyelesaian captcha kami meningkatkan pengalaman pengguna sambil memastikan kepatuhan 100% dalam membantu menyelesaikan kesulitan captcha selama pengambilan data publik. Kami mendorong penggunaan layanan kami secara bertanggung jawab. Untuk informasi lebih lanjut, silakan kunjungi Syarat Layanan dan Kebijakan Privasi.

Lebih lanjut

Cara Mengidentifikasi Apakah `action` Diperlukan untuk Menyelesaikan Cloudflare Turnstile Menggunakan Ekstensi CapSolver
Cara mengidentifikasi apakah `action` diperlukan untuk mengatasi Cloudflare Turnstile menggunakan ekstensi CapSolver

Pelajari cara mengidentifikasi tindakan untuk penyelesaian CAPTCHA yang efektif Cloudflare Turnstile. Ikuti panduan langkah demi langkah kami dalam menggunakan alat dan teknik Capsolver.

Cloudflare
Logo of CapSolver

Anh Tuan

05-Dec-2025

Cara Mengotomasi Menyelesaikan Tantangan Cloudflare di Selenium
Cara Mengotomasi Penyelesaian Tantangan Cloudflare dengan Selenium

Menguasai strategi paling efektif untuk menyelesaikan tantangan Cloudflare dalam Selenium. Gunakan Undetected-Chromedriver, mimikri perilaku, dan API CapSolver untuk otomatisasi web yang andal.

Cloudflare
Logo of CapSolver

Ethan Collins

04-Dec-2025

Cara menyelesaikan Tantangan Cloudflare dengan Node.JS
Cara Mengatasi Tantangan Cloudflare dengan Node.js

Penjelasan mengapa Cloudflare memblokir scraper Node.js dan bagaimana pengembang memperoleh cf_clearance secara andal untuk alur kerja data.

Cloudflare
Logo of CapSolver

Emma Foster

03-Dec-2025

Cara mengatasi cloudflare | Menggunakan Puppeteer Node.JS
Cara menyelesaikan Cloudflare | Menggunakan Puppeteer Node.js

Kami akan menjelajahi cara efektif menyelesaikan Cloudflare seperti Turnstile dengan menggunakan Puppeteer dan Node.js serta bantuan solver Captcha

Cloudflare
Logo of CapSolver

Rajinder Singh

02-Dec-2025

Cara Mengidentifikasi Cloudflare Turnstile | Dengan menggunakan Ekstensi CapSolver
Cara Mengenali Cloudflare Turnstile | Dengan Menggunakan Ekstensi CapSolver

Pelajari cara mengenali Cloudflare Turnstile untuk menyelesaikan CAPTCHA secara efektif. Ikuti panduan langkah demi langkah kami menggunakan alat dan teknik Capsolver.

Cloudflare
Logo of CapSolver

Adélia Cruz

19-Nov-2025

Cara menyelesaikan CAPTCHA Cloudflare Turnstile dengan Python
Cara menyelesaikan Cloudflare Turnstile Captcha dengan Python

Dalam artikel ini, kami akan menunjukkan kepada Anda cara menyelesaikan cloudflare turnstile captcha dengan Python.

Cloudflare
Logo of CapSolver

Ethan Collins

18-Nov-2025