记一个很奇怪的需求——有关爬虫服务器的IP轮换

最近公司的一台winserver系统的爬虫服务器,因为同一个ip一直爬取数据,触发了目标网站的风控机制导致爬不到数据了。为此出了个对策,就是通过更换ip爬取,减少出发风控机制的概率。

分成三个步骤解决
一、准备一个或多个额外ip并绑定在ECS实例上
二、编写路由变更脚本
三、添加定时任务

下边说下具体流程
一、准备一个或多个额外ip并绑定在ECS实例上
做一下讲解,阿里云的ECS可以绑定多个虚拟网卡,用图来说明就是下边这样,每个ECS可以绑定弹性网卡数量不一样,根据所购买的ECS规格可绑定数量为2-8个不等,需提前了解好。

在这里插入图片描述
根据买的ECS实例规格,创建对应支持数量的弹性网卡,然后将购买的弹性ip绑定在弹性网卡中,将弹性网卡再绑定在ECS实例上,就搞定了,这样服务器上就会显示出新的互联网连接设备了。

二、路由变更脚本

提前声明,此脚本需通过系统定时任务调用,而此脚本应用了bash shell语法,所以windows是不支持的,需要先安装个git,让windows可以调用git的git-bash功能来使之支持bash语法

git下载地址:https://git-scm.com/download/win

安装时很简单,选好路径无脑下一步

注意添加环境变量,git-bash是在git的根目录,不是在git\cmd 下边,建议两个都添加上
先通过cmd输入route print 打印一下网卡编号
在这里插入图片描述

如图所示,编号13是有线网卡,编号12是无线网卡,没错,这是我笔记本的网卡,只是举个例子

脚本代码如下

#!/bin/bash
if [ `route print 0.0.0.0|grep 192.168.1.1|wc -l` -ne 1 ];then
	route delete 0.0.0.0 mask 0.0.0.0 192.168.1.1 IF 12
	exit
fi
if [ `route print 0.0.0.0|grep 192.168.1.1|wc -l` -eq 1 ] && [  `route print 0.0.0.0|grep 192.168.1.1|awk '{print $4}'` == '192.168.1.7' ];then
	route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 IF 12
	route delete 0.0.0.0 mask 0.0.0.0 192.168.1.1 IF 13
	exit
fi
if [ `route print 0.0.0.0|grep 192.168.1.1|wc -l` -eq 1 ] && [  `route print 0.0.0.0|grep 192.168.1.1|awk '{print $4}'` == '192.168.1.15' ];then
	route add 0.0.0.0 mask 0.0.0.0 192.168.1.1 IF 13
	route delete 0.0.0.0 mask 0.0.0.0 192.168.1.1 IF 12
	exit
fi

解释一下脚本含义

如果侦测到双网卡同时在线,那就去掉一个路由,我这里去掉的是无线的路由

如果检测到有线网卡的路由在线,添加无线网卡的路由,去掉有线的

如果检测到有线网卡的路由在线,添加有线网卡的路由,去掉无线的

脚本目的就是通过切换路由策略,来切换网卡所绑定的ip地址,实现自动ip地址切换的功能

注意:实际使用中脚本中的192.168.1.1 字段换成实际场景中网卡绑定的网关地址,IF后边的网卡编号也与实际相符

三、添加定时任务

以win7为例,winserver大同小异

在这里插入图片描述

常规处给定时任务起个名字
在这里插入图片描述

触发器中选定选定一下开始执行的时间,间隔,和持续时间
在这里插入图片描述
“操作”中添加脚本
在这里插入图片描述
然后点确定,同时会提示输入用户密码,输入完密码确定后脚本会立刻生效一次。打开cmd输入route print会看到路由策略已经变了,如果是远程连接的,如果删掉的路由网卡是远程连接的ip所绑定的网卡的话,就会断线。没反应就从头检查问题,至此,功能实现,完结撒花。

猜你喜欢

转载自blog.csdn.net/qq_35855396/article/details/117991996