猿问

如何使用 Go 代理 https 请求,请求工作正常?

我将尽力解释一切,服务器的东西!一切都在围棋中,主要问题是服务HTTP。

问题

我正在努力转发收到的请求,以便通过 发送到另一个代理服务器。我正在使用python请求提交GET请求,并通过第一个服务器和第二个服务器将其代理到实际目标。我已经能够提交和接收请求,但我无法提交 https 请求。(http.server).ListenAndServe()(http.ReverseProxy).ServeHTTP(http.ResponseWriter, *http.Request)

错误

我经常从python请求库接收,可能是当我使用 https://httpbin.org 或任何其他https网站时来自ServhtTP()的结果。使用 http 会导致在 html 中返回给我。502 bad gatewayhttp: proxy error: unsupported protocol scheme ""

响应差异

*的差异。响应是针对

&{GET http://httpbin.org HTTP/1.0 1 0 map[] <nil> <nil> 0 [] true http://httpbin.org map[] map[] <nil> map[] [my ip address] http://httpbin.org <nil> <nil> <nil> 0xc000050fc0}

&{CONNECT //httpbin.org:443 HTTP/1.0 1 0 map[] <nil> <nil> 0 [] true httpbin.org:443 map[] map[] <nil> map[] [my ip address] httpbin.org:443 <nil> <nil> <nil> 0xc0000503c0}

以下是指向 *http 文档的链接。请求

我以前尝试过的

我尝试过修改反向代理控制器属性,并让函数修改 *http。请求。我已经做了从删除“:443”到添加“https://”甚至“http://”的所有事情。这样做会导致错误的请求错误。我还尝试将 CONNECT 请求更改为 GET 或 POST,这两个请求都有奇怪的结果,包括无效的方法或错误的请求。

有什么帮助吗?


翻过高山走不出你
浏览 191回答 2
2回答

达令说

我认为问题是你不能真正代理https请求。我假设您正在尝试根据你的描述将服务器用作另一个代理的代理,所以看起来你将不得不在中间使用Man来欺骗代理请求以将其发送到实际的代理服务器。请注意,这可能是一个坏主意,请确保如果是这种情况,所有请求都是安全的,因为将要发生的事情是中间服务器可以读取未加密的https信息。不幸的是,我想不出任何快速的解决方案。相反,您必须深入研究此库并修改特定的MITM请求,并设置https.go分发每个请求的其他代理服务器的池。祝你好运!

慕盖茨4494581

&nbsp;...&nbsp;CONNECT&nbsp;//httpbin.org:443&nbsp;HTTP/1.0&nbsp;...客户端正在执行错误的请求。它需要是,即只是目标服务器的域和端口。鉴于标准的Python工具正确处理代理的HTTPS,问题可能是由一些(未知的)自制代码发出错误的代理请求引起的。CONNECT httpbin.org:443 HTTP/1.0
随时随地看视频慕课网APP

相关分类

Go
我要回答