tproxy是一个简单的TCP路由代理(7层)构建在Geven_t,它可以让您配置常规逻辑在Python 它巨资从代理计算机的启发,但有一些独特的,如预叉工人模式借来Gunicorn 。
安装门:
tproxy需要Python 2.x的> = 2.5。 Python的3.x的支持计划。
PIP安装GEVENT
PIP安装tproxy
从源代码安装:
混帐混帐克隆://github.com/benoitc/tproxy.git
CD tproxy
PIP安装-r requirements.txt
蟒蛇setup.py安装
通过运行命令行测试您的安装:
tproxy例子/ transparent.py
并继续http://127.0.0.1:5000,你应该看到谷歌的主页。
用法:
tproxy -h
用法:tproxy [OPTIONS] script_path
选项:
  - 显示版本程序的版本号并退出
  -h,--help显示此帮助信息并退出
  - 日志文件=文件写入日志文件。 [ - ]
  - 日志级别= LEVEL日志输出的粒度。 [信息]
  - 对数=配置文件中的日志配置文件来使用。 [无]
  -n STRING,--name = STRING
 基地,与setproctitle过程的命名使用。
  [无]
&NBSP ;-D,--daemon以进程的Gunicorn过程。 [虚假]
&NBSP ;-P文件--pid =文件的文件名使用的PID文件。 [无]
  -u USER,--user =用户切换工作进程,以该用户身份运行。 [501]
  -g集团,--group =集团
 切换工作进程,因为这组中运行。 [20]
  -m INT,--umask = INT位掩码的文件模式上写的文件
  Gunicorn。 [0]
  -b地址,--bind =地址
 套接字进行绑定。 [127.0.0.1:8000]
  - 积压= INT挂起连接的最大数目。 [2048]
  -w INT,--workers = INT
 工作进程处理的请求数量。
  [1]
  - 工人 - 连接= INT
 人均并发客户端的最大数量。
  [1000]
  -t INT,--timeout = INT
 工人沉默超过这个多少秒
 杀死并重新启动。 [30]
信号
QUIT - 正常关机。停止接受连接立刻
 而等到所有的连接关闭
TERM - 快速关机。停止接受并关闭所有conections
  10秒后。
INT - 同TERM
HUP - 优美重装。刷新所有工人的新代码
 在你的路由脚本。
USR2 - 升级tproxy对飞
TTIN - 从1提高员工的数量
TTOU - 从1降低工人的数量
路由脚本。例
进口重
re_host = re.compile(“主持人: s *(*) r N”)
类CouchDBRouter(对象):
 #看路由表,并返回一个CouchDB的节点使用
 高清查找(个体经营,名):
 “”“做什么”“”
路由器= CouchDBRouter()
#执行基于该流数据的内容感知路由。这里,所述
#从HTTP协议主机的头信息进行解析,找到
#用户名和一个查找程序上运行的名称来找到正确的
#CouchDB的节点。如果不匹配可没有,做什么用
#连接。 (使自己couchone服务器...)
高清代理(数据):
 火柴= re_host.findall(数据)
 如果匹配:
 主机= router.lookup(matches.pop())
  {回报“远程”:主机}
 返回None
示例SOCKS4代理在18行
进口插座
进口结构
高清代理(数据):
&NBSP;如果len(数据)<9:
&NBSP;回报
&NBSP;命令= ORD(数据[1])
&NBSP; IP,端口= socket.inet_ntoa(数据[4:8]),struct.unpack(“> H”时,数据[2:4])[0]
&NBSP; IDX = data.index(“ 0”)
&NBSP;用户id =数据[8:IDX]
&NBSP;如果命令== 1:#connect
&NBSP;返回的dict(远程=“%S:%s的”%(IP,端口),
&NBSP;答复=“ 0 X5A 0 0 0 0 0 0”,
&NBSP;数据=数据[IDX:])
&NBSP;否则:
&NBSP; {回报“亲密”:“ 0 x5b 0 0 0 0 0 0”}
有效的返回值
&NBSP; {“遥控”:字符串或元组} - 字符串是主机:将被代理服务器的端口。
&NBSP; {“远程”:字符串,“数据”:字符串} - 同上,但发送给定的数据来代替。
&NBSP; {“远程”:字符串,“数据”:字符串,“答复”:字符串} - 同上,但给出的数据返回给客户端回复
&NBSP;无 - 不执行任何操作。
&NBSP; {“亲密”:真} - 关闭连接。
&NBSP; {“亲密”:字符串} - 关闭发送后的字符串连接。
处理错误
您可以通过添加脚本中的proxy_error功能轻松地处理错误:
高清proxy_error(客户端,E):
&NBSP;通
此功能得到ClientConnection实例(当前连接)作为第一个参数,并在第二个参数错误例外
要求:
- 蟒蛇
评论没有发现