由浅入深写代理(6)-http-代理.md

本文讲 http 代理,顾名思义,http 代理代理的是 http 请求,其实这里面分两类

* 普通代理 这种代理扮演的是「中间人」角色,对于连接到它的客户端来说,它是服务端;对于要连接的服务端来说,它是客户端。它就负责在两端之间来回传送 HTTP 报文。
* 隧道代理。它通过 HTTP 协议正文部分(Body)完成通讯,以 HTTP 的方式实现任意基于 TCP 的应用层协议代理。这种代理使用 HTTP 的 CONNECT 方法建立连接。

Read More

由浅入深写代理(5)-socks5-代理.md

既然 socks5 是协议,所以客户端也必须有 socks5 的实现才能和服务端连接。这里面我就用现成的开源库 PySocks 来演示下。

pySocks 有两种方式来实现,一种是直接的 s = socks.socksocket() 创建一个新的 socket 对象,还有一种是 Monkeypatching,算是 python 的黑魔法。

Read More

由浅入深写代理(3) -socks5 代理

本文讲的是如何写一个 socks5 代理,其实 shadowsocks 的代理也是 socks5 协议的,所以 socks5 代理也是本系列教程的一个重点。

首先放出 socks5 协议的 rfc,socks5 协议很简单,SOCKS5 协议并不负责代理服务器的数据传输环节,此协议只是在 C/S 两端真实交互之间,建立起一条从客户端到代理服务器的授信连接。

Read More