# Rust

> Configura el proxy y la gestión de certificados para las solicitudes de Rust con reqwest, para que su tráfico HTTP/HTTPS aparezca en Proxyman.

## 1. Problema {#1-problem}

Proxyman no puede capturar automáticamente el tráfico HTTP/HTTPS de `reqwest` en Rust porque:

* `reqwest` no respeta el HTTP Proxy del sistema -> ningún tráfico pasa por Proxyman
* `reqwest` no confía en el Proxyman Certificate autofirmado -> aparece un error de SSL

## 2. Solución {#2-solution}

* Configura manualmente el proxy para usar Proxyman en `http://localhost:9090`
* Desactiva la verificación de SSL

```rust
use anyhow::Result;
use reqwest::Url;

#[tokio::main]
async fn main() -> Result<()> {
    let proxy_url = Url::parse("http://localhost:9090")?;
    let client = reqwest::Client::builder()
        .danger_accept_invalid_certs(true) // trust self-signed certificate
        .proxy(reqwest::Proxy::https(proxy_url)?) // Proxy to Proxyman
        .build()?;
    let response = client.get("https://httpbin.org/get").send().await?;

    if response.status().is_success() {
        let body = response.text().await?;
        println!("Response Text: {}", body);
    } else {
        println!("Request failed with status: {}", response.status());
    }

    Ok(())
}
```

> **Nota:** Para las apps que ignoran el proxy del sistema, también puedes probar [Network Extension](https://proxyman.com/docs/es/advanced-features/network-extension) (Beta, macOS 26 o posterior). Captura el tráfico sin configurar un proxy en cada app. Para HTTPS, tu cliente de Rust sigue teniendo que confiar en el certificado de Proxyman, o desactivar la verificación como se muestra arriba.
