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()

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java 安卓 XMLPullParser错误   Java响应网格布局   Java中使用递归的不同方法   java变量可能尚未初始化(边加权图)   java如何将这样的文件插入MySQL数据库   java云端点:不允许实体类型的数组或集合   java(编译器或jvm)是否以不同方式处理类的静态最终成员?如果是,怎么做   java如何从lambda表达式返回新的非抽象映射?   java JDK 7支持的最大Spring版本是什么   我们如何从java类生成DTD   java在我的例子中BindingResult、FieldErrors或GlobalErrors是否可以为null?   java[LibGDX][GWT]读取文件外观时出错。HTML格式的json[序列化异常]   字典Java不可修改密钥集映射   java Admob在firebase sdk之后显示测试广告,但不显示真实广告