SOCKS反向代理服务器。
rsocks的Python项目详细描述
rsocks是一个反向代理服务器,用于传输特定主机的流量 通过袜子4/5代理。在应用程序中使用SOCKS 4/5非常有用 没有socks代理支持的。
安装
$ pip install rsocks
或
$ easy_install rsocks
要升级到最新版本,您可以执行:
$ pip install -U rsocks
用法
首先,我们需要创建以下格式的配置文件:
# /path/to/rsocks.toml [servers.foo] proxy = "socks4://user:pass@192.168.1.10:1080" listen_host = 0.0.0.0 listen_port = 5025 upstream_host = "smtp.example.com" upstream_port = 25 upstream_ssl = false
有一个通过socks5代理转发gmail的smtp/imap的例子 服务器:
[servers.imap] proxy = "socks5://localhost:1080" listen_port = 5993 upstream_host = "imap.gmail.com" upstream_port = 993 upstream_ssl = true [servers.smtp] proxy = "socks5://localhost:1080" listen_port = 5465 upstream_host = "smtp.gmail.com" upstream_port = 465 upstream_ssl = true
接下来,我们启动rsocks服务器:
$ rsocks --config=/path/to/rsocks.toml [14:24:44] rsocks.servers.smtp Using proxy server socks5://localhost:1080 [14:24:44] rsocks.servers.smtp Listening 127.0.0.1:5465 [14:24:44] rsocks.servers.imap Using proxy server socks5://localhost:1080 [14:24:44] rsocks.servers.imap Listening 127.0.0.1:5993 [14:24:44] rsocks.pool Prepared "smtp" [14:24:44] rsocks.pool Prepared "imap" [14:24:44] rsocks.servers.smtp Starting server... [14:24:44] rsocks.servers.imap Starting server...
现在不要停止它,打开你的应用程序(例如os x中的airmail)并设置 本地转发地址的服务器选项:
SMTP: 127.0.0.1:5465 without SSL IMAP: 127.0.0.1:5993 without SSL
现在应用程序的流量将通过代理服务器转发 (socks5://127.0.0.1:1080)。
如果您希望在后台运行rsocks服务器,请检查 Platform Service Templates。 例如,os x用户可以在 ~/Library/LaunchAgents并将其作为服务加载:
$ nano ~/.rsocks.toml # create a config file $ wget https://github.com/tonyseek/rsocks/blob/master/misc/platforms/osx-launchd/com.tonyseek.rsocks.plist \ -O ~/Library/LaunchAgents/com.tonyseek.rsocks.plist $ nano ~/Library/LaunchAgents/com.tonyseek.rsocks.plist # edit the template $ launchctl load -w ~/Library/LaunchAgents/com.tonyseek.rsocks.plist
API概述
有一个使用api构建服务器的示例:
importosfromrsocks.poolimportServerPoolfromrsocks.serverimportReverseProxyServerproxy=os.environ.get('SOCKS_PROXY','socks5://localhost:1080')pool=ServerPool()withpool.new_server(name='IMAP',server_class=ReverseProxyServer,upstream=('imap.gmail.com',993),use_ssl=True)asserver:server.set_proxy(proxy)server.listen(('127.0.0.1',5993))withpool.new_server(name='SMTP',server_class=ReverseProxyServer,upstream=('smtp.gmail.com',465),use_ssl=True)asserver:server.set_proxy(proxy)server.listen(('127.0.0.1',5465))if__name__=='__main__':pool.loop()