> ## Documentation Index
> Fetch the complete documentation index at: https://docs.cafescraper.com/llms.txt
> Use this file to discover all available pages before exploring further.

# http/socks5代理的使用

### **🌐 代理环境说明**

为确保脚本在全球范围内稳定访问目标网站，平台会在运行时提供一条加密通道（代理服务器）。\
**脚本无需自行购买或维护代理**，只需 读取平台注入的代理认证信息，并在 HTTP 请求中正确配置即可。

### **📌 代理配置说明**

* **协议**：`SOCK5`
* **域名**：`proxy-inner.cafescraper.com:6000`
* **认证方式**：
  * **环境变量名**：`PROXY_AUTH`
  * **格式**：`username:password`
* **费用说明**：**平台内置提供，无需额外付费或单独配置**

### **🐍 Python 示例**

python复制代码

```python theme={null}
import os
import requests

# 1. 代理服务地址
proxyDomain ="proxy-inner.cafescraper.com:6000"

# 2. 获取代理认证信息（平台自动注入）
try:
    proxyAuth = os.environ.get("PROXY_AUTH")
print(f"代理认证信息: {proxyAuth}")
except Exceptionas e:
print(f"获取代理认证信息失败: {e}")
    proxyAuth =None

# 3. 拼接代理 URL
proxy_url =f"socks5://{proxyAuth}@{proxyDomain}"if proxyAuthelseNone
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 Exceptionas e:
print(f"请求失败: {e}")
```

***

### **🧱 Go 示例**

go复制代码

```go theme={null}
// 1. 代理服务地址
proxyDomain :="proxy-inner.cafescraper.com:6000"

// 2. 获取代理认证信息
proxyAuth := os.Getenv("PROXY_AUTH")
cafesdk.Log.Info(ctx, fmt.Sprintf("代理认证信息: %s", proxyAuth))

// 3. 拼接代理 URL
var proxyURLstring
if proxyAuth !="" {
	proxyURL = fmt.Sprintf("socks5://%s@%s", proxyAuth, proxyDomain)
}
cafesdk.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 {
		cafesdk.Log.Error(ctx, fmt.Sprintf("解析代理URL失败: %v", err))
return
	}

	httpClient.Transport = &http.Transport{
		Proxy: http.ProxyURL(proxyParsed),
		TLSClientConfig: &tls.Config{
			InsecureSkipVerify:true,// 测试环境可用，生产建议关闭
		},
	}

	cafesdk.Log.Info(ctx,"已配置代理客户端")
}

// 6. 示例业务请求
targetURL :="https://ipinfo.io/ip"
req, err := http.NewRequestWithContext(ctx,"GET", targetURL,nil)
if err !=nil {
	cafesdk.Log.Error(ctx, fmt.Sprintf("创建请求失败: %v", err))
return
}

resp, err := httpClient.Do(req)
if err !=nil {
	cafesdk.Log.Error(ctx, fmt.Sprintf("请求失败: %v", err))
return
}
defer resp.Body.Close()

body, _ := io.ReadAll(resp.Body)
ip := strings.TrimSpace(string(body))

cafesdk.Log.Info(ctx, fmt.Sprintf("响应状态码: %d", resp.StatusCode))
cafesdk.Log.Info(ctx, fmt.Sprintf("当前出口 IP: %s", ip))
```

***

### **🟢 Node.js 示例**

> 依赖说明
>
> bash复制代码
>
> ```shellscript theme={null}
> npm install axios socks-proxy-agent
> ```

js复制代码

```javascript theme={null}
import axiosfrom'axios'
import {SocksProxyAgent }from'socks-proxy-agent'

// 1. 代理服务地址
const proxyDomain ='proxy-inner.cafescraper.com:6000'

// 2. 获取代理认证信息
let proxyAuth =null
try {
    proxyAuth = process.env.PROXY_AUTH ||null
await cafesdk.log.info(`代理认证信息: ${proxyAuth}`)
}catch (err) {
await cafesdk.log.error(`获取代理认证信息失败: ${err.message}`)
}

// 3. 拼接代理 URL
const proxyUrl = proxyAuth
    ?`socks5://${proxyAuth}@${proxyDomain}`
    :null

await cafesdk.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 =newSocksProxyAgent(proxyUrl)
    axiosConfig.httpAgent = agent
    axiosConfig.httpsAgent = agent
    axiosConfig.proxy =false// 必须关闭 axios 默认代理
await cafesdk.log.info('已配置 SOCKS5 代理')
}

// 6. 示例业务请求
try {
const targetUrl ='https://ipinfo.io/ip'
await cafesdk.log.info(`开始请求: ${targetUrl}`)

const response =await axios.get(targetUrl, axiosConfig)

await cafesdk.log.info(`响应状态码: ${response.status}`)
await cafesdk.log.info(`当前出口 IP: ${response.data.trim()}`)
}catch (err) {
await cafesdk.log.error(`请求失败: ${err.message}`)
}
```

### **⚠️ 注意事项**

***

* ❗ **不要硬编码代理账号或密码**
* ❗ \*\*始终优先使用平台注入的 \*\*`PROXY_AUTH`
* ❗ Node.js 中必须设置 `proxy = false`，否则 SOCKS 代理不会生效
