Add proxy

This commit is contained in:
被遗忘的记忆
2024-07-26 23:12:44 +08:00
committed by GitHub
parent ee9719f094
commit dfdbbf4eb7
+56
View File
@@ -0,0 +1,56 @@
import { SocksProxyAgent } from 'socks-proxy-agent';
import HttpsProxyAgent from 'https-proxy-agent';
import { parse as parseUrl } from 'url';
export function createProxyAgent() {
const proxyUrl = process.env.https_proxy || process.env.HTTPS_PROXY;
if (!proxyUrl) {
console.log('https_proxy 环境变量未设置,将不使用代理。');
return null;
}
// 检查是否是 SOCKS5 代理
if (proxyUrl.startsWith('socks5://')) {
const [host, port, username, password] = proxyUrl.slice(9).split(':');
return new SocksProxyAgent({
host,
port,
userId: username,
password,
});
} else {
// 处理 HTTP/HTTPS 代理
return new HttpsProxyAgent.HttpsProxyAgent(proxyUrl);
}
}
export function getProxyArgs() {
const proxyUrl = process.env.https_proxy || process.env.HTTPS_PROXY;
if (!proxyUrl) {
return [];
}
if (proxyUrl.startsWith('socks5://')) {
const [host, port] = proxyUrl.slice(9).split(':');
return [`--proxy-server=socks5://${host}:${port}`];
} else {
const parsedUrl = parseUrl(proxyUrl);
return [`--proxy-server=${parsedUrl.host}`];
}
}
export function getProxyEnv() {
const proxyUrl = process.env.https_proxy || process.env.HTTPS_PROXY;
if (!proxyUrl || !proxyUrl.startsWith('socks5://')) {
return {};
}
const [, , username, password] = proxyUrl.slice(9).split(':');
return {
SOCKS_USERNAME: username,
SOCKS_PASSWORD: password,
};
}