falseen / PySocket

PySocket ,一个通过猴子补丁(monkey patch)动态修改 socket 的项目。在不修改源码的情况下给 socket 增加一些诸如限制客户端数量、前置代理之类的功能。让我们将 Monkey Patch 进行到底吧!
https://falseen.github.io/PySocket/
Apache License 2.0
107 stars 43 forks source link
monkey-patch monkeypatch proxy python socket

PySocket

PySocket ,一个通过猴子补丁(monkey patch)动态修改 socket 的项目。本项目源于一个朋友的需求,当时他想限制shadowsocks客户端的数量,但又不想修改源码,于是我为他写了这个代码,原代码发布在gist上,现在迁移了过来,并且增加了一些新的功能。以后可能还会增加一些新功能,让我们将 Monkey Patch 进行到底吧!

功能:

通过猴子补丁的方式给 socket 动态地添加一些增强功能,比如限制客户端数量、前置代理什么的。 使用的时候只要把对应文件夹中的 socket.py 文件放到程序的目录即可生效,不用修改任何源码。

注意:

说明:

项目中每个文件夹代表不同的功能。 以下是每个文件夹的功能和说明。

代理部分的代码来自 PySocks 项目:https://github.com/Anorov/PySocks

本来我也实现了一个socks5,但http的不想自己写了,索性就用别人代码吧。PySocks 的代码质量还是比较高的,就是太复杂了。如果是我实现的话会简化不少。

原理说明:

默认情况下,python程序在运行的时候会导入系统中的 socket 文件,但是把这个socket文件放到程序的目录之后, 它就会引用这个我们自定义的socket文件。 然后我们再在这个文件中再导入真正的socket包,并在原 socket 的基础上加以修改,最终程序调用的就是经过我们修改的socket文件了。

最后我想说的是,python 真的是世界上最好的语言,太自由了!!!

TODO