AdguardTeam / AdguardTeam/gomitmproxy

Redirect bug - failed to round trip: net/http: HTTP/1.x transport connection broken

Abierto
#23 2 comentarios 0 reacciones 0 asignados Ver en GitHub
Lenguaje dominante
Go
Estrellas
344
Forks
71
Métricas de merge de PR
Sin PR fusionados en 30 d

Descripción

Hello,

Thank you for open sourcing this excellent library!

I am starting to play with it and have noticed an issue with the [sample code](https://github.com/AdguardTeam/gomitmproxy/blob/master/examples/mitm/main.go) that suggests an issue in the library itself.

I have built the example and have it working perfectly for most sites (with a new CA I have generated and added to my trust store for TLS MitM), I have also removed the proxy authentication in the example.

I am testing it on Linux via `chromium-browser --proxy-server="https://127.0.0.1:3333"` so there's no iptables manipulation going on to add complexity.

The problem is that the proxy breaks on the login for ChatGPT `https://chat.openai.com/auth/login`

I am unsure if AdGuard itself is impacted, as I am not currently running it.

The log output from my proxy binary is as follows:

```
2024/03/04 11:51:07 7271#321 [debug] id=100022-1-1-2: handle request POST https://chat.openai.com/api/auth/signin/login-web?prompt=login
2024/03/04 11:51:07 7271#321 [error] id=100022-1-1-2: failed to round trip: net/http: HTTP/1.x transport connection broken: http: ContentLength=100 with Body length 0
2024/03/04 11:51:07 7271#321 [debug] id=100022-1-1-2: received response 502 Bad Gateway
2024/03/04 11:51:07 7271#321 [info] onResponse: https://chat.openai.com/api/auth/signin/login-web?prompt=login
2024/03/04 11:51:07 7271#321 [debug] id=100022-1-1-2: received close request
2024/03/04 11:51:07 7271#321 [debug] id=100022-1-1: closing connection due to: closing connection
2024/03/04 11:51:07 7271#321 [debug] id=100022: closing connection due to: closing connection
```

Based specifically on `failed to round trip: net/http: HTTP/1.x transport connection broken: http: ContentLength=100 with Body length 0`, what I believe is happening here is as follows:

0. The ChatGPT front end loads successfully via the proxy
1. You click login and a request is made to the login service - the front end is a React application so it is not making a full reload of the page (NOTE: Possibly other React applications may be impacted - I will update the issue if I find more)
2. Because a new request has not been made, the `body` is now empty because the http.request body is a buffer and once it is read in the first call, the buffer becomes empty and there is no body content to send in redirect call.

@ameshkov if you could please advise I would greatly appreciate it, thank you!

Guía de contribución

No hay ninguna guía de contribución indexada para este repositorio

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.