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: Dispara antes de uma solicitação ser enviada ao servidor.
  • FiddlerApplication.BeforeResponse: Dispara antes de uma resposta ser enviada ao cliente.

Iniciando o FiddlerCore

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

Parando o FiddlerCore

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

Configuração adicional

FiddlerCore pode ser configurado ainda mais 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 de 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

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 FiddlerCore IronPDFExample
{
    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 FiddlerCore IronPDFExample
{
    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
    Class Program
        ' StringBuilder to store traffic details
        Private Shared sb As New StringBuilder()

        Shared Sub Main(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(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, que é formatado em Como Criar um PDF Usando HTML com IronPDF, é convertido em um PDF usando a função GeneratePdfReport e salvo como "TrafficReport.pdf." Isso ilustra como os robustos recursos de criação de PDF do IronPDF e as capacidades de monitoramento de tráfego online do FiddlerCore funcionam juntos de forma perfeita para fornecer uma análise e relatórios detalhados de tráfego 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.

Você pode fazer OCR, interagir com códigos de barras, gerar PDFs, vincular ao Excel e mais com o IronPDF e explorar bibliotecas adicionais da Iron Software para capacidades aprimoradas, juntamente com um desenvolvimento mais eficiente, por um preço inicial de $999. 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 Iron

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