Ir para o conteúdo do rodapé
AJUDA DO .NET

FiddlerCore .NET (Como funciona para desenvolvedores)

Duas bibliotecas .NET vitais que melhoram significativamente o desenvolvimento web e os recursos de gerenciamento de documentos são o FiddlerCore e o IronPDF . Com o FiddlerCore, os desenvolvedores podem integrar funcionalidades de captura e inspeção de tráfego HTTP/HTTPS em seus aplicativos. Esta ferramenta de código aberto deriva do conhecido proxy Fiddler, um sistema de depuração web. Oferece controle abrangente sobre o tráfego de rede para auxiliar na depuração, teste e otimização de interações online.

Por outro lado, o IronPDF é uma biblioteca de software flexível para manipulação de PDFs, permitindo criar, modificar e organizar arquivos PDF. Isso facilita a criação de PDFs de alta qualidade a partir de arquivos HTML, ASPX e de imagem. O IronPDF simplifica a manipulação complexa de PDFs com recursos como dividir, mesclar e adicionar anotações.

Ao integrar o FiddlerCore com o IronPDF, os desenvolvedores podem criar aplicativos que geram relatórios em PDF abrangentes, além de monitorar e analisar o tráfego da web. Em conjunto, eles fornecem um sistema robusto de gerenciamento de documentos e uma solução poderosa de depuração online que melhora o fluxo de trabalho de desenvolvimento como um todo.

O que é o FiddlerCore?

FiddlerCore é um poderoso pacote .NET baseado no popular proxy de depuração web, Fiddler. Ele permite que os desenvolvedores incorporem os recursos robustos de captura e inspeção de tráfego HTTP/HTTPS do Fiddler em seus aplicativos. Assim como a interface do usuário do Fiddler, ele também permite modificar as solicitações HTTP. Esta biblioteca é um recurso vital para depurar, testar e melhorar as interações na web, pois permite o monitoramento, registro e modificação completos do tráfego da web.

O FiddlerCore oferece aos desenvolvedores controle total sobre o tráfego de rede, permitindo que eles interceptem, decodifiquem e alterem solicitações e respostas. Isso facilita a localização e a correção de problemas em aplicativos online, como problemas de desempenho e falhas de segurança. A API do FiddlerCore possibilita opções de integração profunda, permitindo processos personalizados e operações automatizadas.

De maneira geral, o FiddlerCore aprimora o processo de desenvolvimento ao oferecer uma visão interativa e completa do tráfego da web — uma ferramenta essencial para a criação de aplicativos web confiáveis ​​e eficazes.

FiddlerCore .NET (Como funciona para desenvolvedores): Figura 1

Funcionalidades do FiddlerCore

O FiddlerCore oferece um conjunto abrangente de recursos destinados a melhorar a otimização, depuração e monitoramento do tráfego online. Entre as características mais marcantes estão:

Captura abrangente de tráfego HTTP/HTTPS

Com a ajuda do FiddlerCore, o tráfego da web pode ser visualizado detalhadamente, permitindo a interceptação, o registro e a descriptografia de dados HTTP e HTTPS.

Inspeção de tráfego detalhada

Para auxiliar na identificação e resolução de problemas, os desenvolvedores podem examinar e analisar dados de requisição e resposta, incluindo cabeçalhos, cookies e payloads.

Manipulação dinâmica do tráfego

Com o FiddlerCore, você pode alterar rapidamente solicitações e respostas, simulando vários cenários e respostas de rede para testar e depurar aplicativos com eficiência.

Programação avançada e automação

Os recursos robustos de script do FiddlerCore permitem que os usuários automatizem processos e criem fluxos de trabalho e regras complexas para manipular o tráfego, aumentando a produção e a eficiência.

Testes de desempenho

Ao avaliar o tráfego da web, calcular a taxa de transferência e os tempos de carregamento de resposta e identificar gargalos de desempenho, a biblioteca ajuda a otimizar o desempenho do aplicativo.

Testes de segurança robustos

Para testar vulnerabilidades e aprimorar a segurança de aplicativos, o FiddlerCore é essencial para avaliações de segurança, pois permite a descriptografia e análise de comunicações protegidas.

Armazenamento e reprodução de sessões

A depuração pode ser realizada de forma mais eficaz, permitindo um exame completo e a reprodução de falhas através do salvamento e da reprodução de sessões de tráfego capturadas.

Filtragem e busca eficientes

Os desenvolvedores podem encontrar sessões de tráfego relevantes rapidamente com os recursos de filtragem e pesquisa do FiddlerCore, que se concentram em padrões ou tipos específicos para análise direcionada.

Suporte multiplataforma

O FiddlerCore garante uma integração perfeita em diversos ambientes de desenvolvimento, sendo compatível com vários ambientes .NET , como .NET Framework, .NET Core e .NET 5+.

Criar e configurar o FiddlerCore

Estas etapas devem ser seguidas para criar e configurar o FiddlerCore em uma aplicação .NET :

Configure seu projeto

Primeiro, certifique-se de que seu projeto .NET esteja preparado. Você pode criar um novo usando a CLI do .NET ou o Visual Studio.

dotnet new console -n FiddlerCoreExample
cd FiddlerCoreExample
dotnet new console -n FiddlerCoreExample
cd FiddlerCoreExample
SHELL

Instale o FiddlerCore

É necessário instalar o pacote NuGet FiddlerCore. Use a CLI do .NET ou o Gerenciador de Pacotes NuGet para adicioná-lo ao seu projeto.

dotnet add package FiddlerCore
dotnet add package FiddlerCore
SHELL

Configuração básica

Aqui está um exemplo de como configurar e executar o FiddlerCore em um programa de console básico.

using Fiddler;
using System;

namespace FiddlerCoreExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Attach event handler for the BeforeRequest event
            FiddlerApplication.BeforeRequest += (session) => {
                Console.WriteLine("Before Request for: " + session.fullUrl);
                session.bBufferResponse = true; // Buffer response to manipulate it if needed
            };

            // Attach event handler for the BeforeResponse event
            FiddlerApplication.BeforeResponse += (session) => {
                Console.WriteLine("Before Response for: " + session.fullUrl);
            };

            // Start FiddlerCore
            FiddlerApplication.Startup(new FiddlerCoreStartupSettingsBuilder()
                .RegisterAsSystemProxy()
                .ListenOnPort(8888)
                .Build());
            Console.WriteLine("FiddlerCore started. Press any key to stop...");
            Console.ReadKey();

            // Shutdown FiddlerCore
            FiddlerApplication.Shutdown();
            Console.WriteLine("FiddlerCore stopped.");
        }
    }
}
using Fiddler;
using System;

namespace FiddlerCoreExample
{
    class Program
    {
        static void Main(string[] args)
        {
            // Attach event handler for the BeforeRequest event
            FiddlerApplication.BeforeRequest += (session) => {
                Console.WriteLine("Before Request for: " + session.fullUrl);
                session.bBufferResponse = true; // Buffer response to manipulate it if needed
            };

            // Attach event handler for the BeforeResponse event
            FiddlerApplication.BeforeResponse += (session) => {
                Console.WriteLine("Before Response for: " + session.fullUrl);
            };

            // Start FiddlerCore
            FiddlerApplication.Startup(new FiddlerCoreStartupSettingsBuilder()
                .RegisterAsSystemProxy()
                .ListenOnPort(8888)
                .Build());
            Console.WriteLine("FiddlerCore started. Press any key to stop...");
            Console.ReadKey();

            // Shutdown FiddlerCore
            FiddlerApplication.Shutdown();
            Console.WriteLine("FiddlerCore stopped.");
        }
    }
}
Imports Fiddler
Imports System

Namespace FiddlerCoreExample
	Friend Class Program
		Shared Sub Main(ByVal args() As String)
			' Attach event handler for the BeforeRequest event
			AddHandler FiddlerApplication.BeforeRequest, Sub(session)
				Console.WriteLine("Before Request for: " & session.fullUrl)
				session.bBufferResponse = True ' Buffer response to manipulate it if needed
			End Sub

			' Attach event handler for the BeforeResponse event
			AddHandler FiddlerApplication.BeforeResponse, Sub(session)
				Console.WriteLine("Before Response for: " & session.fullUrl)
			End Sub

			' Start FiddlerCore
			FiddlerApplication.Startup((New FiddlerCoreStartupSettingsBuilder()).RegisterAsSystemProxy().ListenOnPort(8888).Build())
			Console.WriteLine("FiddlerCore started. Press any key to stop...")
			Console.ReadKey()

			' Shutdown FiddlerCore
			FiddlerApplication.Shutdown()
			Console.WriteLine("FiddlerCore stopped.")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Explicação

  • FiddlerApplication.BeforeRequest: Disparado antes do envio de uma solicitação ao servidor.
  • FiddlerApplication.BeforeResponse: Disparado antes que uma resposta seja enviada ao cliente.

Iniciando o FiddlerCore

FiddlerApplication.Startup(settings): Usa as configurações de inicialização fornecidas para iniciar o FiddlerCore na porta especificada. A porta padrão é 8888.

Parando o FiddlerCore

FiddlerApplication.Shutdown(): Interrompe o FiddlerCore e libera recursos.

Configuração adicional

O FiddlerCore pode ser ainda mais configurado para atender às suas necessidades, alterando o FiddlerCoreStartupFlags ou os comportamentos da sessão dentro dos manipuladores de eventos.

FiddlerApplication.Startup(new FiddlerCoreStartupSettingsBuilder()
    .RegisterAsSystemProxy()
    .ListenOnPort(3000)
    .DecryptSSL()
    .AllowRemoteClients()
    .Build());
FiddlerApplication.Startup(new FiddlerCoreStartupSettingsBuilder()
    .RegisterAsSystemProxy()
    .ListenOnPort(3000)
    .DecryptSSL()
    .AllowRemoteClients()
    .Build());
FiddlerApplication.Startup((New FiddlerCoreStartupSettingsBuilder()).RegisterAsSystemProxy().ListenOnPort(3000).DecryptSSL().AllowRemoteClients().Build())
$vbLabelText   $csharpLabel
  • DecryptSSL: Ativa a descriptografia do tráfego HTTPS.
  • AllowRemoteClients: Permite que clientes remotos se conectem ao FiddlerCore.

Primeiros passos com o IronPDF

Ao integrar o FiddlerCore e o IronPDF em uma aplicação .NET , você pode monitorar e controlar o tráfego da web e usar os dados coletados para criar relatórios PDF abrangentes. Aqui está um tutorial passo a passo sobre como usar o IronPDF e o FiddlerCore:

O que é o IronPDF?

Os programas em C# podem usar a biblioteca IronPDF do .NET , rica em recursos, para produzir, ler e editar documentos PDF. Com essa ferramenta, os desenvolvedores podem criar facilmente PDFs de alta qualidade e prontos para impressão a partir de conteúdo HTML, CSS e JavaScript . Adicionar cabeçalhos e rodapés, dividir e combinar PDFs, inserir marcas d'água em documentos e converter HTML para PDF são algumas das funções essenciais. O IronPDF é compatível com o .NET Framework e o .NET Core, o que o torna útil para uma ampla gama de aplicações.

Como os PDFs oferecem uma grande quantidade de conteúdo e são fáceis de usar, os desenvolvedores podem incorporá-los facilmente em seus programas. Os PDFs gerados pelo IronPDF são muito semelhantes ao conteúdo HTML original, pois ele consegue lidar facilmente com layouts e formatações complexas.

FiddlerCore .NET (Como funciona para desenvolvedores): Figura 2

Funcionalidades do IronPDF

Geração de PDF a partir de HTML

Converter HTML, CSS e JavaScript para PDF. O IronPDF suporta dois padrões modernos da web: media queries e design responsivo. Isso facilita o uso de HTML e CSS para decorar dinamicamente documentos PDF, relatórios e faturas.

Edição de PDF

É possível adicionar texto, imagens e outros materiais a PDFs já existentes. Extrair texto e imagens de arquivos PDF. Una vários PDFs em um único arquivo. Divida arquivos PDF em vários documentos distintos. Adicione cabeçalhos, rodapés, anotações e marcas d'água.

Conversão de PDF

O IronPDF pode converter diversos tipos de arquivos, como arquivos do Word, Excel e imagens, para PDF. Facilita a conversão de PDF para imagem (PNG, JPEG, etc.).

Desempenho e confiabilidade

Em contextos industriais, alto desempenho e confiabilidade são atributos de projeto desejáveis. O IronPDF lida facilmente com grandes conjuntos de documentos.

Instale o IronPDF

Instale o pacote IronPDF para obter as ferramentas necessárias para trabalhar com PDFs em projetos .NET .

dotnet add package IronPdf
dotnet add package IronPdf
SHELL

FiddlerCore com IronPDF

O código abaixo é um exemplo de como configurar e executar o FiddlerCore, capturar o tráfego da web e, em seguida, usar o IronPDF para criar um relatório em PDF.

using Fiddler;
using IronPdf;
using System;
using System.Text;

namespace FiddlerCoreIronPDFExample
{
    class Program
    {
        // StringBuilder to store traffic details
        static StringBuilder sb = new StringBuilder();

        static void Main(string[] args)
        {
            // Initialize FiddlerCore event handlers
            FiddlerApplication.OnNotification += (sender, oNEA) => {
                Console.WriteLine("Notification: " + oNEA.NotifyString);
            };
            FiddlerApplication.OnLogString += (sender, oLEA) => {
                Console.WriteLine("Log: " + oLEA.LogString);
            };
            FiddlerApplication.BeforeRequest += (session) => {
                Console.WriteLine("Before Request for: " + session.fullUrl);
                sb.AppendLine($"Request: {session.fullUrl}");
                session.bBufferResponse = true; // Buffer response
            };
            FiddlerApplication.BeforeResponse += (session) => {
                Console.WriteLine("Before Response for: " + session.fullUrl);
                sb.AppendLine($"Response: {session.GetResponseBodyAsString()}");
            };

            // Start FiddlerCore
            FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default);
            Console.WriteLine("FiddlerCore started. Press any key to stop...");
            Console.ReadKey();

            // Shutdown FiddlerCore
            FiddlerApplication.Shutdown();
            Console.WriteLine("FiddlerCore stopped.");

            // Generate PDF report
            GeneratePdfReport(sb.ToString());
        }

        // Method to generate PDF report from captured traffic
        static void GeneratePdfReport(string content)
        {
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf($"<html><body><pre>{content}</pre></body></html>");
            pdf.SaveAs("TrafficReport.pdf");
            Console.WriteLine("PDF report generated: TrafficReport.pdf");
        }
    }
}
using Fiddler;
using IronPdf;
using System;
using System.Text;

namespace FiddlerCoreIronPDFExample
{
    class Program
    {
        // StringBuilder to store traffic details
        static StringBuilder sb = new StringBuilder();

        static void Main(string[] args)
        {
            // Initialize FiddlerCore event handlers
            FiddlerApplication.OnNotification += (sender, oNEA) => {
                Console.WriteLine("Notification: " + oNEA.NotifyString);
            };
            FiddlerApplication.OnLogString += (sender, oLEA) => {
                Console.WriteLine("Log: " + oLEA.LogString);
            };
            FiddlerApplication.BeforeRequest += (session) => {
                Console.WriteLine("Before Request for: " + session.fullUrl);
                sb.AppendLine($"Request: {session.fullUrl}");
                session.bBufferResponse = true; // Buffer response
            };
            FiddlerApplication.BeforeResponse += (session) => {
                Console.WriteLine("Before Response for: " + session.fullUrl);
                sb.AppendLine($"Response: {session.GetResponseBodyAsString()}");
            };

            // Start FiddlerCore
            FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default);
            Console.WriteLine("FiddlerCore started. Press any key to stop...");
            Console.ReadKey();

            // Shutdown FiddlerCore
            FiddlerApplication.Shutdown();
            Console.WriteLine("FiddlerCore stopped.");

            // Generate PDF report
            GeneratePdfReport(sb.ToString());
        }

        // Method to generate PDF report from captured traffic
        static void GeneratePdfReport(string content)
        {
            var renderer = new HtmlToPdf();
            var pdf = renderer.RenderHtmlAsPdf($"<html><body><pre>{content}</pre></body></html>");
            pdf.SaveAs("TrafficReport.pdf");
            Console.WriteLine("PDF report generated: TrafficReport.pdf");
        }
    }
}
Imports Fiddler
Imports IronPdf
Imports System
Imports System.Text

Namespace FiddlerCoreIronPDFExample
	Friend Class Program
		' StringBuilder to store traffic details
		Private Shared sb As New StringBuilder()

		Shared Sub Main(ByVal args() As String)
			' Initialize FiddlerCore event handlers
			AddHandler FiddlerApplication.OnNotification, Sub(sender, oNEA)
				Console.WriteLine("Notification: " & oNEA.NotifyString)
			End Sub
			AddHandler FiddlerApplication.OnLogString, Sub(sender, oLEA)
				Console.WriteLine("Log: " & oLEA.LogString)
			End Sub
			AddHandler FiddlerApplication.BeforeRequest, Sub(session)
				Console.WriteLine("Before Request for: " & session.fullUrl)
				sb.AppendLine($"Request: {session.fullUrl}")
				session.bBufferResponse = True ' Buffer response
			End Sub
			AddHandler FiddlerApplication.BeforeResponse, Sub(session)
				Console.WriteLine("Before Response for: " & session.fullUrl)
				sb.AppendLine($"Response: {session.GetResponseBodyAsString()}")
			End Sub

			' Start FiddlerCore
			FiddlerApplication.Startup(8888, FiddlerCoreStartupFlags.Default)
			Console.WriteLine("FiddlerCore started. Press any key to stop...")
			Console.ReadKey()

			' Shutdown FiddlerCore
			FiddlerApplication.Shutdown()
			Console.WriteLine("FiddlerCore stopped.")

			' Generate PDF report
			GeneratePdfReport(sb.ToString())
		End Sub

		' Method to generate PDF report from captured traffic
		Private Shared Sub GeneratePdfReport(ByVal content As String)
			Dim renderer = New HtmlToPdf()
			Dim pdf = renderer.RenderHtmlAsPdf($"<html><body><pre>{content}</pre></body></html>")
			pdf.SaveAs("TrafficReport.pdf")
			Console.WriteLine("PDF report generated: TrafficReport.pdf")
		End Sub
	End Class
End Namespace
$vbLabelText   $csharpLabel

Neste exemplo, para registrar o tráfego online e gerar um relatório em PDF, incorporamos o FiddlerCore e o IronPDF em um aplicativo de console .NET . O FiddlerCore é inicializado pela aplicação, que também configura os manipuladores de eventos para requisições e respostas HTTP.

Os dados de tráfego, que incluem os URLs das solicitações e o conteúdo das respostas, são coletados usando um StringBuilder. O FiddlerCore é executado na porta 8888 e continua a gravar o tráfego online até que o usuário pressione qualquer tecla para encerrar o programa. Após o encerramento do programa, o IronPDF é utilizado para compilar os dados de tráfego em um relatório em PDF.

FiddlerCore .NET (Como funciona para desenvolvedores): Figura 3

O registro de tráfego, formatado conforme descrito em Como Criar um PDF Usando HTML com o IronPDF , é convertido em PDF utilizando a função GeneratePdfReport e salvo como "TrafficReport.pdf". Isso ilustra como os recursos robustos de criação de PDF do IronPDF e as capacidades de monitoramento de tráfego online do FiddlerCore funcionam em perfeita harmonia para fornecer análises e relatórios de tráfego abrangentes em um único aplicativo.

FiddlerCore .NET (Como funciona para desenvolvedores): Figura 4

Conclusão

A integração do FiddlerCore e do IronPDF em uma aplicação .NET resulta em uma ferramenta eficaz para coletar, examinar e gerar relatórios de tráfego web. Os desenvolvedores podem depurar e otimizar seus aplicativos online de forma eficiente, além de gerar relatórios informativos, utilizando os recursos flexíveis de produção de PDF do IronPDF em conjunto com os poderosos recursos de monitoramento e manipulação de tráfego do FiddlerCore. Essa combinação agiliza os processos de desenvolvimento e solução de problemas, melhorando a visibilidade das interações do aplicativo web e permitindo documentação e análise abrangentes.

Para o desenvolvimento de aplicações web, a combinação do FiddlerCore e do IronPDF oferece uma solução completa que aumenta significativamente a produtividade e a capacidade de obter insights, independentemente da necessidade de testes de desempenho, verificações de segurança ou monitoramento completo do tráfego.

Com o IronPDF, você pode realizar OCR, interagir com códigos de barras, gerar PDFs, criar links para o Excel e muito mais, além de explorar bibliotecas adicionais da Iron Software para obter recursos aprimorados e um desenvolvimento mais eficiente, a partir de um preço inicial de $799. Isso é possível graças à combinação dos sistemas e do conjunto de ferramentas altamente adaptáveis ​​da Iron Software com seu suporte principal.

Os desenvolvedores acharão mais fácil escolher o melhor modelo se as opções de licenciamento forem explícitas e adaptadas ao projeto. Com a ajuda dessas vantagens, os desenvolvedores podem incorporar soluções para uma variedade de problemas de forma fácil, bem-sucedida e coesa.

Perguntas frequentes

Como posso capturar tráfego HTTP/HTTPS em uma aplicação .NET?

Você pode usar o FiddlerCore para capturar tráfego HTTP/HTTPS em uma aplicação .NET. Ao integrar o FiddlerCore, você obtém a capacidade de monitorar, registrar e manipular o tráfego web, proporcionando controle abrangente para fins de depuração e teste.

Quais são os benefícios de usar o FiddlerCore no desenvolvimento web?

O FiddlerCore aprimora o desenvolvimento web ao fornecer recursos como captura de tráfego HTTP/HTTPS, inspeção detalhada e manipulação dinâmica. Isso auxilia na depuração, teste e otimização de interações web, além de melhorar os testes de segurança e a análise de desempenho.

Como posso gerar relatórios em PDF a partir de dados de tráfego da web?

Com o IronPDF, você pode converter dados de tráfego web capturados em relatórios PDF. O IronPDF permite criar documentos estruturados convertendo HTML, CSS e JavaScript em PDFs de alta qualidade, que podem ser usados para análise e documentação.

Qual é o processo para configurar o FiddlerCore em um projeto .NET?

Para configurar o FiddlerCore em um projeto .NET, você deve instalar o pacote NuGet do FiddlerCore e configurá-lo com as configurações de inicialização apropriadas. Essa configuração permitirá que você capture e manipule o tráfego de rede conforme necessário para sua aplicação.

O FiddlerCore pode ser usado para testes de segurança?

Sim, o FiddlerCore pode ser usado eficazmente para testes de segurança. Ele permite descriptografar e analisar comunicações seguras, ajudando a identificar vulnerabilidades e aprimorar a segurança de aplicativos por meio de uma inspeção detalhada do tráfego.

Quais funcionalidades o IronPDF oferece para manipulação de PDFs?

O IronPDF oferece diversas funcionalidades para manipulação de PDFs, incluindo a criação de PDFs a partir de HTML, adição de texto e imagens, mesclagem e divisão de PDFs, além da inclusão de anotações e marcas d'água. É uma ferramenta completa para o gerenciamento de documentos PDF em aplicações .NET.

Como posso integrar a geração de PDFs com a captura de tráfego de rede?

Você pode integrar a geração de PDFs com a captura de tráfego de rede usando o FiddlerCore para monitorar e registrar o tráfego da web e, em seguida, empregando o IronPDF para transformar os dados capturados em relatórios PDF detalhados. Essa integração fornece um conjunto completo de recursos de depuração e documentação.

Quais são as opções de configuração disponíveis no FiddlerCore?

O FiddlerCore oferece diversas opções de configuração, como definir a porta de escuta, habilitar a descriptografia SSL e permitir clientes remotos. Essas opções podem ser personalizadas usando o FiddlerCoreStartupSettingsBuilder para adaptar a captura e manipulação de tráfego às suas necessidades.

Como a combinação de FiddlerCore e IronPDF beneficia os desenvolvedores web?

A combinação do FiddlerCore com o IronPDF beneficia os desenvolvedores web ao simplificar o processo de depuração e aprimorar os recursos de gerenciamento de documentos. Essa integração oferece suporte ao monitoramento de tráfego, depuração e geração de relatórios, resultando em fluxos de trabalho de desenvolvimento mais eficientes e documentação completa.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais ...

Leia mais

Equipe de suporte de ferro

Estamos online 24 horas por dia, 5 dias por semana.
Bater papo
E-mail
Liga para mim