A lightweight, asynchronous HTTP(S) proxy server for .NET.
- Intercept, inspect, modify, redirect, or block HTTP and HTTPS traffic
- Explicit, transparent, and SOCKS4/5 proxy endpoints
- Request and response body streaming (see the protocol support matrix for the plain vs. TLS hook distinction)
- HTTP/2 support, on by default, opt-out via
ProxyServer.EnableHttp2(see the protocol support matrix for exact coverage) - Upstream HTTP, HTTPS, and SOCKS proxies with automatic system proxy detection
- Proxy authentication, mutual TLS, Kerberos, and NTLM support
- Connection, certificate, and buffer pooling
Install the stable package from NuGet:
dotnet add package Titanium.Web.ProxyTo use the latest prerelease:
dotnet add package Titanium.Web.Proxy --prerelease- .NET 10
Versions prior to 4.0 also supported .NET Framework 4.6.2 and .NET 8; starting with 4.0, the package targets .NET 10 only so the codebase can take full advantage of modern APIs.
The following example starts an explicit HTTP(S) proxy on 127.0.0.1:8000 and logs each requested URL:
using System;
using System.Net;
using System.Threading.Tasks;
using Titanium.Web.Proxy;
using Titanium.Web.Proxy.EventArguments;
using Titanium.Web.Proxy.Models;
using var proxyServer = new ProxyServer();
proxyServer.BeforeRequest += OnRequest;
var endPoint = new ExplicitProxyEndPoint(IPAddress.Loopback, 8000, decryptSsl: true);
proxyServer.AddEndPoint(endPoint);
// Create and trust the root certificate used to decrypt HTTPS traffic.
proxyServer.CertificateManager.EnsureRootCertificate(
userTrustRootCertificate: true,
machineTrustRootCertificate: false);
proxyServer.Start();
Console.WriteLine("Proxy listening on 127.0.0.1:8000. Press Enter to stop.");
Console.ReadLine();
proxyServer.Stop();
static Task OnRequest(object sender, SessionEventArgs e)
{
Console.WriteLine(e.HttpClient.Request.Url);
return Task.CompletedTask;
}Configure your client to use 127.0.0.1:8000 as its HTTP and HTTPS proxy. Trusting a generated root certificate changes the current user's certificate store; only do this on a machine you control.
- Wiki — feature guides, including streaming request/response bodies and a protocol feature support matrix (what's supported for HTTP/1.x vs HTTP/2)
- Basic console proxy
- WPF proxy application
- Windows service
- API documentation
- Report reproducible bugs and feature requests through GitHub Issues.
- Ask programming questions on Stack Overflow using the
titanium-web-proxytag. - Pull requests are welcome. Please include tests for behavior changes when practical.
This project is actively maintained by:
Past contributors:
Titanium Web Proxy is available under the MIT License.