跳转到内容

HTTP/Socks5 网络代理

为确保脚本在全球范围内稳定访问目标网站,平台会在运行时提供一条加密通道(代理服务器)。

脚本无需自行购买或维护代理,只需读取平台注入的代理认证信息,并在 HTTP 请求中正确配置即可。

  • 协议SOCKS5
  • 域名:运行时从 PROXY_DOMAIN 环境变量读取
  • 认证方式
    • 环境变量名:PROXY_AUTH
    • 格式:username:password
  • 费用说明:平台内置提供,无需额外付费或单独配置
import os
import requests
# 1. 从运行环境获取代理服务地址
proxyDomain = os.environ.get("PROXY_DOMAIN")
# 2. 获取代理认证信息(平台自动注入)
try:
proxyAuth = os.environ.get("PROXY_AUTH")
print(f"代理认证信息: {proxyAuth}")
except Exception as e:
print(f"获取代理认证信息失败: {e}")
proxyAuth = None
# 3. 拼接代理 URL
proxy_url = f"socks5://{proxyAuth}@{proxyDomain}" if proxyAuth else None
print(f"代理地址: {proxy_url}")
# 4. 示例请求
target_url = "https://ipinfo.io/ip"
try:
proxies = None
if proxy_url:
proxies = {
"http": proxy_url,
"https": proxy_url
}
response = requests.get(
target_url,
proxies=proxies,
timeout=30,
headers={
"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)"
}
)
print(f"状态码: {response.status_code}")
print(f"响应内容: {response.text}")
except Exception as e:
print(f"请求失败: {e}")
// 1. 获取代理服务地址(仅从运行环境读取)
proxyDomain := os.Getenv("PROXY_DOMAIN")
// 2. 获取代理认证信息
proxyAuth := os.Getenv("PROXY_AUTH")
coresdk.Log.Info(ctx, fmt.Sprintf("代理认证信息: %s", proxyAuth))
// 3. 拼接代理 URL
var proxyURL string
if proxyAuth != "" {
proxyURL = fmt.Sprintf("socks5://%s@%s", proxyAuth, proxyDomain)
}
coresdk.Log.Info(ctx, fmt.Sprintf("代理地址: %s", proxyURL))
// 4. 创建 HTTP Client
httpClient := &http.Client{
Timeout: time.Second * 30,
}
// 5. 如果存在代理,配置 Transport
if proxyURL != "" {
proxyParsed, err := url.Parse(proxyURL)
if err != nil {
coresdk.Log.Error(ctx, fmt.Sprintf("解析代理URL失败: %v", err))
return
}
httpClient.Transport = &http.Transport{
Proxy: http.ProxyURL(proxyParsed),
TLSClientConfig: &tls.Config{
InsecureSkipVerify: true,
},
}
coresdk.Log.Info(ctx, "已配置代理客户端")
}
// 6. 示例业务请求
targetURL := "https://ipinfo.io/ip"
req, err := http.NewRequestWithContext(ctx, "GET", targetURL, nil)
if err != nil {
coresdk.Log.Error(ctx, fmt.Sprintf("创建请求失败: %v", err))
return
}
resp, err := httpClient.Do(req)
if err != nil {
coresdk.Log.Error(ctx, fmt.Sprintf("请求失败: %v", err))
return
}
defer resp.Body.Close()
body, _ := io.ReadAll(resp.Body)
ip := strings.TrimSpace(string(body))
coresdk.Log.Info(ctx, fmt.Sprintf("响应状态码: %d", resp.StatusCode))
coresdk.Log.Info(ctx, fmt.Sprintf("当前出口 IP: %s", ip))

步骤 1:安装依赖

Terminal window
npm install axios socks-proxy-agent

步骤 2:示例代码

import axios from 'axios'
import { SocksProxyAgent } from 'socks-proxy-agent'
// 1. 获取代理服务地址(仅从运行环境读取)
const proxyDomain = process.env.PROXY_DOMAIN
// 2. 获取代理认证信息
let proxyAuth = null
try {
proxyAuth = process.env.PROXY_AUTH || null
await coresdk.log.info(`代理认证信息: ${proxyAuth}`)
} catch (err) {
await coresdk.log.error(`获取代理认证信息失败: ${err.message}`)
}
// 3. 拼接代理 URL
const proxyUrl = proxyAuth ? `socks5://${proxyAuth}@${proxyDomain}` : null
await coresdk.log.info(`代理地址: ${proxyUrl}`)
// 4. 创建 HTTP Client
let axiosConfig = {
timeout: 30000,
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64)',
},
}
// 5. 如果存在代理,配置 Agent
if (proxyUrl) {
const agent = new SocksProxyAgent(proxyUrl)
axiosConfig.httpAgent = agent
axiosConfig.httpsAgent = agent
axiosConfig.proxy = false
await coresdk.log.info('已配置 SOCKS5 代理')
}
// 6. 示例业务请求
try {
const targetUrl = 'https://ipinfo.io/ip'
await coresdk.log.info(`开始请求: ${targetUrl}`)
const response = await axios.get(targetUrl, axiosConfig)
await coresdk.log.info(`响应状态码: ${response.status}`)
await coresdk.log.info(`当前出口 IP: ${response.data.trim()}`)
} catch (err) {
await coresdk.log.error(`请求失败: ${err.message}`)
}

下表列出了所有可用的执行节点代码及其对应的国家或地区名称。

代码国家/地区名称代码国家/地区名称代码国家/地区名称
AD安道尔AE阿联酋AF阿富汗
AG安提瓜和巴布达AI安圭拉AL阿尔巴尼亚
AM亚美尼亚AO安哥拉AQ南极洲
AR阿根廷AS美属萨摩亚AT奥地利
AU澳大利亚AW阿鲁巴AX奥兰群岛
AZ阿塞拜疆BA波黑BB巴巴多斯
BD孟加拉国BE比利时BF布基纳法索
BG保加利亚BH巴林BI布隆迪
BJ贝宁BL圣巴泰勒米BM百慕大
BN文莱BO玻利维亚BQ荷属加勒比
BR巴西BS巴哈马BT不丹
BW博茨瓦纳BY白俄罗斯BZ伯利兹
CA加拿大CC科科斯群岛CD刚果(金)
CF中非CG刚果(布)CH瑞士
CI科特迪瓦CK库克群岛CL智利
CM喀麦隆CN中国CO哥伦比亚
CR哥斯达黎加CU古巴CV佛得角
CW库拉索CX圣诞岛CY塞浦路斯
CZ捷克DE德国DJ吉布提
DK丹麦DM多米尼克DO多米尼加
DZ阿尔及利亚EC厄瓜多尔EE爱沙尼亚
EG埃及EH西撒哈拉ER厄立特里亚
ES西班牙ET埃塞俄比亚FI芬兰
FJ斐济FK福克兰群岛FM密克罗尼西亚
FO法罗群岛FR法国GA加蓬
GB英国GD格林纳达GE格鲁吉亚
GF法属圭亚那GG根西岛GH加纳
GI直布罗陀GL格陵兰GM冈比亚
GN几内亚GP瓜德罗普GQ赤道几内亚
GR希腊GS南乔治亚GT危地马拉
GU关岛GW几内亚比绍GY圭亚那
HK香港HM赫德岛HN洪都拉斯
HR克罗地亚HT海地HU匈牙利
ID印度尼西亚IE爱尔兰IL以色列
IM马恩岛IN印度IO英属印度洋
IQ伊拉克IR伊朗IS冰岛
IT意大利JE泽西岛JM牙买加
JO约旦JP日本KE肯尼亚
KG吉尔吉斯斯坦KH柬埔寨KI基里巴斯
KM科摩罗KN圣基茨KP朝鲜
KR韩国KW科威特KY开曼群岛
KZ哈萨克斯坦LA老挝LB黎巴嫩
LC圣卢西亚LI列支敦士登LK斯里兰卡
LR利比里亚LS莱索托LT立陶宛
LU卢森堡LV拉脱维亚LY利比亚
MA摩洛哥MC摩纳哥MD摩尔多瓦
ME黑山MF圣马丁MG马达加斯加
MH马绍尔群岛MK北马其顿ML马里
MM缅甸MN蒙古MO澳门
MP北马里亚纳MQ马提尼克MR毛里塔尼亚
MS蒙特塞拉特MT马耳他MU毛里求斯
MV马尔代夫MW马拉维MX墨西哥
MY马来西亚MZ莫桑比克NA纳米比亚
NC新喀里多尼亚NE尼日尔NF诺福克岛
NG尼日利亚NI尼加拉瓜NL荷兰
NO挪威NP尼泊尔NR瑙鲁
NU纽埃NZ新西兰OM阿曼
PA巴拿马PE秘鲁PF法属波利尼西亚
PG巴布亚新几内亚PH菲律宾PK巴基斯坦
PL波兰PM圣皮埃尔PN皮特凯恩
PR波多黎各PS巴勒斯坦PT葡萄牙
PW帕劳PY巴拉圭QA卡塔尔
RE留尼汪RO罗马尼亚RS塞尔维亚
RU俄罗斯RW卢旺达SA沙特阿拉伯
SB所罗门群岛SC塞舌尔SD苏丹
SE瑞典SG新加坡SH圣赫勒拿
SI斯洛文尼亚SJ斯瓦尔巴SK斯洛伐克
SL塞拉利昂SM圣马力诺SN塞内加尔
SO索马里SR苏里南SS南苏丹
ST圣多美SV萨尔瓦多SX荷属圣马丁
SY叙利亚SZ斯威士兰TC特克斯和凯科斯
TD乍得TF法属南部TG多哥
TH泰国TJ塔吉克斯坦TK托克劳
TL东帝汶TM土库曼斯坦TN突尼斯
TO汤加TR土耳其TT特立尼达
TV图瓦卢TW台湾TZ坦桑尼亚
UA乌克兰UG乌干达UM美国边远岛
US美国UY乌拉圭UZ乌兹别克斯坦
VA梵蒂冈VC圣文森特VE委内瑞拉
VG英属维尔京VI美属维尔京VN越南
VU瓦努阿图WF瓦利斯和富图纳WS萨摩亚
XK科索沃YE也门YT马约特
ZA南非ZM赞比亚ZW津巴布韦