CAPSOLVER
Blog
Cara Menggunakan RestSharp (Perpustakaan C#) untuk Web Scraping

Cara Menggunakan RestSharp (Perpustakaan C#) untuk Scraping Web

Logo of CapSolver

Rajinder Singh

Deep Learning Researcher

17-Sep-2024

Web scraping adalah teknik penting untuk mengekstrak data dari situs web, tetapi aplikasi web modern seringkali mengimplementasikan langkah-langkah keamanan seperti tantangan CAPTCHA untuk mencegah akses otomatis. Tantangan CAPTCHA, seperti Google reCAPTCHA, dirancang untuk membedakan antara pengguna manusia dan bot, sehingga membuat skrip otomatis sulit untuk mengikis konten secara efektif.

Untuk mengatasi hambatan ini, pengembang dapat memanfaatkan alat dan layanan yang menyederhanakan permintaan HTTP dan menangani pemecahan CAPTCHA. RestSharp adalah library C# yang kuat dan mudah digunakan yang menyederhanakan proses membuat permintaan HTTP ke API RESTful. Bila digabungkan dengan parser HTML seperti HtmlAgilityPack, ia menjadi solusi yang kuat untuk tugas web scraping.

RestSharp WebScraping

Namun, menghadapi tantangan CAPTCHA selama scraping dapat menghentikan proses otomatisasi Anda. Di sinilah Capsolver berperan. Capsolver menawarkan solusi berbasis API untuk memecahkan CAPTCHA secara terprogram, memungkinkan skrip scraping Anda untuk melewati tantangan ini dan mengakses konten yang diinginkan dengan lancar.

Dalam panduan komprehensif ini, kami akan memandu Anda melalui:

Web Scraping dengan RestSharp

Dalam C#, RestSharp adalah library populer untuk menangani permintaan HTTP dan berinteraksi dengan API RESTful. Ini menyederhanakan banyak aspek komunikasi HTTP dibandingkan dengan HttpClient bawaan. Anda dapat menggabungkan RestSharp dengan parser HTML seperti HtmlAgilityPack untuk mengekstrak data dari halaman web.

Prasyarat

  • Instal library RestSharp menggunakan NuGet Package Manager:

    bash Copy
    Install-Package RestSharp
  • Instal library HtmlAgilityPack untuk membantu mengurai konten HTML:

    bash Copy
    Install-Package HtmlAgilityPack
  • Instal Newtonsoft.Json untuk menangani respons JSON:

    bash Copy
    Install-Package Newtonsoft.Json

Contoh: Mengikis "Quotes to Scrape"

Mari kita kikis kutipan dari situs web Quotes to Scrape menggunakan RestSharp dan HtmlAgilityPack.

csharp Copy
using System;
using System.Threading.Tasks;
using HtmlAgilityPack;
using RestSharp;

class Program
{
    static async Task Main(string[] args)
    {
        string url = "http://quotes.toscrape.com/";

        // Inisialisasi klien RestSharp
        var client = new RestClient(url);

        // Buat permintaan GET
        var request = new RestRequest(Method.GET);

        // Jalankan permintaan
        var response = await client.ExecuteAsync(request);

        if (response.IsSuccessful)
        {
            // Parse konten halaman menggunakan HtmlAgilityPack
            HtmlDocument htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(response.Content);

            // Temukan semua kutipan di halaman
            var quotes = htmlDoc.DocumentNode.SelectNodes("//span[@class='text']");

            // Cetak setiap kutipan
            foreach (var quote in quotes)
            {
                Console.WriteLine(quote.InnerText);
            }
        }
        else
        {
            Console.WriteLine($"Gagal mengambil halaman. Kode Status: {response.StatusCode}");
        }
    }
}

Penjelasan:

  • Klien dan Permintaan RestSharp: Menginisialisasi RestClient dengan URL target dan membuat RestRequest untuk metode GET.
  • Menjalankan Permintaan: Mengirim permintaan secara asinkron dan memeriksa apakah respons berhasil.
  • HtmlAgilityPack: Mengurai konten HTML dari respons dan mengekstrak kutipan dengan memilih elemen dengan kelas text.

Memecahkan reCAPTCHA v2 & reCAPTCHA v3 dengan Capsolver menggunakan RestSharp

Ketika situs web menggunakan reCAPTCHA v2 atau v3 untuk keamanan, Anda dapat memecahkan CAPTCHA menggunakan API Capsolver. Berikut adalah cara Anda dapat mengintegrasikan Capsolver dengan RestSharp untuk memecahkan tantangan reCAPTCHA.

Prasyarat

  • Newtonsoft.Json digunakan untuk menangani parsing JSON dari respons Capsolver:

    bash Copy
    Install-Package Newtonsoft.Json

Contoh: Memecahkan reCAPTCHA v2 dengan Capsolver

Pada bagian ini, kita akan menunjukkan cara memecahkan tantangan reCAPTCHA v2 menggunakan API Capsolver dan RestSharp.

csharp Copy
using System;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RestSharp;

class Program
{
    private static readonly string apiUrl = "https://api.capsolver.com";
    private static readonly string clientKey = "YOUR_API_KEY"; // Ganti dengan Capsolver API Key Anda

    static async Task Main(string[] args)
    {
        try
        {
            // Langkah 1: Buat tugas untuk memecahkan reCAPTCHA v2
            string taskId = await CreateTask();
            Console.WriteLine("ID Tugas: " + taskId);

            // Langkah 2: Ambil hasil dari tugas
            string taskResult = await GetTaskResult(taskId);
            Console.WriteLine("Hasil Tugas (Token CAPTCHA): " + taskResult);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Kesalahan: " + ex.Message);
        }
    }

    // Metode untuk membuat tugas pemecahan CAPTCHA baru
    private static async Task<string> CreateTask()
    {
        // Inisialisasi klien RestSharp
        var client = new RestClient(apiUrl);

        // Payload permintaan
        var requestBody = new
        {
            clientKey = clientKey,
            task = new
            {
                type = "ReCaptchaV2TaskProxyLess", // Jenis tugas untuk reCAPTCHA v2 tanpa proxy
                websiteURL = "https://www.example.com", // URL situs web untuk memecahkan CAPTCHA
                websiteKey = "SITE_KEY_HERE" // Kunci situs reCAPTCHA
            }
        };

        // Buat permintaan POST
        var request = new RestRequest("createTask", Method.POST);
        request.AddJsonBody(requestBody);

        // Jalankan permintaan
        var response = await client.ExecuteAsync(request);

        if (!response.IsSuccessful)
        {
            throw new Exception("Gagal membuat tugas: " + response.Content);
        }

        JObject jsonResponse = JObject.Parse(response.Content);
        if (jsonResponse["errorId"].ToString() != "0")
        {
            throw new Exception("Kesalahan membuat tugas: " + jsonResponse["errorDescription"]);
        }

        // Kembalikan ID tugas yang akan digunakan pada langkah selanjutnya
        return jsonResponse["taskId"].ToString();
    }

    // Metode untuk mengambil hasil dari tugas pemecahan CAPTCHA
    private static async Task<string> GetTaskResult(string taskId)
    {
        // Inisialisasi klien RestSharp
        var client = new RestClient(apiUrl);

        // Payload permintaan
        var requestBody = new
        {
            clientKey = clientKey,
            taskId = taskId
        };

        // Buat permintaan POST
        var request = new RestRequest("getTaskResult", Method.POST);
        request.AddJsonBody(requestBody);

        // Polling untuk hasil dari tugas setiap 5 detik
        while (true)
        {
            var response = await client.ExecuteAsync(request);

            if (!response.IsSuccessful)
            {
                throw new Exception("Gagal mendapatkan hasil tugas: " + response.Content);
            }

            JObject jsonResponse = JObject.Parse(response.Content);
            if (jsonResponse["errorId"].ToString() != "0")
            {
                throw new Exception("Kesalahan mendapatkan hasil tugas: " + jsonResponse["errorDescription"]);
            }

            // Jika tugas siap, kembalikan token CAPTCHA
            if (jsonResponse["status"].ToString() == "ready")
            {
                return jsonResponse["solution"]["gRecaptchaResponse"].ToString();
            }

            // Tunggu 5 detik sebelum memeriksa lagi
            Console.WriteLine("Tugas masih diproses, menunggu 5 detik...");
            await Task.Delay(5000);
        }
    }
}

Penjelasan:

  1. Metode CreateTask:

    • Klien dan Permintaan RestSharp: Menginisialisasi RestClient dan membuat RestRequest untuk titik akhir createTask dengan metode POST.
    • Payload Permintaan: Mengatur parameter yang diperlukan termasuk clientKey, websiteURL, websiteKey, dan menentukan jenis tugas sebagai ReCaptchaV2TaskProxyLess.
    • Eksekusi: Mengirim permintaan dan mengurai respons untuk mengambil taskId.
  2. Metode GetTaskResult:

    • Klien dan Permintaan RestSharp: Menginisialisasi RestClient dan membuat RestRequest untuk titik akhir getTaskResult dengan metode POST.
    • Polling: Terus menerus polling status tugas setiap 5 detik sampai selesai (status: ready).
    • Pengambilan Hasil: Setelah tugas siap, ia mengekstrak gRecaptchaResponse, yang dapat digunakan untuk melewati CAPTCHA.

Contoh: Memecahkan reCAPTCHA v3 dengan Capsolver

Pada bagian ini, kita akan menunjukkan cara memecahkan tantangan reCAPTCHA v3 menggunakan API Capsolver dan RestSharp.

csharp Copy
using System;
using System.Threading.Tasks;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
using RestSharp;

class Program
{
    private static readonly string apiUrl = "https://api.capsolver.com";
    private static readonly string clientKey = "YOUR_API_KEY"; // Ganti dengan Capsolver API Key Anda

    static async Task Main(string[] args)
    {
        try
        {
            // Langkah 1: Buat tugas untuk memecahkan reCAPTCHA v3
            string taskId = await CreateTask();
            Console.WriteLine("ID Tugas: " + taskId);

            // Langkah 2: Ambil hasil dari tugas
            string taskResult = await GetTaskResult(taskId);
            Console.WriteLine("Hasil Tugas (Token CAPTCHA): " + taskResult);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Kesalahan: " + ex.Message);
        }
    }

    // Metode untuk membuat tugas pemecahan CAPTCHA baru
    private static async Task<string> CreateTask()
    {
        // Inisialisasi klien RestSharp
        var client = new RestClient(apiUrl);

        // Payload permintaan
        var requestBody = new
        {
            clientKey = clientKey,
            task = new
            {
                type = "ReCaptchaV3TaskProxyLess", // Jenis tugas untuk reCAPTCHA v3 tanpa proxy
                websiteURL = "https://www.example.com", // URL situs web untuk memecahkan CAPTCHA
                websiteKey = "SITE_KEY_HERE", // Kunci situs reCAPTCHA
                minScore = 0.3, // Skor minimum yang diinginkan
                pageAction = "your_action" // Nama tindakan yang didefinisikan di situs
            }
        };

        // Buat permintaan POST
        var request = new RestRequest("createTask", Method.POST);
        request.AddJsonBody(requestBody);

        // Jalankan permintaan
        var response = await client.ExecuteAsync(request);

        if (!response.IsSuccessful)
        {
            throw new Exception("Gagal membuat tugas: " + response.Content);
        }

        JObject jsonResponse = JObject.Parse(response.Content);
        if (jsonResponse["errorId"].ToString() != "0")
        {
            throw new Exception("Kesalahan membuat tugas: " + jsonResponse["errorDescription"]);
        }

        // Kembalikan ID tugas yang akan digunakan pada langkah selanjutnya
        return jsonResponse["taskId"].ToString();
    }

    // Metode untuk mengambil hasil dari tugas pemecahan CAPTCHA
    private static async Task<string> GetTaskResult(string taskId)
    {
        // Inisialisasi klien RestSharp
        var client = new RestClient(apiUrl);

        // Payload permintaan
        var requestBody = new
        {
            clientKey = clientKey,
            taskId = taskId
        };

        // Buat permintaan POST
        var request = new RestRequest("getTaskResult", Method.POST);
        request.AddJsonBody(requestBody);

        // Polling untuk hasil dari tugas setiap 5 detik
        while (true)
        {
            var response = await client.ExecuteAsync(request);

            if (!response.IsSuccessful)
            {
                throw new Exception("Gagal mendapatkan hasil tugas: " + response.Content);
            }

            JObject jsonResponse = JObject.Parse(response.Content);
            if (jsonResponse["errorId"].ToString() != "0")
            {
                throw new Exception("Kesalahan mendapatkan hasil tugas: " + jsonResponse["errorDescription"]);
            }

            // Jika tugas siap, kembalikan token CAPTCHA
            if (jsonResponse["status"].ToString() == "ready")
            {
                return jsonResponse["solution"]["gRecaptchaResponse"].ToString();
            }

            // Tunggu 5 detik sebelum memeriksa lagi
            Console.WriteLine("Tugas masih diproses, menunggu 5 detik...");
            await Task.Delay(5000);
        }
    }
}

Penjelasan:

  1. Metode CreateTask:

    • Klien dan Permintaan RestSharp: Mengatur RestClient dan RestRequest untuk titik akhir createTask.
    • Payload Permintaan: Termasuk parameter tambahan seperti minScore dan pageAction khusus untuk reCAPTCHA v3.
    • Eksekusi: Mengirim permintaan dan mengambil taskId.
  2. Metode GetTaskResult:

    • Mirip dengan contoh v2, ia polling API Capsolver untuk hasil tugas dan mengambil token CAPTCHA setelah tugas siap.

Praktik Terbaik Web Scraping di C#

Saat menggunakan alat web scraping di C#, selalu ikuti praktik terbaik ini:

  • Hormati robots.txt: Pastikan situs web mengizinkan web scraping dengan memeriksa file robots.txt.
  • Pembatasan Laju: Hindari membuat terlalu banyak permintaan dalam jangka waktu singkat untuk mencegah diblokir oleh situs web.
  • Rotasi Proxy: Gunakan proxy untuk mendistribusikan permintaan di berbagai IP agar tidak ditandai sebagai bot.
  • Header Palsu: Simulasikan permintaan seperti browser dengan menambahkan header khusus, seperti User-Agent, ke permintaan HTTP Anda.

Kesimpulan

Dengan menggunakan RestSharp untuk web scraping dan Capsolver untuk memecahkan CAPTCHA, Anda dapat secara efektif mengotomatiskan interaksi dengan situs web yang menggunakan tantangan CAPTCHA. Selalu pastikan bahwa aktivitas web scraping Anda mematuhi ketentuan layanan situs web target dan persyaratan hukum.

Selamat mengikis!


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

Perbaiki Kesalahan Cloudflare 1005: Panduan Pengambilan Data Web & Solusi
Perbaiki Kesalahan Cloudflare 1005: Panduan Pengambilan Data Web & Solusi

Pelajari cara memperbaiki Cloudflare Error 1005 diakses ditolak selama web scraping. Temukan solusi seperti proksi rumah tangga, pemindaian sidik jari peramban, dan CapSolver untuk CAPTCHA. Optimalkan ekstraksi data.

Cloudflare
Logo of CapSolver

Sora Fujimoto

27-Mar-2026

Buka Browser Menggunakan CapSolver
Cara Menyelesaikan CAPTCHA di OpenBrowser Menggunakan CapSolver (Panduan Otomatisasi Agen AI)

Selesaikan CAPTCHA di OpenBrowser dengan CapSolver. Otomatisasi reCAPTCHA, Turnstile, dan lainnya untuk agen AI dengan mudah.

AI
Logo of CapSolver

Aloísio Vítor

26-Mar-2026

HyperBrowser dengan CapSolver
Cara Menyelesaikan CAPTCHA Apa pun di HyperBrowser Menggunakan CapSolver (Panduan Pemasangan Lengkap)

Selesaikan CAPTCHA apa pun di HyperBrowser dengan CapSolver. Otomatiskan reCAPTCHA, Turnstile, AWS WAF, dan lainnya dengan lebih mudah.

AI
Logo of CapSolver

Emma Foster

26-Mar-2026

Cara Menyelesaikan reCAPTCHA v2 Python dan API
Cara Menyelesaikan reCAPTCHA v2 Python dan API

Pelajari cara menyelesaikan reCAPTCHA v2 dengan Python dan API. Panduan lengkap ini mencakup metode Proxy dan Proxyless dengan kode yang siap produksi untuk otomatisasi.

reCAPTCHA
Logo of CapSolver

Aloísio Vítor

25-Mar-2026

Menyelesaikan Captcha untuk Pemantauan Harga Agen AI: Panduan Langkah demi Langkah
Menyelesaikan Captcha untuk Agen AI Pemantauan Harga: Panduan Langkah demi Langkah

Pelajari cara menyelesaikan CAPTCHA secara efektif untuk agen AI pemantauan harga dengan CapSolver. Panduan langkah demi langkah ini menjamin pengumpulan data yang tidak terputus dan wawasan pasar yang ditingkatkan.

AI
Logo of CapSolver

Lucas Mitchell

25-Mar-2026

Cara Mengatasi CAPTCHA AWS WAF Amazon dalam Otomatisasi Browser
Cara Menyelesaikan CAPTCHA Amazon AWS WAF dalam Otomatisasi Browser

Menguasai penyelesaian tantangan CAPTCHA AWS WAF Amazon dalam otomatisasi browser dengan strategi ahli. Pelajari cara mengintegrasikan CapSolver untuk alur kerja otomatisasi yang mulus dan efisien. Panduan ini mencakup solusi berbasis token dan berbasis klasifikasi.

AWS WAF
Logo of CapSolver

Nikolai Smirnov

24-Mar-2026