All Projects → falseen → Pysocket

falseen / Pysocket

Licence: apache-2.0
PySocket ,一个通过猴子补丁(monkey patch)动态修改 socket 的项目。在不修改源码的情况下给 socket 增加一些诸如限制客户端数量、前置代理之类的功能。让我们将 Monkey Patch 进行到底吧!

Programming Languages

python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to Pysocket

Multitor
Create multiple TOR instances with a load-balancing.
Stars: ✭ 624 (+477.78%)
Mutual labels:  proxy, socket
Bus
Bus 是一个基础框架、服务套件,它基于Java8编写,参考、借鉴了大量已有框架、组件的设计,可以作为后端服务的开发基础中间件。代码简洁,架构清晰,非常适合学习使用。
Stars: ✭ 253 (+134.26%)
Mutual labels:  proxy, socket
Websocks
A secure proxy based on WebSocket. 一个基于 WebSocket 的代理工具
Stars: ✭ 102 (-5.56%)
Mutual labels:  proxy
Wdaproxy
WebDriverAgent Proxy
Stars: ✭ 107 (-0.93%)
Mutual labels:  proxy
Proxy pool
python 代理池
Stars: ✭ 105 (-2.78%)
Mutual labels:  proxy
Rpm Haproxy
HAproxy RPM spec and builds for CentOS 6/7
Stars: ✭ 103 (-4.63%)
Mutual labels:  proxy
Deta cache
缓存cache服务器
Stars: ✭ 106 (-1.85%)
Mutual labels:  socket
Smargate
内网穿透,c++实现,无需公网IP,小巧,易用,快速,安全,最好的多链路聚合(p2p+proxy)模式,不做之一...这才是你真正想要的内网穿透工具!
Stars: ✭ 1,378 (+1175.93%)
Mutual labels:  proxy
V2ray Core
A platform for building proxies to bypass network restrictions.
Stars: ✭ 38,782 (+35809.26%)
Mutual labels:  proxy
Freeproxy
免费、高速的 V2Ray 代理和订阅。
Stars: ✭ 104 (-3.7%)
Mutual labels:  proxy
Cracker
tunnel over http[s]
Stars: ✭ 107 (-0.93%)
Mutual labels:  proxy
Forward Proxy
150 LOC Ruby forward proxy using only standard libraries.
Stars: ✭ 105 (-2.78%)
Mutual labels:  proxy
Socket.io Redux
Redux middleware to emit action via socket.io
Stars: ✭ 103 (-4.63%)
Mutual labels:  socket
Rltm.js
Easily swap realtime providers with a single code base
Stars: ✭ 106 (-1.85%)
Mutual labels:  socket
Chatroom
vue2聊天室,图灵机器人,node爬虫
Stars: ✭ 103 (-4.63%)
Mutual labels:  socket
Libqtshadowsocks
A lightweight and ultra-fast shadowsocks library written in C++14 with Qt framework
Stars: ✭ 1,455 (+1247.22%)
Mutual labels:  proxy
Videop2proxy
Proxy to enable P2P only cameras to work with standard protocols.
Stars: ✭ 102 (-5.56%)
Mutual labels:  proxy
Earlyap
Proxy specifically available for AP scores to enable simple early access to your scores without any storing of your College Board account details or dealing with untrustable proxies.
Stars: ✭ 104 (-3.7%)
Mutual labels:  proxy
Jcrandomproxy
随机代理
Stars: ✭ 105 (-2.78%)
Mutual labels:  proxy
Frp
A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet.
Stars: ✭ 51,746 (+47812.96%)
Mutual labels:  proxy

PySocket

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

功能:

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

注意:

  • 对于通过pip安装的程序,需要放到执行文件所在的文件夹,但不建议这么做,可能会影响其他程序。建议不要用pip安装。
  • 对于shadowsocks来说,需要把socket.py文件放到根目录(即shadowsocks目录),而不能放到 shadowsocks/shadowsocks 目录。具体原因不明,有时间再好好查一下。

说明:

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

  • shadowsocks: 给服务端添加前置代理的功能(原则上也适用于客户端),支持 http、socks4、socks5 代理。并且通过hook的方式去掉了ss的dns查询,ss在接收到数据之后会直接把域名和请求一起发给代理。

  • proxy:基本跟shadowsocks一样,只是去掉了hook的代码。

  • Limit_Clients:限制客户端数量(基于ip),支持tcp和udp,修改了close方法,在关闭连接的时候清理client list,基本上完美了。(目前python3下还有一点小问题,暂时还没想好怎么去解决)

  • orgin_socket:原始的socket,放在这里只是为了方便查看代码。毕竟 _socket.pyd 是加密的。

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

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

原理说明:

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

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

TODO

  • 用recv方法替换掉现有的close方法,根据上次接收到的时间来清理不活动的连接。

  • 用hook的方式修改socket,示例:pysocket python test.py

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].