Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
Skip to content

cnpythonlib/PySocket

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 

Repository files navigation

socket_path

原文件分布在 https://gist.github.com/falseen/61861b9fe7fa643479bf ,为了方便管理,特迁移至此。

##功能:限制ss的客户端数量(基于ip判断),理论上也可以用于其他使用了socket模块的python程序。

使用说明:

  1. 将此文件放在ss根目录中即可生效,不用做其他设置(需要重新运行ss)。

  2. 修改53、54行的 clean_time 和 ip_numbers 为你想要的数值。

  3. 如果你的服务器有ipv6,并且你想让ip4和ip6分开限制,则可以设置 only_port 为 False 。

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

所以理论上任何引用了socket包的python程序都可以用这个文件来达到限制连接ip数量的目的。

##说明:

把这个文件放入ss根目录之后,等于是劫持了ss所引用的socket模块。因为python的机制是优先从当前目录引用模块,所以ss自然会引用这个我们自定义的文件。然后我们再在这个文件中引入真正的socket模块,并对原来的 accept 方法加以修改(实际上是加了一层壳),最终ss调用 accept 方法的时候会先调用我们自定义的方法,然后这个方法再调用真正的accept方法,之后根据accept返回的结果判断是否返回结果给 ss。大概就是这样。

有些地方的外网ip在短时间内可能会变动比较频繁,所以ip数量最好设置多一些,以免误伤。

About

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

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Python 100.0%