余温旧梦-王世彪的博客
关注公众号
  • 开发桌面程序
  • javascript教程
  • css样式
  • vuejs
  • 部署免费CDN
  • SEO搜索引擎优化
  • vuepress教程
  • redis分布式缓存
  • Golang
  • PHP
  • Python
  • Java
  • NodeJs
  • tomcat
  • ELK
  • Mysql数据库
  • Nosql数据库
  • C/C++底层开发
  • 音视频/流媒体
  • linux服务器
  • nginx服务器
  • 容器技术
  • 负载均衡
  • 项目管理
  • 持续集成
  • 大数据
  • 微信公众号运营
  • markdown用法
赞一个
友链
联系作者

王世彪

努力做个影响他人滴人
关注公众号
  • 开发桌面程序
  • javascript教程
  • css样式
  • vuejs
  • 部署免费CDN
  • SEO搜索引擎优化
  • vuepress教程
  • redis分布式缓存
  • Golang
  • PHP
  • Python
  • Java
  • NodeJs
  • tomcat
  • ELK
  • Mysql数据库
  • Nosql数据库
  • C/C++底层开发
  • 音视频/流媒体
  • linux服务器
  • nginx服务器
  • 容器技术
  • 负载均衡
  • 项目管理
  • 持续集成
  • 大数据
  • 微信公众号运营
  • markdown用法
赞一个
友链
联系作者
  • 分布式缓存

  • 分布式存储

  • mysql

  • postgresql

  • mongodb

  • c或c++

  • golang

    • 环境配置

    • 基础

    • 单元测试

    • 后台管理脚手架

    • web框架gin

    • web框架echo

    • web框架GoFrame

    • 微服务框架go-micro

    • 微服务

    • 接口管理

    • orm框架gorm

    • 开源论坛

    • 爬虫

      • golang爬虫框架gocolly用法
      • 搭建基于golang的IP代理服务golang-proxy
        • 1. 目录结构
        • 2. 参考资料
  • php

  • java

  • nodejs

  • python

  • tomcat

  • elk

  • 音视频流媒体

  • 后台
  • golang
  • 爬虫
王世彪
2021-03-11
目录

搭建基于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多,而且更新频繁,但是当时在部署时遇到些问题,所以就搁置了,以后有时间了再继续研究下。

#golang#爬虫
上次更新: 2021-03-24 18:12:06
golang爬虫框架gocolly用法
centos安装php多版本管理工具phpbrew

← golang爬虫框架gocolly用法 centos安装php多版本管理工具phpbrew→

最近更新
01
mysql创建用户
04-09
02
golang错误处理最佳实践
03-17
03
基于proto文件生成rpc接口定义文档
03-11
更多文章>
Theme by Vdoing | Copyright © 2019-2022 王世彪 | MIT License
冀ICP备19016776号-1
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式