前言
为了防止代收邮件服务被加入邮件服务商的黑名单,而导致代收失败,将代收服务不定时的更换ip出口。
代理厂商
要想实现多Ip出口,只能购买代理厂商的资源。其中又分为国内厂商与国外厂商。国外厂商支持的协议多,但延迟普遍较大,且容易被GFW封禁,所以不在此次考虑范围内。国内的厂商多而杂,下面将列出一些比较。
厂商 | 代理类型 | 每天去重代理数 | 官网 | 其他说明 |
---|
蜻蜓代理 | HTTP/HTTPS | >15w | https://proxy.horocn.com/ | 隧道代理方式没有并发数限制 | 芝麻代理 | HTTP,HTTPS,SOCKs5 | 无 | https://zhimahttp.com/ | 不支持包年服务,不限制并发,不支持隧道模式 | 极光爬虫代理 | HTTP,HTTPS,SOCKs5 | 无 | http://jahttp.jiguangdaili.com/ | 隧道代理模式下,按流量购买套餐。 | 快代理 | HTTP,HTTPS,SOCKs5 | 15w(未去重) | https://www.kuaidaili.com/ | 隧道模式没有并发限制,按需选择带宽,白名单。 | 站大爷 | HTTP,HTTPS,SOCKs5 | 50w(未去重) | https://www.zdaye.com/ | 不支持隧道模式 | 星速云 | HTTP,HTTPS | 无 | xingsudaili.com | 隧道下无并发限制(价格较高) |
由于代收服务无法修改底层socket代码(使用第三方lib),而提取Ip池方式,需要定时更改系统代理软件配置,增加了不确定性。建议采用隧道代理模式,方便部署。
服务采用tcp协议,选取socks5代理。多维度对比下,选取快代理。
socks5
socks5类型的代理服务器在网络层级上是工作于应用层的会话层,很多流量都无法代理。此时则需要一个工具redsocks。
redsocks
This tool allows you to redirect any TCP connection to SOCKS or HTTPS proxy using your firewall, so redirection may be system-wide or network-wide.
部署安装
以下使用redsocks+iptables+socks5方式全局代理tcp协议。
系统环境centos7
- 安装libevent
yum install libevent libevent-devel -y
- 安装配置redsocks
git clone https://github.com/darkk/redsocks.git
cd redsocks/
make
echo 'base {
log_debug = on;
log_info = on;
log = "file:/tmp/reddi.log";
daemon = on;
redirector = iptables;
}
redsocks {
local_ip = 127.0.0.1;
local_port = 2080;
ip = tps146.kdlapi.com;
port = 20818;
type = socks5;
}' > redsocks.conf
注意: 替换ip = tps146.kdlapi.com;port = 20818;的配置为你的代理厂商的。
- 安装配置iptables
yum install -y iptables iptables-services
echo '#!/bin/bash
# Create new chain
iptables -t nat -N REDSOCKS
# Ignore LANs and some other reserved addresses.
iptables -t nat -A REDSOCKS -d 0.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 10.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 127.0.0.0/8 -j RETURN
iptables -t nat -A REDSOCKS -d 169.254.0.0/16 -j RETURN
#iptables -t nat -A REDSOCKS -d 172.16.0.0/12 -j RETURN
iptables -t nat -A REDSOCKS -d 192.168.0.0/16 -j RETURN
iptables -t nat -A REDSOCKS -d 224.0.0.0/4 -j RETURN
iptables -t nat -A REDSOCKS -d 240.0.0.0/4 -j RETURN
# Anything else should be redirected to port 2080
-A REDSOCKS -d proxy_server_ip -j RETURN
iptables -t nat -A REDSOCKS -p tcp -j REDIRECT --to-ports 2080
iptables -t nat -A OUTPUT -p tcp --dport 443 -j REDSOCKS
iptables -t nat -A OUTPUT -p tcp --dport 80 -j REDSOCKS
iptables -t nat -A OUTPUT -p tcp --dport 8503 -j REDSOCKS' > iptables-proxy-start.sh
echo 'iptables -F
iptables -X
iptables -Z
iptables -t nat -F
iptables -t nat -X
iptables -t nat -Z
killall redsocks' > iptables-proxy-stop.sh
8503为测试的出口地址,比如代收的110,143端口。
- 启动
systemctl start iptables
./redsocks -c redsocks.conf
sh iptables-proxy-start.sh
- 测试
三次访问使用的是不同的ip
|