CAPSOLVER
Blog
Como usar RestSharp (Biblioteca C#) para Web Scraping

Como Usar RestSharp (Biblioteca C#) para Web Scraping

Logo of CapSolver

Aloísio Vítor

Image Processing Expert

17-Sep-2024

Web scraping é uma técnica essencial para extrair dados de sites, mas as aplicações web modernas geralmente implementam medidas de segurança, como desafios CAPTCHA, para evitar acesso automatizado. Os desafios CAPTCHA, como o Google reCAPTCHA, são projetados para diferenciar usuários humanos de bots, tornando difícil para scripts automatizados raspar conteúdo de forma eficaz.

Para superar esses obstáculos, os desenvolvedores podem utilizar ferramentas e serviços que simplificam as solicitações HTTP e manipulam a resolução de CAPTCHA. RestSharp é uma biblioteca C# poderosa e fácil de usar que simplifica o processo de fazer solicitações HTTP para APIs RESTful. Quando combinada com um analisador HTML como o HtmlAgilityPack, ela se torna uma solução robusta para tarefas de web scraping.

RestSharp WebScraping

No entanto, encontrar desafios CAPTCHA durante o scraping pode interromper seu processo de automação. É aí que o Capsolver entra em ação. O Capsolver oferece soluções baseadas em API para resolver CAPTCHAs programaticamente, permitindo que seus scripts de scraping ignorem esses desafios e acessem o conteúdo desejado perfeitamente.

Neste guia abrangente, vamos guiá-lo através de:

Web Scraping com RestSharp

Em C#, RestSharp é uma biblioteca popular para lidar com solicitações HTTP e interagir com APIs RESTful. Ele simplifica muitos aspectos da comunicação HTTP em comparação com o HttpClient integrado. Você pode combinar o RestSharp com um analisador HTML como HtmlAgilityPack para extrair dados de páginas da web.

Pré-requisitos

  • Instale a biblioteca RestSharp usando o Gerenciador de Pacotes NuGet:

    bash Copy
    Install-Package RestSharp
  • Instale a biblioteca HtmlAgilityPack para ajudar a analisar o conteúdo HTML:

    bash Copy
    Install-Package HtmlAgilityPack
  • Instale Newtonsoft.Json para lidar com respostas JSON:

    bash Copy
    Install-Package Newtonsoft.Json

Exemplo: Scraping "Quotes to Scrape"

Vamos raspar citações do site Quotes to Scrape usando RestSharp e 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/";

        // Inicialize o cliente RestSharp
        var client = new RestClient(url);

        // Crie uma solicitação GET
        var request = new RestRequest(Method.GET);

        // Execute a solicitação
        var response = await client.ExecuteAsync(request);

        if (response.IsSuccessful)
        {
            // Analise o conteúdo da página usando HtmlAgilityPack
            HtmlDocument htmlDoc = new HtmlDocument();
            htmlDoc.LoadHtml(response.Content);

            // Encontre todas as citações na página
            var quotes = htmlDoc.DocumentNode.SelectNodes("//span[@class='text']");

            // Imprima cada citação
            foreach (var quote in quotes)
            {
                Console.WriteLine(quote.InnerText);
            }
        }
        else
        {
            Console.WriteLine($"Falha ao recuperar a página. Código de Status: {response.StatusCode}");
        }
    }
}

Explicação:

  • Cliente e Solicitação RestSharp: Inicializa um RestClient com a URL de destino e cria um RestRequest para o método GET.
  • Executando a Solicitação: Envia a solicitação assincronamente e verifica se a resposta é bem-sucedida.
  • HtmlAgilityPack: Analisa o conteúdo HTML da resposta e extrai as citações selecionando elementos com a classe text.

Resolvendo reCAPTCHA v2 e reCAPTCHA v3 com Capsolver usando RestSharp

Quando um site usa reCAPTCHA v2 ou v3 para segurança, você pode resolver o CAPTCHA usando a API Capsolver. Abaixo está como você pode integrar o Capsolver com RestSharp para resolver desafios reCAPTCHA.

Pré-requisitos

  • Newtonsoft.Json é usado para lidar com a análise JSON de respostas do Capsolver:

    bash Copy
    Install-Package Newtonsoft.Json

Exemplo: Resolvendo reCAPTCHA v2 com Capsolver

Nesta seção, demonstraremos como resolver desafios reCAPTCHA v2 usando a API Capsolver e 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"; // Substitua pela sua Chave da API Capsolver

    static async Task Main(string[] args)
    {
        try
        {
            // Passo 1: Crie uma tarefa para resolver reCAPTCHA v2
            string taskId = await CreateTask();
            Console.WriteLine("ID da Tarefa: " + taskId);

            // Passo 2: Recupere o resultado da tarefa
            string taskResult = await GetTaskResult(taskId);
            Console.WriteLine("Resultado da Tarefa (Token CAPTCHA): " + taskResult);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Erro: " + ex.Message);
        }
    }

    // Método para criar uma nova tarefa de resolução CAPTCHA
    private static async Task<string> CreateTask()
    {
        // Inicialize o cliente RestSharp
        var client = new RestClient(apiUrl);

        // Carga útil da solicitação
        var requestBody = new
        {
            clientKey = clientKey,
            task = new
            {
                type = "ReCaptchaV2TaskProxyLess", // Tipo de tarefa para reCAPTCHA v2 sem proxy
                websiteURL = "https://www.example.com", // A URL do site para resolver CAPTCHA
                websiteKey = "SITE_KEY_HERE" // Chave do site reCAPTCHA
            }
        };

        // Crie uma solicitação POST
        var request = new RestRequest("createTask", Method.POST);
        request.AddJsonBody(requestBody);

        // Execute a solicitação
        var response = await client.ExecuteAsync(request);

        if (!response.IsSuccessful)
        {
            throw new Exception("Falha ao criar a tarefa: " + response.Content);
        }

        JObject jsonResponse = JObject.Parse(response.Content);
        if (jsonResponse["errorId"].ToString() != "0")
        {
            throw new Exception("Erro ao criar a tarefa: " + jsonResponse["errorDescription"]);
        }

        // Retorne o ID da tarefa para ser usado na próxima etapa
        return jsonResponse["taskId"].ToString();
    }

    // Método para recuperar o resultado de uma tarefa de resolução CAPTCHA
    private static async Task<string> GetTaskResult(string taskId)
    {
        // Inicialize o cliente RestSharp
        var client = new RestClient(apiUrl);

        // Carga útil da solicitação
        var requestBody = new
        {
            clientKey = clientKey,
            taskId = taskId
        };

        // Crie uma solicitação POST
        var request = new RestRequest("getTaskResult", Method.POST);
        request.AddJsonBody(requestBody);

        // Sondar o resultado da tarefa a cada 5 segundos
        while (true)
        {
            var response = await client.ExecuteAsync(request);

            if (!response.IsSuccessful)
            {
                throw new Exception("Falha ao obter o resultado da tarefa: " + response.Content);
            }

            JObject jsonResponse = JObject.Parse(response.Content);
            if (jsonResponse["errorId"].ToString() != "0")
            {
                throw new Exception("Erro ao obter o resultado da tarefa: " + jsonResponse["errorDescription"]);
            }

            // Se a tarefa estiver pronta, retorne o token CAPTCHA
            if (jsonResponse["status"].ToString() == "ready")
            {
                return jsonResponse["solution"]["gRecaptchaResponse"].ToString();
            }

            // Espere 5 segundos antes de verificar novamente
            Console.WriteLine("A tarefa ainda está sendo processada, esperando 5 segundos...");
            await Task.Delay(5000);
        }
    }
}

Explicação:

  1. Método CreateTask:

    • Cliente e Solicitação RestSharp: Inicializa um RestClient e cria um RestRequest para o endpoint createTask com o método POST.
    • Carga Útil da Solicitação: Define os parâmetros necessários, incluindo clientKey, websiteURL, websiteKey e especifica o tipo de tarefa como ReCaptchaV2TaskProxyLess.
    • Execução: Envia a solicitação e analisa a resposta para recuperar o taskId.
  2. Método GetTaskResult:

    • Cliente e Solicitação RestSharp: Inicializa um RestClient e cria um RestRequest para o endpoint getTaskResult com o método POST.
    • Sondagem: Sondar continuamente o status da tarefa a cada 5 segundos até que ela seja concluída (status: ready).
    • Recuperação do Resultado: Uma vez que a tarefa esteja pronta, ela extrai o gRecaptchaResponse, que pode ser usado para contornar o CAPTCHA.

Exemplo: Resolvendo reCAPTCHA v3 com Capsolver

Nesta seção, demonstraremos como resolver desafios reCAPTCHA v3 usando a API Capsolver e 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"; // Substitua pela sua Chave da API Capsolver

    static async Task Main(string[] args)
    {
        try
        {
            // Passo 1: Crie uma tarefa para resolver reCAPTCHA v3
            string taskId = await CreateTask();
            Console.WriteLine("ID da Tarefa: " + taskId);

            // Passo 2: Recupere o resultado da tarefa
            string taskResult = await GetTaskResult(taskId);
            Console.WriteLine("Resultado da Tarefa (Token CAPTCHA): " + taskResult);
        }
        catch (Exception ex)
        {
            Console.WriteLine("Erro: " + ex.Message);
        }
    }

    // Método para criar uma nova tarefa de resolução CAPTCHA
    private static async Task<string> CreateTask()
    {
        // Inicialize o cliente RestSharp
        var client = new RestClient(apiUrl);

        // Carga útil da solicitação
        var requestBody = new
        {
            clientKey = clientKey,
            task = new
            {
                type = "ReCaptchaV3TaskProxyLess", // Tipo de tarefa para reCAPTCHA v3 sem proxy
                websiteURL = "https://www.example.com", // A URL do site para resolver CAPTCHA
                websiteKey = "SITE_KEY_HERE", // Chave do site reCAPTCHA
                minScore = 0.3, // Pontuação mínima desejada
                pageAction = "your_action" // Nome da ação definido no site
            }
        };

        // Crie uma solicitação POST
        var request = new RestRequest("createTask", Method.POST);
        request.AddJsonBody(requestBody);

        // Execute a solicitação
        var response = await client.ExecuteAsync(request);

        if (!response.IsSuccessful)
        {
            throw new Exception("Falha ao criar a tarefa: " + response.Content);
        }

        JObject jsonResponse = JObject.Parse(response.Content);
        if (jsonResponse["errorId"].ToString() != "0")
        {
            throw new Exception("Erro ao criar a tarefa: " + jsonResponse["errorDescription"]);
        }

        // Retorne o ID da tarefa para ser usado na próxima etapa
        return jsonResponse["taskId"].ToString();
    }

    // Método para recuperar o resultado de uma tarefa de resolução CAPTCHA
    private static async Task<string> GetTaskResult(string taskId)
    {
        // Inicialize o cliente RestSharp
        var client = new RestClient(apiUrl);

        // Carga útil da solicitação
        var requestBody = new
        {
            clientKey = clientKey,
            taskId = taskId
        };

        // Crie uma solicitação POST
        var request = new RestRequest("getTaskResult", Method.POST);
        request.AddJsonBody(requestBody);

        // Sondar o resultado da tarefa a cada 5 segundos
        while (true)
        {
            var response = await client.ExecuteAsync(request);

            if (!response.IsSuccessful)
            {
                throw new Exception("Falha ao obter o resultado da tarefa: " + response.Content);
            }

            JObject jsonResponse = JObject.Parse(response.Content);
            if (jsonResponse["errorId"].ToString() != "0")
            {
                throw new Exception("Erro ao obter o resultado da tarefa: " + jsonResponse["errorDescription"]);
            }

            // Se a tarefa estiver pronta, retorne o token CAPTCHA
            if (jsonResponse["status"].ToString() == "ready")
            {
                return jsonResponse["solution"]["gRecaptchaResponse"].ToString();
            }

            // Espere 5 segundos antes de verificar novamente
            Console.WriteLine("A tarefa ainda está sendo processada, esperando 5 segundos...");
            await Task.Delay(5000);
        }
    }
}

Explicação:

  1. Método CreateTask:

    • Cliente e Solicitação RestSharp: Define um RestClient e RestRequest para o endpoint createTask.
    • Carga Útil da Solicitação: Inclui parâmetros adicionais como minScore e pageAction específicos para reCAPTCHA v3.
    • Execução: Envia a solicitação e recupera o taskId.
  2. Método GetTaskResult:

    • Semelhante ao exemplo v2, ele sondar a API Capsolver para o resultado da tarefa e recupera o token CAPTCHA quando a tarefa estiver pronta.

Boas Práticas de Web Scraping em C#

Ao usar ferramentas de web scraping em C#, siga sempre essas boas práticas:

  • Respeite robots.txt: Certifique-se de que o site permite web scraping verificando o arquivo robots.txt.
  • Limitação de Taxa: Evite fazer muitas solicitações em um curto período de tempo para evitar ser bloqueado pelo site.
  • Rotação de Proxy: Use proxies para distribuir solicitações entre vários IPs para evitar ser marcado como um bot.
  • Spoof Headers: Simule solicitações semelhantes a navegadores adicionando cabeçalhos personalizados, como User-Agent, às suas solicitações HTTP.

Conclusão

Usando RestSharp para web scraping e Capsolver para resolução de CAPTCHA, você pode automatizar de forma eficaz as interações com sites que empregam desafios CAPTCHA. Certifique-se sempre de que suas atividades de web scraping estejam em conformidade com os termos de serviço e requisitos legais do site de destino.

Feliz scraping!


Declaração de Conformidade: As informações fornecidas neste blog são apenas para fins informativos. A CapSolver está comprometida em cumprir todas as leis e regulamentos aplicáveis. O uso da rede CapSolver para atividades ilegais, fraudulentas ou abusivas é estritamente proibido e será investigado. Nossas soluções de resolução de captcha melhoram a experiência do usuário enquanto garantem 100% de conformidade ao ajudar a resolver dificuldades de captcha durante a coleta de dados públicos. Incentivamos o uso responsável de nossos serviços. Para mais informações, visite nossos Termos de Serviço e Política de Privacidade.

Mais

Ferramentas de Raspagem de Dados Instantâneas: Formas Rápidas de Extrair Dados da Web Sem Código
Ferramentas de Raspagem de Dados Instantâneas: Métodos Rápidos para Extrair Dados da Web Sem Código

Descubra as melhores ferramentas de raspagem de dados instantâneas para 2026. Aprenda formas rápidas de extrair dados da web sem código usando as melhores extensões e APIs para extração automatizada.

web scraping
Logo of CapSolver

Emma Foster

28-Jan-2026

Uso do Navegador vs Browserbase: Qual Ferramenta de Automação de Navegador é Melhor para Agentes de IA?
Uso do Navegador vs Browserbase: Qual Ferramenta de Automação de Navegador é Melhor para Agentes de IA?

Compare o uso do navegador vs Browserbase para automação de agentes de IA. Descubra funcionalidades, preços e como resolver CAPTCHAs com o CapSolver para fluxos de trabalho sem interrupções.

AI
Logo of CapSolver

Adélia Cruz

26-Jan-2026

Top 9 Frameworks de Agente de IA em 2026
Top 9 Frameworks de Agentes de IA em 2026

Descubra os 9 principais frameworks de agentes de IA para 2026, incluindo CrewAI, AutoGen e LangGraph. Aprenda como escolher o melhor framework para orquestração de agentes multi e desenvolvimento de agentes autônomos, e descubra ferramentas essenciais para interação web no mundo real.

AI
Logo of CapSolver

Sora Fujimoto

26-Jan-2026

Bloqueios de IP em 2026: Como Funcionam e Formas Práticas para Bypassar os Bloqueios
Bloqueios de IP em 2026: Como Funcionam e Métodos Práticos para Contornar Eles

Aprenda como burlar o banimento de IP em 2026 com nosso guia abrangente. Descubra técnicas modernas de bloqueio de IP e soluções práticas como proxies residenciais e solucionadores de CAPTCHA.

web scraping
Logo of CapSolver

Adélia Cruz

26-Jan-2026

Maxun com Integração CapSolver
Como resolver Captcha no Maxun com Integração do CapSolver

Um guia prático para integrar o CapSolver com o Maxun para raspagem de web realista. Aprenda como lidar com reCAPTCHA, Cloudflare Turnstile e sites protegidos por CAPTCHA usando fluxos de trabalho de pré-autenticação e robô.

web scraping
Logo of CapSolver

Adélia Cruz

21-Jan-2026

Melhores Ferramentas de Extração de Dados para Usar em 2026 (Comparação Completa)
Melhores Ferramentas de Extração de Dados para Usar em 2026 (Comparação Completa)

Descubra as melhores ferramentas de extração de dados para 2026. Compare as principais plataformas de raspagem de web, ETL e com inteligência artificial para automatizar sua coleta de dados e fluxos de trabalho de IA.

Logo of CapSolver

Adélia Cruz

21-Jan-2026