Sobre el proyecto

Rama es un framework de servicios modular para el lenguaje Rust, diseñado para construir clientes, servidores, proxies de red y combinaciones de estos. Enfatiza una arquitectura explícita y componible donde la pila de red se construye a partir de servicios, capas, transportes, protocolos y estado que tú mismo compones, haciendo visible la forma del sistema en el código. Las capacidades clave incluyen: - **Proxies**: Reverse, terminación TLS, HTTP(S), SOCKS5, SNI, MITM, transparente, distortion y proxies de red, además de soporte del protocolo HAProxy PROXY. - **Aplicaciones web y APIs**: Enrutamiento por rutas y matchers, manejadores asíncronos con extractores de peticiones tipados y estado compartido, respuestas tipadas HTML/JSON/streaming, formularios y subida de archivos, recursos estáticos y middleware para autenticación, CSRF, CORS, compresión, timeouts y tracing. - **Clientes y pilas de conectores**: Clientes HTTP(S) asíncronos para HTTP/1.1, HTTP/2, HTTP/3 con descubrimiento Alt-Svc, WebSocket, gRPC, ttRPC, clientes FastCGI, pilas de conectores personalizadas, pools de conexiones y emulación de User-Agent con perfiles de navegadores reales. - **Servidores y controles de ingreso**: Servidores HTTP/1.1, HTTP/2, HTTP/3, WebSocket, SSE, gRPC, ttRPC, transportes TCP/UDP/QUIC/Unix, terminación TLS con certificados dinámicos, mTLS, ACME, inspección de protocolos y fingerprinting (JA3, JA4, PeetPrint, JA4H, Akamai HTTP/2). - **Protocolos de aplicación y gateways**: WebSockets, SSE, Datastar, gRPC, ttRPC, FastCGI, feeds RSS/Atom. - **Enrutamiento y descubrimiento de proxies**: Rutas explícitas, proxies upstream, obtención/evaluación/generación de PAC, reglas de bypass, caché de fallos de rutas. - **Adaptación de contenido**: Clientes/servidores ICAP y capas de adaptación HTTP. - **Runtime e interoperabilidad**: Servicios asíncronos, adaptadores bloqueantes opcionales, interoperabilidad con Tower, apagado graceful. - **TLS e identidad**: Rustls, BoringSSL, terminación TLS, certificados dinámicos, mTLS, ACME, certificate pinning. - **Inspección de tráfico**: Inspección de protocolos, captura e interceptación HTTP/WebSocket/TLS, proxy MITM con interfaz web, grabación/reproducción HAR, exportación a curl. - **Procesamiento de datos**: Reescritura de HTML en streaming, selección y reescritura de JSON/JSONPath en streaming, JSON-LD. - **Observabilidad**: Tracing y OpenTelemetry, métricas HTTP y de transporte, telemetría de runtime. - **Scripting embebido**: Runtime de JavaScript para evaluación y generación de PAC. - **Redes de bajo nivel**: TCP, UDP, QUIC v1/v2, sockets Unix, DNS, middleware de transporte, pooling de conexiones. - **Integraciones de plataforma**: Apple Network Extension, Apple XPC, Linux tproxy, Windows WFP. El binario CLI `rama` permite usar partes de Rama sin escribir código Rust, incluyendo ejecutar proxies HTTP(S)/SOCKS5 con modo MITM e interfaz web, clientes HTTP/WebSocket, resolución DNS, sondeo TLS, evaluación de PAC y servicios de prueba. El framework es desarrollado por Plabayo y se usa en producción para seguridad de red, extracción de datos, gateways de API y enrutamiento. Requiere Rust 1.96 y soporta Linux, macOS y Windows como plataformas tier 1.