Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[工具推荐] 开发环境代理指南 #23

Open
PeterChen1997 opened this issue Jun 11, 2021 · 0 comments
Open

[工具推荐] 开发环境代理指南 #23

PeterChen1997 opened this issue Jun 11, 2021 · 0 comments

Comments

@PeterChen1997
Copy link
Owner

PeterChen1997 commented Jun 11, 2021

目标

  • 快速配置想要实现的代理模式
  • 规则导入导出成本低,方便规则互通
  • 不过多占用系统资源,对于使用方性能无负向感知
  • 支持系统代理,解决跨软件的代理

常用代理存在的问题

Host 配置

优点:

  • 配置简单

缺点:

  • 无法满足复杂的代理需求
  • 配置可能存在缓存,配置后不一定能立刻生效

Chrome 插件 SwitchProxy

优点:

  • 代理功能强大,提供多种配置模式,能够基本满足所有代理需求
  • 配置支持远端读取,方便协作
  • 支持 PAC 配置代理规则,自动切换代理模式,不用手动配置较多的黑白名单

缺点:

  • 仅支持代理 Chrome 内请求,不支持系统代理

Charles

优点:

  • 配置功能极其强大,支持所有类型的代理配置
  • 支持系统代理

缺点:

  • 占用内存较大(不开 record,开几天基本上就 2.x G)
  • 功能稳定性低(经常出现代理异常,重启后恢复)
  • 大量请求请求时占用 CPU 资源(开 record 后,CPU 会被大量占用用于数据处理)

推荐解决方案

那么有没有一种比较合适的解决方案呢,根据我们常见的业务代理场景,我找到了个比较合适的方案,大家可以参考下

LightProxy

lightproxy

LightProxy 是一款阿里开源(学长开发,可一键提需求,非软文)基于 whistle 的本地代理抓包软件,本质上就是使用 Electron 包了一层 Whistle,具体详细说明可以见文档

之前一直不考虑使用 whistle 的原因是:

  • whistle 的可视化界面配置较为繁琐,没有 charles 好用
  • 只能通过 web 访问配置页,启动还需要通过命令行,不太方便

但是用了 LightProxy 之后,大部分问题都解决了,并且 Charles 的资源占用太痛了,电脑吃不消,所以尝试转换了代理配置思路

还是来说下优缺点

优点(大部分是 whistle 的优点):

  • 配置内容为文本,方便规则互通
  • 资源占用低,长时间使用,内存占用保持在 200M,CPU 占用保持在 0.2%
  • 移动端调试代理更方便(见官方文档,但我们业务场景不多)
  • 支持系统代理
  • 稳定性高,支持携带大量数据请求的代理(Charles 在请求大量数据时代理内容会被截断)
  • 提供了 APP,方便编辑 Whistle 内容

缺点(大部分是 whistle 的缺点):

  • 复杂请求配置成本较高(由于通过文本配置规则,学习成本较高)
  • 交互体验较差,没有 charles 人性化

附录

常见配置场景

详细配置见 whistle 配置文档

关于whistle

新增接口代理

前后端联调

# 下方为配置规则 

# 拦截来自前半部分 url 的请求 代理到 127.0.01
xxx.com/tutor-work-order/api/ticket 127.0.0.1

本地接口代理

# 下方为配置规则 

# 拦截来自前半部分 url 的请求 代理到 127.0.0.1
tutor-test.xxx.com/tutor-work-order/api/ticket 127.0.0.1

部分域名访问较慢

# 下方为配置规则 

# 拦截来自前半部分 url 的请求 代理到 proxy.xxx.com:8118
github.com proxy.xxx.com:8118

我的代理配置

# 域名代理
local.xxx.com localhost:3000
local4100.xxx.com localhost:4100
local4102.xxx.com localhost:4102

# 全局代理
# Tips:可以使用全局走代理的配置,然后使用 excludeFilter 配合正则实现白名单配置
* proxy://proxy.zhenguanyu.com:8118 excludeFilter:///xxx/
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant