Go 向代理服务器发送TCP数据包
我熟悉HTTP_PROXY,并定义了代理HTTP请求的DefaultTransport。但我找不到任何关于如何对TCP执行相同操作的信息。这可能吗?或者我必须依靠代理本身来转发数据包吗?这是可能的,但不需要HTTP代理。你想要一个袜子代理。查看提供SOCKS5拨号器的软件包Go 向代理服务器发送TCP数据包,go,tcp,Go,Tcp,我熟悉HTTP_PROXY,并定义了代理HTTP请求的DefaultTransport。但我找不到任何关于如何对TCP执行相同操作的信息。这可能吗?或者我必须依靠代理本身来转发数据包吗?这是可能的,但不需要HTTP代理。你想要一个袜子代理。查看提供SOCKS5拨号器的软件包 package main import ( "fmt" "os" "golang.org/x/net/proxy" ) var ( proxy_addr = "my.socks.pro
package main
import (
"fmt"
"os"
"golang.org/x/net/proxy"
)
var (
proxy_addr = "my.socks.proxy.local:8088"
remote_addr = "chat.freenode.net:6697"
)
func main() {
dialer, err := proxy.SOCKS5("tcp", proxy_addr, nil, proxy.Direct)
if err != nil {
fmt.Fprintln(os.Stderr, "proxy connection error:", err)
os.Exit(1)
}
conn, err := dialer.Dial("tcp", remote_addr)
if err != nil {
fmt.Fprintln(os.Stderr, "remote connection error:", err)
os.Exit(1)
}
defer conn.Close()
// communicate with remote addr here
}
这取决于你想做什么。TCP代理是可能的,但是,您不能基于主机重定向流量,因为TCP传输协议不像HTTP那样包含主机头。是的,在阅读了更多内容后,我得出了相同的结论。感谢您的回答。不幸的是,此脚本挂起拨号到远程address@PrisacariDmitrii如果不将proxy_addr的值更改为工作SOCKS5 proxy,那么我认为它将挂起yes。在编写本文时,使用proxy_addr和remote_addr的有效值,这段代码运行良好。