参考资料:
代码参考

package mainimport ("encoding/binary""errors""fmt""io""net"
)func main() {server, err := net.Listen("tcp", ":8080")if err != nil {fmt.Printf("Listen failed: %v\n", err)return}for {client, err := server.Accept()if err != nil {fmt.Printf("Accept failed: %v", err)continue}go process(client)}
}func process(client net.Conn) {Socks5Auth(client)dest, err := Socks5Connect(client)if err != nil {}Socks5Forward(client, dest)
}
func Socks5Auth(client net.Conn) (err error) {buf := make([]byte, 256)// 读取 VER 和 NMETHODSn, err := io.ReadFull(client, buf[:2])if n != 2 {return errors.New("reading header: " + err.Error())}ver, nMethods := int(buf[0]), int(buf[1])if ver != 5 {return errors.New("invalid version")}// 读取 METHODS 列表n, err = io.ReadFull(client, buf[:nMethods])if n != nMethods {return errors.New("reading methods: " + err.Error())}//无需认证n, err = client.Write([]byte{0x05, 0x00})if n != 2 || err != nil {return errors.New("write rsp err: " + err.Error())}return nil
}
func Socks5Connect(client net.Conn) (net.Conn, error) {buf := make([]byte, 256)n, err := io.ReadFull(client, buf[:4])if n != 4 {return nil, errors.New("read header: " + err.Error())}ver, cmd, _, atyp := buf[0], buf[1], buf[2], buf[3]if ver != 5 || cmd != 1 {return nil, errors.New("invalid ver/cmd")}addr := ""switch atyp {case 1:n, err = io.ReadFull(client, buf[:4])if n != 4 {return nil, errors.New("invalid IPv4: " + err.Error())}addr = fmt.Sprintf("%d.%d.%d.%d", buf[0], buf[1], buf[2], buf[3])case 3:n, err = io.ReadFull(client, buf[:1])if n != 1 {return nil, errors.New("invalid hostname: " + err.Error())}addrLen := int(buf[0])n, err = io.ReadFull(client, buf[:addrLen])if n != addrLen {return nil, errors.New("invalid hostname: " + err.Error())}addr = string(buf[:addrLen])case 4:return nil, errors.New("IPv6: no supported yet")default:return nil, errors.New("invalid atyp")}n, err = io.ReadFull(client, buf[:2])if n != 2 {return nil, errors.New("read port: " + err.Error())}port := binary.BigEndian.Uint16(buf[:2])destAddrPort := fmt.Sprintf("%s:%d", addr, port)dest, err := net.Dial("tcp", destAddrPort)if err != nil {return nil, errors.New("dial dst: " + err.Error())}n, err = client.Write([]byte{0x05, 0x00, 0x00, 0x01, 0, 0, 0, 0, 0, 0})if err != nil {dest.Close()return nil, errors.New("write rsp: " + err.Error())}return dest, nil
}func Socks5Forward(client, target net.Conn) {forward := func(src, dest net.Conn) {defer dest.Close()io.Copy(src, dest)}go forward(client, target)go forward(target, client)}

go socks代理相关推荐

  1. SOCKS代理工具EarthWorm、sSoks

    SOCKS代理 常见的网络场景: 服务器在内网中,可以任意访问外部网络 服务器在内网中,可以访问外部用网络,但服务器安装了防火墙来拒绝敏感端口的连接 服务器在内网中,只对外开放了部分端口(例如80端口 ...

  2. autossh配置socks代理

    原理很简单就是用ssh -D建立socks代理,然后把浏览器配置成socks代理就是了.用路由器来做ssh -D的好处是不用在每个设备上(我有一个iphone,两个ipad,一个android手机,n ...

  3. rust 局域网联机_分享自己用 Rust 写的可以直接利用 SOCKS 代理的游戏加速器

    之前分享了一款自己用 Go 写的游戏加速器 IkaGo,但是我也在文章中多次提到,加速器最重要的是线路而不是技术.为了能更好的利用好手上的一些优质的众所周知的 SOCKS 代理,我又开发了一款加速器( ...

  4. 使用代理_工具的使用|MSF搭建socks代理

    目录 搭建代理 添加路由 搭建Socks4a代理 搭建Socks5代理 连接代理 注:通过MSF起的socks代理,经常性的不监听端口,也就导致代理失败.试过好多次都是这样,应该是MSF的一个bug. ...

  5. Android Studio 使用socks代理

    Android Studio 使用socks代理 准备工作 1. 从https://www.privoxy.org/下载Privoxy软件 2. 安装Privoxy 3. 在Privoxy安装目录找到 ...

  6. 代理是什么?(HTTP代理,SOCKS代理)

    本来打算通过UDP53来绕过认证,在准备实现DNS隧道的时候,发现所涉及的内容实在是太多了-(DNS解析原理,域名的原理,隧道技术,代理技术 and so on),每一个知识点都能让我深入去研究一段时 ...

  7. Socks代理是什么意思?有什么用?

    什么是Socks代理 Socks代理:中文名全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端.支持多种协议,包括http.ftp请求及其它类型的请求.它分socks 4 和so ...

  8. Socks代理是什么?PC端怎么使用Socks5代理?

    之前给大家介绍过代理IP是什么以及它的作用.代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息,形象的说:它是网络信息的中转站.最常用的代理莫过于HTTP代理与Sock ...

  9. 内网渗透建立代理通道(如何攻击目标内网机器?)-Socks代理(゚益゚メ) 渗透测试

    文章目录 搭建靶场 配置虚拟机网络 虚拟机 上线目标1(Target1) Socks代理 简介 正向代理 反向代理 FRP 一层代理 二层代理(多层代理) EW 正向代理 反向代理 二层代理流量转发 ...

  10. 配置ssh使用socks代理

    配置ssh使用socks代理 ssh -o ProxyCommand='nc -x 127.0.0.1:1080 %h %p' username@server posted on 2017-08-13 ...

最新文章

  1. 干货 | 国家信息中心杜平谈关于数字化的几点思考
  2. django2 快速安装指南
  3. 晶振噪声及杂散_晶振如何匹配电容看了就知道
  4. 漫画:什么是数据仓库
  5. 处理网络请求qs、图片转base64的优劣
  6. Linux下的Shell编程之Helloworld.sh看过来
  7. linux 坏块,如何在Linux中检查硬盘上的坏扇区或坏块
  8. 项目管理十大知识领域之项目成本管理
  9. 计算机一级考试网络题的图标,全国计算机等级考试一级模拟试题四
  10. python爬取全球历年GDP数据
  11. 贴吧趣味问题——一线连24点【编程穷举证明无解】
  12. 计算机分区硬盘有写保护,磁盘被写保护怎么办?总结几种去掉磁盘写保护的方法...
  13. OpenStreetMap地图服务器安装
  14. 3 Java 基础__不同数据类型之间的运算及进制
  15. 最简单DIY基于ESP32CAM的物联网相机系统③(在JSP服务器图传相片给所有客户端欣赏)
  16. 如何在BIOS中开启虚拟化技术
  17. 梅科尔工作室——鸿蒙设备开发实战004:内核开发
  18. 《Attention Is All Y ou Need》翻译 Ashish Vaswani Noam Shazeer Niki Parmar Jakob etc.
  19. Python自动玩俄罗斯方块小游戏
  20. nginx反向代理地址是域名时请求不通的情况

热门文章

  1. 考研英语 - word-list-19
  2. fNIRS研究行文指南
  3. python中session()是干什么作用的_session是什么意思_session的作用是什么
  4. Failed to push the item(s)解决方法
  5. 如果取消Windows Ink后ps画笔没有压感
  6. 黑苹果 技嘉 B250M-DS3H-CF i57500 HD630 EFI引导驱动发布
  7. 程序员应该避开的20个低级不良用户体验
  8. 转载分享一批老外的超牛25行代码参赛作品的Flash源文件
  9. DRUCK德鲁克压力校验仪维修DPI620G-IS
  10. 写的书太受欢迎怎么办?北大《深度强化学习》作者:那就开放下载吧