优化网站排名费用,初学者求教怎样做网站,网站加载模式,中铁建设集团有限公司在哪背景
开发过程中#xff0c;用户设置的系统代理是不同的#xff0c;比如公司内的服务器#xff0c;所以就要动态地使用系统代理来访问#xff0c;但是主进程默认为控制台级别的请求#xff0c;不走系统代理#xff0c;除非你指定系统代理配置#xff0c;这个就就有了这…背景
开发过程中用户设置的系统代理是不同的比如公司内的服务器所以就要动态地使用系统代理来访问但是主进程默认为控制台级别的请求不走系统代理除非你指定系统代理配置这个就就有了这篇内容 思路
网上其实已经有了一篇文章写了这块这里权当总结 通过 electron 自带 session 请求来判断是否走了代理这里的 session 相当于一个渲染进程的 session所以走的是系统代理 通过 electron 执行 cmd 命令来返回系统代理配置这个兼容性比较麻烦macwindows 各不相同不推荐 通过内部通信委派渲染进程来干这件事但是这个如果来回传递 10M 左右的数据则会造成内存溢出原因不详总之通信不能进行大数据传输electron 的 bug 综上所述还是自带的 session 方式比较靠谱但是遇上 mac socks5 有账号密码时返回的不清楚是啥还未尝试 代码实现
Electron 主进程获取系统代理代码
async function getSystemProxy() {const proxyUrl await session.defaultSession.resolveProxy(https://www.baidu.com);if (proxyUrl.startsWith(PROXY)) {const [host port] proxyUrl.split( )[1].split(:);console.log(proxy)}
}
node-fetch 使用系统代理需要借助库 https-proxy-agent
const {HttpsProxyAgent} require(https-proxy-agent);(async () {const fetch (await import(node-fetch)).default;// 使用 fetch 发送请求fetch(https://crashlogs.whatsapp.net/wa_fls_upload_check?typecrashlogaccess_token1063127757113399%7C745146ffa34413f9dbb5469f5370b7af, {headers: {accept: */*,accept-language: zh-CN,content-type: multipart/form-data; boundary----WebKitFormBoundary0liYTCH2BoYgSkZz,sec-ch-ua: \Not?A_Brand\;v\8\, \Chromium\;v\108\,sec-ch-ua-mobile: ?0,sec-ch-ua-platform: \Windows\,Referer: https://crashlogs.whatsapp.net/wa_fls_upload_check,Origin: https://web.whatsapp.com,},body: ------WebKitFormBoundary0liYTCH2BoYgSkZz\r\nContent-Disposition: form-data; name\from_jid\\r\n\r\nunknown-9799517833\r\n------WebKitFormBoundary0liYTCH2BoYgSkZz\r\nContent-Disposition: form-data; name\agent\\r\n\r\nWhatsApp/2.3000.1014589209 Web/Chrome 108.0.5359.215 Device/Windows\r\n------WebKitFormBoundary0liYTCH2BoYgSkZz\r\nContent-Disposition: form-data; name\app_id\\r\n\r\n167028690535322\r\n------WebKitFormBoundary0liYTCH2BoYgSkZz\r\nContent-Disposition: form-data; name\build_id\\r\n\r\n0\r\n------WebKitFormBoundary0liYTCH2BoYgSkZz\r\nContent-Disposition: form-data; name\support_exception_only_upload\\r\n\r\ntrue\r\n------WebKitFormBoundary0liYTCH2BoYgSkZz\r\nContent-Disposition: form-data; name\reason\\r\n\r\n[ErrorPubSub] ServerJS based data-sjs payload content length mismatch\r\n------WebKitFormBoundary0liYTCH2BoYgSkZz--\r\n,method: POST,agent: new HttpsProxyAgent(http://127.0.0.1:7890)}).then((response) {return response.json();}).then((data) {console.log(data);}).catch((e) {console.error(e);});
})();