Skip to content

由出口服务器插入入口服务器实现流量代理的小工具。

License

Notifications You must be signed in to change notification settings

vilicvane/plug2proxy

Repository files navigation

NPM version Repository package.json version MIT License Discord

Plug2Proxy - 插入代理

Plug2Proxy 并非科学上网/翻墙工具,它主要用于需要稳定访问特定 API 的服务器程序,如手机消息推送、OAuth 鉴权等场景。使用 Plug2Proxy 需要当前网络有公网 IP,并不适用于一般的家庭网络。

常见的代理方案需要配置客户端连接特定的代理服务器,当代理服务器失效时,则需要逐一登录客户端进行配置,既不方便,也容易遗漏。

Plug2Proxy 则将原来的客户端作为服务器,由流量出口(代理服务器)主动连接和配置规则。只需要更换流量出口服务器或其 IP,即可实现代理的切换。

特性

  • 流量出口服务器无需暴露端口(入口需要有公网 IP)。
  • 支持浏览器请求 referer 嗅探匹配规则(需要信任本地生成的 Plug2Proxy CA)。
  • 内置 DDNS 配置,目前支持阿里云和 Cloudflare 的 DNS 解析服务。

安装

npm install --global plug2proxy

使用

p2p [config file]

Plug2Proxy 使用 cosmiconfig 读取配置文件。

典型配置

流量入口

p2p.config.mjs

export default {
  mode: 'in',
  alias: '🖥️',
  tunnel: {
    password: 'abc123',
  },
  proxy: {
    refererSniffing: {
      include: {
        browsers: ['Edge', 'Chrome', 'Safari'],
      },
    },
  },
  ddns: {
    provider: 'alicloud',
    accessKeyId: '[access key id]',
    accessKeySecret: '[access key secret]',
    domain: 'example.com',
    // 使用泛域名解析避免缓存。
    record: '*.p2p',
  },
};

更多配置请参考 src/library/in/config.ts

流量出口

p2p.config.mjs

export default {
  mode: 'out',
  alias: '🌎',
  tunnels: [
    {
      // 字符 # 会在连接时被替换成随机字符串,配合泛域名使用。
      host: '#.p2p.example.com',
      password: 'abc123',
      rejectUnauthorized: false,
      match: {
        include: [
          {
            type: 'geoip',
            match: 'CN',
            negate: true,
          },
        ],
      },
      replicas: 3,
    },
  ],
};

更多配置请参考 src/library/out/config.ts

License

MIT License.

About

由出口服务器插入入口服务器实现流量代理的小工具。

Topics

Resources

License

Stars

Watchers

Forks

Packages