Electron开发 - 如何在主进程Main中让node-fetch使用系统代理

背景

开发过程中,用户设置的系统代理是不同的,比如公司内的服务器,所以就要动态地使用系统代理来访问,但是主进程默认为控制台级别的请求,不走系统代理,除非你指定系统代理配置,这个就就有了这篇内容

思路

网上其实已经有了一篇文章写了这块,这里权当总结

  1. 通过 electron 自带 session 请求来判断是否走了代理,这里的 session 相当于一个渲染进程的 session,所以走的是系统代理;

  2. 通过 electron 执行 cmd 命令来返回系统代理配置,这个兼容性比较麻烦,mac,windows 各不相同,不推荐;

  3. 通过内部通信,委派渲染进程来干这件事,但是这个如果来回传递 10M 左右的数据,则会造成内存溢出,原因不详,总之通信不能进行大数据传输,electron 的 bug

  4. 综上所述,还是自带的 session 方式比较靠谱,但是遇上 mac socks5 有账号密码时,返回的不清楚是啥,还未尝试

代码实现

Electron 主进程获取系统代理代码

async function getSystemProxy() {
    const proxyUrl = await session.defaultSession.resolveProxy('https://www.baidu.com');
    if (proxyUrl.startsWith('PROXY')) {
        const [host, port] 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

森叶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值