51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

搭建基于golang的IP代理服务golang-proxy

# 搭建基于golang的IP代理服务golang-proxy {#搭建基于golang的ip代理服务golang-proxy}

本文讲述一个开源的IP代理服务golang-proxy的搭建步骤。IP代理服务有商业的,若不想花钱,只能寻找开源的服务自己来搭建。但是很多开源的IP代理服务几乎无法使用,本文介绍的这个开源项目有在实际项目中实践过,感觉不错。

# 1. 目录结构 {#_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. 参考资料 {#_2-参考资料}

官方英文文档 (opens new window) 官方中文文档 (opens new window) 再推荐一个开源IP代理服务henson/proxypool (opens new window),该项目的start数要比golang-proxy多,而且更新频繁,但是当时在部署时遇到些问题,所以就搁置了,以后有时间了再继续研究下。

赞(2)
未经允许不得转载:工具盒子 » 搭建基于golang的IP代理服务golang-proxy