具有不同类型代理的扭曲负载平衡器

时间:2016-02-17 08:44:07

标签: python proxy twisted load-balancing

我正在尝试制作支持不同类型代理的简单负载均衡器。

from twisted.internet.protocol import Factory
from twisted.protocols.portforward import ProxyFactory
from twisted.internet import reactor
from enum import Enum
import random

class BalancerType(Enum):
    SOCKS5 = 'SOCKS5'
    HTTP = 'HTTP'

class BalancerFactory(Factory):
    def __init__(self, type):
        self.type = type
        self.proxy_factories = [ProxyFactory('127.0.0.1', 20000), ProxyFactory('127.0.0.1', 30000)]

    def buildProtocol(self, addr):
        proxy_factory = random.choice(self.proxy_factories)
        print 'using proxy %s:%s' % (proxy_factory.host, proxy_factory.port)
        return proxy_factory.buildProtocol(addr)

reactor.listenTCP(interface = '127.0.0.1', port = 10000, factory = BalancerFactory(BalancerType.SOCKS5))
reactor.run()

balancer侦听127.0.0.1:10000并随机将http请求分发到代理服务器127.0.0.1:20000,127.0.0.1:30000。 当我将Web浏览器配置为使用socks代理并且我在balancer中的所有代理都是socks代理时,一切正常。

但我需要支持不同类型的代理,例如127.0.0.1:20000的socks5代理和127.0.0.1:30000的http代理。

我认为如果平衡器类型和代理类型不同,我需要一些额外的工厂来包装连接。

我试图找到一些支持扭曲的袜子5库。 txsocksx 看起来很棒,但所有示例都使用端点,我不知道如何在我的BalancerFactory中使用它。

0 个答案:

没有答案