人在网上“爬”,哪有不挨“刀”。
反爬的首选第一件事就是封IP,爬虫选手第一件事就是上代理。
So…
一直代理IP资源都是紧俏资源,甚至花钱都不一定买得到好的。
于是有些需求就有了,IP代理系统是不是也可以搞一个?
当然,这样的需求早就有解决方案了。
一键启动XX代理,一键使用XX云申请100台主机启动代理…
这类方案差不多应有尽有了。
然而此类的方案问题在于,代理IP绑定在服务器上的,
流量出口总是很容易被查到是XX云厂商等等的。
那么,如果我们用手机客户端(Android) + 4G作为流量出口呢?
So…
Echo 4G代理系统应运而生。
项目地址: https://github.com/virjar/echo
是我的老熟人 https://github.com/virjar(渣总) 开源,
PS: 最近我边用边维护,修修Bug
Echo
Echo是一个分布式的代理共享和管理系统,以长链接的方式连接多个运行在任意位置的终端,并将终端的网络资源整理为一套代理ip集群系统。
echo提供整体的鉴权、流量监控、quota控制的功能。
- Echo天然支持复杂网络环境,所以可以将代理终端部署在手机(甚至树莓派等终端设备)
- Echo支持代理ip统一的集群管理,所以可以作为ADSL拨号的服务资源的的统一管理出口。使用ADSl使用统一的,稳定的ip出口提供代理服务(而不需要沉重的redis负担)
- Echo支持sdk,目前提供完善的android APK和gradle依赖(这个作用你懂的 )
- Echo分布式设计,天然集群版,无资源瓶颈上限。各节点自动双通道HA热备,无单点风险。
- Echo全程NIO设计,对资源消耗少,支持并发高(所以代码难度大,可以买个好价钱),理论上代理最大吞吐占满节点带宽。
- Echo系统扩展能力强,原则是echo的底层设计使得echo支持任意网络协议转发(udp、tcp、vpn等),且任意协议支持不需要终端升级
- 终端命令控制,你可以通过http接口将特定指令下发到对应终端.实现如shell执行、ip重播等需求。
PS:请java高级工程师以下(初级和中级)同学不要尝试Echo服务端的研究 ,请java初级(包括不会java语言的同学)不要尝试部署Echo服务端。(渣总原话
嗯?被劝退了?有宝哥在啊。
虽然系统部署比较复杂,不过我们有docker-compose神器啊。
部署服务端
部署方法一:
git clone https://github.com/virjar/echo/;
cd echo;
docker-compose up -d;
部署方法二:
新建一个文件夹 echo-deploy,新建 docker-compose.yaml,填入下面docker-compose配置
version: '3'
services:
echo-mysql-local:
image: mysql:5.7
container_name: echo-mysql-local
ports:
- 4444:3306
volumes:
- ./mysql/data:/var/lib/mysql
- ./mysql/echo_db_create.sql:/docker-entrypoint-initdb.d/echo_db_create.sql
environment:
MYSQL_ROOT_PASSWORD: "echo"
command: --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
echo-meta-server:
image: registry.cn-beijing.aliyuncs.com/virjar/echo-meta-server:latest
container_name: echo-meta-server
ports:
- 4826:8080
environment:
SPRING_DATASOURCE_USERNAME: root
SPRING_DATASOURCE_PASSWORD: echo
SPRING_DATASOURCE_URL: jdbc:mysql://echo-mysql-local:3306/echo?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull&useSSL=false&autoConnect=true
depends_on:
- echo-mysql-local
echo-fe-ui:
image: registry.cn-beijing.aliyuncs.com/virjar/echo-fe-ui:20210430
container_name: echo-fe-ui
ports:
- 8999:80
volumes:
- ./echo-fe-nginx.conf:/etc/nginx/conf.d/default.conf
environment:
API_ENTRY: http://echo-meta-server:8080
depends_on:
- echo-meta-server
echo-nat-server:
image: registry.cn-beijing.aliyuncs.com/virjar/echo-nat-server:latest
container_name: echo-nat-server
ports:
- 12000-12010:12000-12010
- 5699:5699
- 5698:5698
environment:
API_ENTRY: http://echo-meta-server:8080
SERVER_ID: echo-nat-server-001
MAPPING_SPACE: 12000-12010
depends_on:
- echo-meta-server
echo-http-proxy-server:
image: registry.cn-beijing.aliyuncs.com/virjar/echo-http-proxy-server:latest
container_name: echo-http-proxy-server
ports:
- 13000-13020:13000-13020
- 5710:5710
environment:
API_ENT