
手把手教你用Swift处理代理IP的JSON数据
咱们做网络开发经常要处理代理IP数据,特别是用Swift开发macOS/iOS应用时。很多新手拿到代理IP的JSON数据就犯愁,今天咱们就用ipipgo的代理服务来实战教学,保准你看完就能上手。
一、JSON数据怎么变成文件?
假设咱们从ipipgo拿到了这样的代理IP数据:
{
"proxy_list": [
{
"ip": "203.34.56.78",
"port": 8080,
"location": "东京",
"expiry": "2024-05-20"
},
{
"ip": "198.12.34.56",
"port": 3128,
"location": "新加坡",
"expiry": "2024-05-22"
}
]
}
保存到本地的核心代码其实特简单:
func saveProxyList(jsonData: Data) {
let fileManager = FileManager.default
do {
let docsURL = try fileManager.url(for: .documentDirectory,
in: .userDomainMask,
appropriateFor: nil,
create: true)
let fileURL = docsURL.appendingPathComponent("ipipgo_proxies.json")
try jsonData.write(to: fileURL)
print("文件保存成功 → (fileURL.path)")
} catch {
print("保存时出错:(error.localizedDescription)")
}
}
二、实战场景:代理IP怎么用起来
咱们用ipipgo的代理IP时,常见三个场景:
| 场景 | 解决方案 |
|---|---|
| 数据采集防封禁 | 每次请求随机换IP |
| 自动化测试 | 固定地区IP测试 |
| 多地区请求 | 按需选择所在地IP |
举个栗子,用Alamofire发起带代理的请求:
import Alamofire
let proxy = ipipgo.getRandomProxy() // 从ipipgo获取随机代理
let session = Session(
configuration: URLSessionConfiguration.ephemeral,
serverTrustManager: nil
)
let proxyEndpoint = URL(string: "https://api.target-site.com")!
session.request(proxyEndpoint,
parameters: ["key": "value"],
proxy: .http(host: proxy.ip, port: proxy.port))
.responseJSON { response in
// 处理响应数据
}
三、常见坑点与避雷指南
坑1:JSON解析失败?检查三点:
- 数据是不是真JSON格式(用在线工具验证)
- 字段名有没有拼写错误
- 时间格式是否统一
坑2:代理IP连不上?试试:
// 先测试单个代理可用性
func testProxy(ip: String, port: Int) {
let testURL = URL(string: "https://ipinfo.io/json")!
// ...发起测试请求...
}
四、推荐用ipipgo的三大理由
- IP池每天更新,失效自动替换
- 支持按需选择地区/运营商
- 提供使用量监控面板(这个超实用)
QA常见问题
Q:JSON文件保存后打不开?
A:检查文件路径权限,iOS记得开沙盒权限
Q:代理请求超时怎么办?
A:建议在ipipgo后台切换TCP/UDP协议试试
Q:怎么自动切换地区?
A:可以定时调用ipipgo的地区API更新IP池
五、进阶技巧:动态加载代理
结合Combine框架实现IP自动更新:
var cancellables = Set<AnyCancellable>()
ipipgo.fetchProxyList()
.sink(receiveCompletion: { _ in },
receiveValue: { proxies in
self.proxyList = proxies
self.saveToLocal(proxies)
})
.store(in: &cancellables)
最后提醒大伙儿,处理代理IP时别忘了异常处理,网络请求这事儿说崩就崩。用ipipgo的话,他们的SDK自带重试机制,这点确实省心不少。有啥不明白的,多看官方文档准没错~

