凌晨两点,赵磊的电话把俞飞鸿从睡梦中叫醒。
她摸到床头柜上的手机,眯着眼睛看了一眼来电显示,接起来。
赵磊很少在这个时间打电话,上一次是系统升级数据迁移的时候,再上一次是服务器崩溃的那个晚上。
“俞总,服务器出问题了。”赵磊的声音很紧,像是一根绷到极限的弦,“从昨晚十点开始,流量突然暴涨,比正常峰值高出三倍多。
一开始我以为是大规模用户访问,但后来发现不对——这些请求的规律太明显了,不是真人在操作。”
俞飞鸿坐起来,把被子掀到一边,伸手开了床头灯。
灯光有些刺眼,她眯了一下眼睛。
“你判断是什么?”
“爬虫。
有人在用自动化脚本抓我们的数据,频率非常高,每秒几百次请求。
服务器cpU使用率已经冲到百分之八十多了,再这样下去,撑不了几个小时就会挂。”
“能确定是谁吗?”
“Ip地址段分散在全国各地,很像是用了代理池。
但从抓取的数据特征来看,对方主要抓的是航班信息和酒店价格——这两类数据,对我们的竞争对手最有价值。”
俞飞鸿没有说话。
她不需要赵磊把名字说出来。
“你现在在哪儿?”
“在公司。
小李和小张都在,我们三个人轮班盯着。”
“我四十分钟到。”
“俞总,你不用——”
“四十分钟。”
她挂了电话,从床上下来,赤脚踩在地板上,凉意从脚底升上来,让她彻底清醒了。
她换了一身衣服,拿起桌上的包和手机,走到门口的时候停了一下,回头看了一眼床头柜上那个没有喝完的水杯,然后关灯出了门。
出租车在北京的深夜街道上开得很快,路两边的路灯一盏一盏地往后退,橘黄色的光在车窗上一闪一闪的。
俞飞鸿坐在后座上,手机握在手心里,犹豫了一下,没有打给陈浩——现在太晚了,他明天还有戏。
她把手机翻过来翻过去,最后还是按下了拨出键。
电话响了两声,接了。
“飞鸿?”陈浩的声音有些沙哑,但意识是清醒的,“出什么事了?”
“你怎么知道出事了?”
“你这个时候打电话,肯定出事了。”
俞飞鸿把赵磊说的情况转述了一遍。
恶意爬虫、高频抓取、服务器负载飙升、Ip地址段分散。
她说得很快,但每一个细节都讲清楚了。
陈浩听完之后,沉默了两秒。
“你到医院了?”
“没有。
在去公司的路上。”
“你先听我说。
第一,让赵磊把异常流量的特征记录下来,包括时间、频率、Ip段、抓取的数据类型。
这些东西以后要做证据。
第二,不要急着把所有Ip都封掉,有些Ip可能是伪装过的真实用户,封错了会误伤正常访问。
先做限流,把对服务器的影响降到最低,然后再逐一排查。
第三,这件事背后是谁,你心里有数。
但他们不会留下直接的证据,你不需要现在就去对质,先把技术防线建起来。”
俞飞鸿把陈浩说的这三条在心里默念了一遍。
“好。”
“你到公司之后,让赵磊把流量日志发一份给我。
我这边也有个朋友是做网络安全的,我让他帮忙看看有没有什么漏洞。”
“好。”
“飞鸿。”
“嗯。”
“你路上注意安全。
到了给我发个消息。”
“好。”
挂了电话,俞飞鸿把手机握在手心里,靠在车窗上,看着窗外的夜色。
北京的深夜不像白天那样喧嚣,马路上的车很少,偶尔有一辆出租车从旁边驶过,尾灯在黑暗中拖出一道红色的光痕,很快就消失了。
她闭上了眼睛,但没有睡着。
脑子里一直在转——爬虫、流量、服务器、证据、防线。
这些词像是一颗一颗的珠子,被一根线串在一起,那根线就是携程。
到了公司,技术区的灯全亮着。
赵磊坐在服务器前面,屏幕上是实时流量监控的图表,绿色的曲线正常地起伏着,但上面覆盖着一层密密麻麻的红色小点,每一个红点都是一次异常请求。
小李在旁边的工位上盯着另一台屏幕,小张在角落里打电话,声音压得很低,像是在跟什么人确认技术细节。
赵磊看到俞飞鸿进来,从椅子上站起来,指了指屏幕上的那些红点。
“从昨晚十点到现在,累计异常请求已经超过五十万次。
对方的手法很专业,请求间隔随机化,User-Agent也是轮换的,伪装得跟真实用户几乎一样。
如果不是频率太高,我们很难分辨出来。”
“能定位到对方的服务器吗?”
“很难。
他们用了多层代理,真实的来源Ip被隐藏了。
但从数据特征来看,对方对携程的数据结构非常熟悉,知道哪些接口返回的数据最有价值。
这不是一个陌生的攻击者,是对我们很了解的人。”
俞飞鸿在赵磊旁边坐下来,看着屏幕上那些密密麻麻的红点。
它们像是某种病毒的扩散图,从一个点开始,蔓延到整个屏幕,越来越多,越来越密。
她看了十几秒,把目光移开。
“赵磊,你按我说的做。
第一,把异常流量的特征全部记录下来,时间、频率、Ip段、抓取的数据类型,每一条都要存。
第二,先做限流,不要全封。
把每Ip每秒钟的请求次数限制在十次以内,超过的自动返回空数据。
第三,你和小李小张分三班,二十四小时盯着。
我不希望服务器在半夜挂了没人知道。”
赵磊在笔记本上飞快地记下来,写完之后抬起头。
“限流的话,会不会误伤真实用户?有些用户操作很快,一秒内可能会连续点好几个按钮。”
“你先按十次来设,观察几个小时。
如果误伤的情况严重,再调整到十五次。
关键是不能让服务器挂掉。”
赵磊点了点头,转过身开始敲键盘。
俞飞鸿站起来,走到技术区外面的走廊里,拿出手机,给陈浩发了一条消息:“到了。
赵磊在做了。”
消息发出去之后,她靠在走廊的墙上,等着。
走廊里的声控灯灭了,她没有跺脚,让自己站在黑暗中。
大概过了十几秒,手机震动了。
“好。
流量日志发过来了吗?”
“赵磊在准备。
十分钟后发到你邮箱。”
“收到。
你找个地方坐一下,不要站着。
你的腰不好。”
俞飞鸿看着那行字,嘴角在黑暗中微微翘了一下。
她走回技术区,在赵磊旁边的空椅子上坐下来,把手机放在桌上,屏幕朝上。
反爬虫系统的升级工作比预想的要复杂得多。
赵磊带着团队连续工作了三天三夜,写出了一个新的访问频率控制系统,部署在服务器的最前端。
每一秒钟,系统都要处理几百个请求,对每一个请求做实时分析——
Ip地址、请求频率、访问路径、User-Agent、行为模式——
全部算一遍,在零点几秒内做出判断:是真实用户还是爬虫?是放行还是拦截还是限流?
第一天,系统上线之后运行了不到两个小时,就出现了问题。
限流阈值设得太低了,一些真实用户在短时间内连续操作被误判为爬虫,页面打不开,投诉电话打了进来。
赵磊紧急把阈值从十次调到了十五次,又调到了二十次,观察了两个小时,误伤的情况减少了,但服务器的负载又上去了。
他在阈值和服务器的承载能力之间反复调整,像是在走一根细钢丝,往左偏一点会摔,往右偏一点也会摔。
【跪求礼物,免费的为爱发电也行!】