AdguardTeam / AdguardTeam/gomitmproxy

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

未关闭
#23 2 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
主要语言
Go
星标
344
派生
71
PR 合并指标
30 天内没有已合并 PR

描述

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!

贡献指南

这个仓库没有索引到贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。