代理
# Mac 终端走代理
https://github.com/mrdulin/blog/issues/18
在小火箭的设置
可以看出
我的http代理地址为127.0.0.1:1087
所以我需要将需要代理的程序都指向127.0.0.1 端口1087
# 设置使用代理
alias setproxy="export http_proxy=127.0.0.1:1087; export https_proxy=$http_proxy; echo 'Set proxy successfully'"
# 设置取消使用代理
alias unsetproxy="unset http_proxy; unset https_proxy; unset all_proxy; echo 'Unset proxy successfully'"
1
2
3
4
2
3
4
利用curl命令查看当前的终端IP
可以看到curl代理成功了
为什么设置了 http_proxy 等环境变量,git, curl 等命令行工具可以魔法上网了?
答:git,wget, curl,brew 等 cli,甚至 GCP 提供的 gcloud sdk 内部都会读取 http_proxy, https_proxy, all_proxy 等系统环境变量:
git config httpproxy
using-homebrew-behind-a-proxy
Configuring Cloud SDK for use behind a proxy/firewall
仅仅是应用程序运行时环境变量,没有魔法。比如 Node.js 应用程序,可以使用 process.env.http_proxy 来读取程序运行时环境变量。其他语言比如 Go, Java, Python, PHP 都有各自的内置标准库 API 或全局变量(比如 Node.js 的 process)来读取系统环境变量。git, wget, curl, brew, gcloud 和我们自己写的应用程序一样,没什么特殊的。
node
Welcome to Node.js v14.16.0.
Type ".help" for more information.
process.env.http_proxy
'http://127.0.0.1:7890'
# Axios 使用代理 IP 请求
// 方法1
axios({
url: 'http://www.baidu.com',
method: 'get',
proxy: {
host: '183.167.217.152',
port: 63000
}
}).then((res) => {
console.log(res)
})
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
以下一般用于 node 程序开发模式调试
const axios = require('axios')
const tunnel = require('tunnel')
// 方法2
axios({
url: 'https://www.baidu.com/',
method: 'get',
proxy: false,
httpAgent: tunnel.httpOverHttp({
proxy: { host: '183.167.217.152', port: '630001' }
}),
httpsAgent: tunnel.httpsOverHttp({
proxy: { host: '183.167.217.152', port: '630001' }
})
}).then((res) => {
console.log(res)
})
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
上次更新: 2023/04/05, 09:41:10