All Projects → Srar → Socks2shadowsocks

Srar / Socks2shadowsocks

单Socks5 转换 多Shadowsocks端口 流量统计 抓包分析 TypeScript

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to Socks2shadowsocks

R2s R4s X86 Openwrt
OpenWrt for Nanopi R2S/R4S/X86
Stars: ✭ 783 (+1531.25%)
Mutual labels:  shadowsocks
Shadowsocks Php
A php port of shadowsocks based on workerman. A socks5 proxy written in PHP.
Stars: ✭ 869 (+1710.42%)
Mutual labels:  shadowsocks
Shadowsocks Global
A VPN or proxy client for Windows
Stars: ✭ 29 (-39.58%)
Mutual labels:  shadowsocks
Freess
免费ss账号 免费shadowsocks账号 免费v2ray账号 (长期更新)
Stars: ✭ 6,544 (+13533.33%)
Mutual labels:  shadowsocks
Cloak
A censorship circumvention tool to evade detection against state adversaries
Stars: ✭ 942 (+1862.5%)
Mutual labels:  shadowsocks
Flora Kit
💐 基于 shadowsocks-go 做的完善实现,自动网络分流,完全兼容 Surge 的配置文件。
Stars: ✭ 913 (+1802.08%)
Mutual labels:  shadowsocks
Surgio
Generating rules for Surge, Clash, Quantumult... like a PRO.
Stars: ✭ 777 (+1518.75%)
Mutual labels:  shadowsocks
Proxyclient
proxy client, supported SOCKS4, SOCKS4A, SOCKS5, HTTP, HTTPS etc proxy protocols, written in golang
Stars: ✭ 42 (-12.5%)
Mutual labels:  shadowsocks
V2raya
A Linux web GUI client of Project V which supports V2Ray, SS, SSR, Trojan and Pingtunnel 🚀
Stars: ✭ 840 (+1650%)
Mutual labels:  shadowsocks
Shadowsocks Android
A shadowsocks client for Android
Stars: ✭ 32,186 (+66954.17%)
Mutual labels:  shadowsocks
Shadowsocks Manage System
科学上网管理系统
Stars: ✭ 825 (+1618.75%)
Mutual labels:  shadowsocks
Shadowsocksr Speed
SSR 批量测试节点有效带宽
Stars: ✭ 934 (+1845.83%)
Mutual labels:  shadowsocks
New Pac
翻墙-科学上网、免费翻墙、免费科学上网、免费自由上网、fanqiang、翻墙梯子、免费软件/方法,一键翻墙浏览器,免费shadowsocks/ss/ssr/v2ray/goflyway账号/节点分享,vps一键搭建翻墙服务器脚本/教程,电脑、手机、iOS、安卓、windows、Mac、Linux、路由器翻墙
Stars: ✭ 31,869 (+66293.75%)
Mutual labels:  shadowsocks
Ss Panel And Ss Py Mu
Stars: ✭ 813 (+1593.75%)
Mutual labels:  shadowsocks
Luci App Clash
Luci interface for Clash Openwrt
Stars: ✭ 967 (+1914.58%)
Mutual labels:  shadowsocks
Clashy
A GUI proxy client for Windows / Mac / Ubuntu Desktop based on Clash and Electron. Windows / Mac / Ubuntu 适用的Clash客户端.
Stars: ✭ 775 (+1514.58%)
Mutual labels:  shadowsocks
Goquiet Shadowsocks Docker
A Docker image for Shadowsocks over GoQuiet
Stars: ✭ 21 (-56.25%)
Mutual labels:  shadowsocks
Shadowsocks Munager
Middleware of shadowsocks-libev and sspanel
Stars: ✭ 44 (-8.33%)
Mutual labels:  shadowsocks
Shadowsocks install
Auto Install Shadowsocks Server for CentOS/Debian/Ubuntu
Stars: ✭ 7,516 (+15558.33%)
Mutual labels:  shadowsocks
Shadowsocksx Ng
Next Generation of ShadowsocksX
Stars: ✭ 30,025 (+62452.08%)
Mutual labels:  shadowsocks

Socks5SSProxy

单Socks5转换成多用户(端口)Shadowsocks代理. 适用于使用中转加速的用户或中转SS服务商.

已支持的加密算法

  • rc4-md5
  • aes-192-cfb
  • aes-256-cfb

如自行添加加密算法请实现ISSCryptoMethod接口

查询已支持的加密算法

import SSCrypto from "./src/Crypto/SSCrypto";
/* SSCrypto.getAllCryptoMethods():List<string> 返回加密算法名数组 */
console.log(SSCrypto.getAllCryptoMethods());

创建一个Socks5转Shadowsocks代理

开始接受Shadowsocks客户端传入连接:

import Socks5SSProxy from "./src/Socks5SSProxy";
import Socks5SSProxyTcpProcess from "./src/Socks5SSProxyTcpProcess";

/* 
    Shadowsocks服务端监听3389端口, 并将流量处理转发至192.168.0.250:22 Socks5服务端端口.
    Shadowsocks服务端所接受的算法:rc4-md5 密码: 123456
 */
var proxy: Socks5SSProxy = new Socks5SSProxy(3389, "192.168.0.250", 22, "rc4-md5", "123456");
proxy.on("error", (err: Error) => {
    console.error("代理服务器出现错误:", err);
});
proxy.listen();

如您想创建多个Shadowsocks服务端, 您只需要实例化多个Socks5SSProxy即可.

关闭全部Shadowsocks与Socks5连接并停止监听:

proxy.close();

Socks5转Shadowsocks服务事件

当您实例化Socks5SSProxy并调用listen方法后, 如有新连接传入则会触发clientConnected事件.

clientConnected事件会传给你一个Socks5SSProxyTcpProcess实例.

Socks5SSProxyTcpProcess为处理转发TCP过程类您可以监听其事件来干一些破事.

事件列表:

  • socks5Connected: Socks5连接并握手成功.
  • firstTraffic: Shadowsocks客户端与Socks5服务端首次通讯. 返回耗时(ms).
  • socks5Data: Socks5服务端 -> Shadowsocks客户端 已解密 数据.
  • clientData: Shadowsocks客户端 -> Socks5服务端 已解密 数据.
  • close: Shadowsocks客户端或Socks5服务端关闭了连接.
  • error: 转发过程中出现了错误. 返回Error.

使用:

proxy.on("clientConnected", (p: Socks5SSProxyTcpProcess) => {

    p.on("socks5Connected", () => {
        ...
    });

    p.on("firstTraffic", (time: number) => {
        var remoteAddress: string = `${p.getRemoteAddress()}:${p.getRemotePort()}`;
        var clientAddress: string = `${p.getClientSocket().remoteAddress}:${p.getClientSocket().remotePort}`;
        console.log(`Client [${clientAddress}] connected to [${remoteAddress}]. Usage time: ${time}ms`);
    });

    p.on("socks5Data", (data: Buffer) => {
        /*  记录Shadowsocks客户端下行流量
            如果您想判断这个连接是不是HTTP连接, 您针对首包可以使用:
            data.toString().indexOf("HTTP/1.1 ") != -1
            这样简易的方式来判断.
         */
        upload += data.length;
    });

    p.on("clientData", (data: Buffer) => {
        /* 记录Shadowsocks客户端上行流量 */
        download += data.length;
    });

    p.on("close", () => {
        ...
    });

    p.on("error", (err: Error) => {
        console.log(`Process Error:`, err.message);
    });
});

Examples

  • 屏蔽特定域名或IP
      var checkedAddress = false;
      p.on("clientData", (data: Buffer) => {
    
          /* 避免多次判断造成性能下降 */
          if (!checkedAddress) {
              var addressBlockList: Array<string> = [
                  "api.map.baidu.com",
                  "ps.map.baidu.com",
                  "sv.map.baidu.com",
                  "offnavi.map.baidu.com",
                  "newvector.map.baidu.com",
                  "ulog.imap.baidu.com",
                  "newloc.map.n.shifen.com",
              ];
    
              for (var address of addressBlockList) {
                  if (address != p.getRemoteAddress()) {
                      continue;
                  }
                  var remoteAddress: string = `${p.getRemoteAddress()}:${p.getRemotePort()}`;
                  var clientAddress: string = `${p.getClientSocket().remoteAddress}:${p.getClientSocket().remotePort}`;
                  console.log(`Client [${clientAddress}] try to connect to [${remoteAddress}].`);
                  return p.clearConnect();
              }
              checkedAddress = true;
          }
          /* 记录Shadowsocks客户端上行流量 */
          download += data.length;
      });
    
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].