SOCKS5 代理服务器
SOCKS5 协议简介
- 明文传输(没法用来刷 Jiafei)
- 公司里有内网,在内网严格的防火墙策略里给授权的用户开一个端口访问内网资源
SOCKS5 协议原理
TCP echo server
package main
import (
"bufio"
"log"
"net"
)
func main() {
server, err := net.Listen("tcp", "127.0.0.1:1080")
if err != nil {
panic(err)
}
for {
client, err := server.Accept()
if err != nil {
log.Printf("Accept failed %v", err)
continue
}
go process(client)
}
}
func process(conn net.Conn) {
defer conn.Close()
reader := bufio.NewReader(conn)
for {
b, err := reader.ReadByte()
if err != nil {
break
}
_, err = conn.Write([]byte{b})
if err != nil {
break
}
}
}
这段代码的运行结果就是你发送什么服务器就返回什么。简单测试一下:
在第一个窗口里运行程序:
在第二个窗口里访问这个端口,然后随便打一点什么,回车以后服务器会返回一样的东西: