最近想做一个玩具demo,要访问的api需要使用梯子才可以访问,我本地安装了clashX,可以使用浏览器正常访问该接口,但是运行代码时会访问超时。
首先想到的是,给命令行设置代理export https_proxy=http://127.0.0.1:7890 http_proxy=http://127.0.0.1:7890 all_proxy=socks5://127.0.0.1:7890
设置后,通过命令行curl命令可以正常访问api,但是运行代码会报错Client network socket disconnected before secure TLS connection was established Error: Client network socket disconnected before secure TLS connection was established
一通搜索后,找到一篇文章Node.js Axios behind corporate proxies,是通过使用tunnel创建一个HTTPS-over-HTTP tunnel
,就可以顺利访问了!!
具体实现为:
// 代理设置
const agent = tunnel.httpsOverHttp({
proxy: {
host: '127.0.0.1',
port: 7890,
}
});
axios.request({
url: 'https://the_api_you_want_access',
method: 'get',
httpsAgent: agent,
proxy: false, // 设置axios不要自动检测命令行代理设置
});
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。