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如何将jaxb插件扩展与gradlejaxbplugin一起使用   java Hibernate列表<Object[]>到特定对象   java使用多态性显示arraylist的输出   java水平堆叠卡,带有一定偏移量   java错误:找不到符号方法liesInt()   java客户机/服务器文件收发中的多线程流管理   在java中可以基于访问重载方法吗?   包含空元素的java排序数组   swing Java按钮/网格布局   java BottomNavigationView getmaxitemcount   java空指针异常字符串生成器   java Xamarin升级导致“类文件版本错误52.0,应为50.0”错误   java我正在尝试打印它,而不只是对每一行进行println   Tomcat7中的java是否需要复制上下文。将xml转换为conf/Catalina/locahost以使其生效   带有注入服务的java REST端点在何处引发自定义WebServiceException?   在Java中使用GPS数据   java如何将JFreeChart ChartPanel导出到包含添加的CrosshairOverlay的图像对象?   内置Eclipse期间的Java 8堆栈溢出   java在GWT编译的JavaScript中如何表示BigDecimal