搭建基于golang的IP代理服务golang-proxy
# 搭建基于golang的IP代理服务golang-proxy
本文讲述一个开源的IP代理服务golang-proxy的搭建步骤。IP代理服务有商业的,若不想花钱,只能寻找开源的服务自己来搭建。但是很多开源的IP代理服务几乎无法使用,本文介绍的这个开源项目有在实际项目中实践过,感觉不错。
# 1. 目录结构
如下是已经部署好的程序目录结构,ipProxy是程序根目录:
IDC:: root@uy01-05-v03:~# tree ./ipProxy/
./ipProxy/
├── config.yml
├── golang-proxy_linux_amd64
├── source
│ ├── nimadaili.com.https.yml
│ ├── nimadaili.com.http.yml
│ ├── xiladaili.com.https.yml
│ └── xiladaili.com.http.yml
└── start.sh
1 directory, 7 files
IDC:: root@uy01-05-v03:~#
config.yml
是配置文件,用于配置数据库信息
IDC:: root@uy01-05-v03:~# cat ./ipProxy/config.yml
MYSQL:
HOST: "192.168.10.48"
PORT: "3306"
USER: "recipe"
PASS: "recipe1234"
DB: "ip_proxy"
CHARSET: "utf8mb4"
需要事先创建好数据库,然后配置到该配置文件中。
官网文档对config.yml的说明 (opens new window)
golang-proxy_linux_amd64为程序的可执行文件
可以从官网 (opens new window)下载源码,并编译成可执行程序。source目录下存放的是数据源配置
直接从项目源码 (opens new window)中拷贝到服务器上即可
IDC:: root@uy01-05-v03:~# cat ./ipProxy/source/nimadaili.com.https.yml
# "."命名开头的文件将不会被载入
page:
entry: "http://www.nimadaili.com/https/?page=1"
template: "http://www.nimadaili.com/https/?page={page}"
from: 1
to: 2000
selector:
iterator: ".fl-table tr"
ip: "td:nth-child(1)"
port: ""
category:
parallelnumber: 3
delayRange: [10, 30]
interval: "@every 10m"
debug: true
IDC:: root@uy01-05-v03:~# cat ./ipProxy/source/nimadaili.com.http.yml
# "."命名开头的文件将不会被载入
page:
entry: "http://www.nimadaili.com/http/?page=1"
template: "http://www.nimadaili.com/http/?page={page}"
from: 1
to: 2000
selector:
iterator: ".fl-table tr"
ip: "td:nth-child(1)"
port: ""
category:
parallelnumber: 3
delayRange: [10, 30]
interval: "@every 10m"
debug: true
IDC:: root@uy01-05-v03:~# cat ./ipProxy/source/xiladaili.com.https.yml
# "."命名开头的文件将不会被载入
page:
entry: "http://www.xiladaili.com/https/1/"
template: "http://www.xiladaili.com/https/{page}/"
from: 0
to: 2000
selector:
iterator: ".fl-table tr"
ip: "td:nth-child(1)"
port: ""
category:
parallelnumber: 3
delayRange: [10, 30]
interval: "@every 10m"
debug: true
IDC:: root@uy01-05-v03:~# cat ./ipProxy/source/xiladaili.com.http.yml
# "."命名开头的文件将不会被载入
page:
entry: "http://www.xiladaili.com/http/1/"
template: "http://www.xiladaili.com/http/{page}/"
from: 0
to: 2000
selector:
iterator: ".fl-table tr"
ip: "td:nth-child(1)"
port: ""
category:
parallelnumber: 3
delayRange: [10, 30]
interval: "@every 10m"
debug: true
IDC:: root@uy01-05-v03:~#
- start.sh是程序启动脚本
因为程序启动需要启动多个服务,为了启动方便,将启动命令统一使用一个shell脚本来管理。
IDC:: root@uy01-05-v03:~# cat ./ipProxy/start.sh
nohup /root/ipProxy/golang-proxy_linux_amd64 -mode=producer >/dev/null 2>&1 &
nohup /root/ipProxy/golang-proxy_linux_amd64 -mode=consumer >/dev/null 2>&1 &
nohup /root/ipProxy/golang-proxy_linux_amd64 -mode=assessor >/dev/null 2>&1 &
nohup /root/ipProxy/golang-proxy_linux_amd64 -mode=service >/dev/null 2>&1 &
IDC:: root@uy01-05-v03:~#
# 2. 参考资料
官方英文文档 (opens new window) 官方中文文档 (opens new window) 再推荐一个开源IP代理服务henson/proxypool (opens new window),该项目的start数要比golang-proxy多,而且更新频繁,但是当时在部署时遇到些问题,所以就搁置了,以后有时间了再继续研究下。
上次更新: 2021-03-24 18:12:06