go socks代理
参考资料:
代码参考
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代理相关推荐
- SOCKS代理工具EarthWorm、sSoks
SOCKS代理 常见的网络场景: 服务器在内网中,可以任意访问外部网络 服务器在内网中,可以访问外部用网络,但服务器安装了防火墙来拒绝敏感端口的连接 服务器在内网中,只对外开放了部分端口(例如80端口 ...
- autossh配置socks代理
原理很简单就是用ssh -D建立socks代理,然后把浏览器配置成socks代理就是了.用路由器来做ssh -D的好处是不用在每个设备上(我有一个iphone,两个ipad,一个android手机,n ...
- rust 局域网联机_分享自己用 Rust 写的可以直接利用 SOCKS 代理的游戏加速器
之前分享了一款自己用 Go 写的游戏加速器 IkaGo,但是我也在文章中多次提到,加速器最重要的是线路而不是技术.为了能更好的利用好手上的一些优质的众所周知的 SOCKS 代理,我又开发了一款加速器( ...
- 使用代理_工具的使用|MSF搭建socks代理
目录 搭建代理 添加路由 搭建Socks4a代理 搭建Socks5代理 连接代理 注:通过MSF起的socks代理,经常性的不监听端口,也就导致代理失败.试过好多次都是这样,应该是MSF的一个bug. ...
- Android Studio 使用socks代理
Android Studio 使用socks代理 准备工作 1. 从https://www.privoxy.org/下载Privoxy软件 2. 安装Privoxy 3. 在Privoxy安装目录找到 ...
- 代理是什么?(HTTP代理,SOCKS代理)
本来打算通过UDP53来绕过认证,在准备实现DNS隧道的时候,发现所涉及的内容实在是太多了-(DNS解析原理,域名的原理,隧道技术,代理技术 and so on),每一个知识点都能让我深入去研究一段时 ...
- Socks代理是什么意思?有什么用?
什么是Socks代理 Socks代理:中文名全能代理,就像有很多跳线的转接板,它只是简单地将一端的系统连接到另外一端.支持多种协议,包括http.ftp请求及其它类型的请求.它分socks 4 和so ...
- Socks代理是什么?PC端怎么使用Socks5代理?
之前给大家介绍过代理IP是什么以及它的作用.代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息,形象的说:它是网络信息的中转站.最常用的代理莫过于HTTP代理与Sock ...
- 内网渗透建立代理通道(如何攻击目标内网机器?)-Socks代理(゚益゚メ) 渗透测试
文章目录 搭建靶场 配置虚拟机网络 虚拟机 上线目标1(Target1) Socks代理 简介 正向代理 反向代理 FRP 一层代理 二层代理(多层代理) EW 正向代理 反向代理 二层代理流量转发 ...
- 配置ssh使用socks代理
配置ssh使用socks代理 ssh -o ProxyCommand='nc -x 127.0.0.1:1080 %h %p' username@server posted on 2017-08-13 ...
最新文章
- 干货 | 国家信息中心杜平谈关于数字化的几点思考
- django2 快速安装指南
- 晶振噪声及杂散_晶振如何匹配电容看了就知道
- 漫画:什么是数据仓库
- 处理网络请求qs、图片转base64的优劣
- Linux下的Shell编程之Helloworld.sh看过来
- linux 坏块,如何在Linux中检查硬盘上的坏扇区或坏块
- 项目管理十大知识领域之项目成本管理
- 计算机一级考试网络题的图标,全国计算机等级考试一级模拟试题四
- python爬取全球历年GDP数据
- 贴吧趣味问题——一线连24点【编程穷举证明无解】
- 计算机分区硬盘有写保护,磁盘被写保护怎么办?总结几种去掉磁盘写保护的方法...
- OpenStreetMap地图服务器安装
- 3 Java 基础__不同数据类型之间的运算及进制
- 最简单DIY基于ESP32CAM的物联网相机系统③(在JSP服务器图传相片给所有客户端欣赏)
- 如何在BIOS中开启虚拟化技术
- 梅科尔工作室——鸿蒙设备开发实战004:内核开发
- 《Attention Is All Y ou Need》翻译 Ashish Vaswani Noam Shazeer Niki Parmar Jakob etc.
- Python自动玩俄罗斯方块小游戏
- nginx反向代理地址是域名时请求不通的情况
热门文章
- 考研英语 - word-list-19
- fNIRS研究行文指南
- python中session()是干什么作用的_session是什么意思_session的作用是什么
- Failed to push the item(s)解决方法
- 如果取消Windows Ink后ps画笔没有压感
- 黑苹果 技嘉 B250M-DS3H-CF i57500 HD630 EFI引导驱动发布
- 程序员应该避开的20个低级不良用户体验
- 转载分享一批老外的超牛25行代码参赛作品的Flash源文件
- DRUCK德鲁克压力校验仪维修DPI620G-IS
- 写的书太受欢迎怎么办?北大《深度强化学习》作者:那就开放下载吧