织梦CMS - 轻松建站从此开始!

欧博ABG官网-欧博官方网址-会员登入

欧博用Rust手把手编写一个Proxy(代理), 准备篇, 动手造轮子

时间:2024-06-03 23:01来源: 作者:admin 点击: 74 次
用Rust手把手编写一个Proxy(代理), 准备篇, 动手造轮子 wmproxy 将实现http/https代理, socks5代理, 后续将实现websocket代理, 内外网穿透等, 会将实现过程分享出来, 希望感兴趣的可以一起参与参与 项目 ++wmproxy+

用Rust手把手编写一个Proxy(代理), 准备篇, 动手造轮子

wmproxy 将实现http/https代理, socks5代理, 后续将实现websocket代理, 内外网穿透等, 会将实现过程分享出来, 希望感兴趣的可以一起参与参与

项目 ++wmproxy++

gite: https://gitee.com/tickbh/wmproxy

github: https://github.com/tickbh/wmproxy

Proxy功能(代理用来做什么) 保护隐私

举个现实与客户交流的例子,欧博这时候你和客户双方都互相认识, 了解对方

flowchart LR 你 <--> 客户

此时公司为了保护客户隐私, 要求你们统一在平台中沟通, 那沟通方式就变成了

flowchart LR 你 <--> 平台 <--> 客户

你们所有的沟通都由平台中转, 你再也没法得到客户的信息, 客户也没有办法得到你的信息, 保护了隐私的安全。在互联网上的表现就是隐藏了自己真实的IP地址,防止被攻击。

专属通道

正常有些内网资源无法通过外网直接访问

flowchart LR 你 --x 内网

此时内网安装了某代理统一对外保证安全,那你就可以通过取得该代理的信任(密码登录校验等),从而获取这些内网资源

flowchart LR 你 <--> 代理 <--> 内网

更快的速度

就比如访问github资源, 中间省略掉部分步骤,获取更少的丢包率,更高的访问速度

flowchart LR 你 -->|30ms| 代理 -->|30ms| github 你 -->|30ms| 城域 -->|30ms| 省域 -->|30ms| 国域 --> |500ms| github

代理类型 http代理

http代理是中间服务器接收到客户端的数据并原样的转发给服务端,在中间这一层他可以解析也可以不做解析,所以理论上代理服务器可以知道所有的数据,而且链路上都是明文传输,欧博娱乐任何一层的中间节点都可以获得请求及返回的完整数据,不安全。

https代理

https代理是客户端优先给代理发送connect协议,比如访问https://www.baidu.com那么先优先发如下消息。

CONNECT :443 HTTP/1.1\r\n Host: :443\r\n\r\n

后面的代理方收到客户端的消息转发给服务端,收到服务端的消息转发给客户端,无法获得客户端与服务端的通讯内容,因为是通过https的加密方式,中间方无法进行解密。

socks5代理

socks5由rfc1928进行定义,包含TCP,UDP,BIND三种相对较复杂,后面实现时再展开,还可以用用户密码进行认证,从而规避掉不合法的客户端请求。

项目引用

项目主要引用了下列的库,介绍了它在其中的作用

异步事件库tokio,高效的异步库,它已经集成了(epoll,kqueue, IOCP等)高效的事件通知方式。

web解析库webparse,此外需要对接收的数据做初步解析需要一个web解析库,选择了webparse,依赖少,且已经实现了http1.1协议和http2协议的解析。

命令行解析框架commander,轻松解析命令行,无需再进行命令的二次分析。

为什么选Rust

Rust是一种快速、高并发、内存安全的语言,经过10来年的发展已经相当成熟,而且拥有良好的包管理系统,可以轻松的构建依赖。
RUST官网地址 https://www.rust-lang.org/
选用 1.72.0 版本
安装方法请参考网址
https://www.rust-lang.org/tools/install

(责任编辑:)
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:
发布者资料
查看详细资料 发送留言 加为好友 用户等级: 注册时间:2024-12-22 10:12 最后登录:2024-12-22 10:12
栏目列表
推荐内容