今天登陆百度统计,在自己一个垂直网站的在受访域名,发现了一个不是自己域名的统计,最近30天统计到了14个IP,对方要么采集,要么镜像,就点开了对方网站看了下,居然算是同行,利用我的网站达到引流的目的,然后进行售卖商品,我辛辛苦苦手更,都不舍得放广告。
解决方案
1、判断是否网站源码泄露
其实最担心的是网站源文件泄露,如果web文件+mysql数据库都泄露出去,说明有网站本身有很大的安全隐患,上半年朋友的网站里jquery.js曾发现后门,被上传了PHP木马。
当打开网站后发现网站的风格模板和我的不一样,排除掉源文件泄露。
2、判断是否被扒皮
网站模板被扒皮也很正常,只是有些粗心大意的忘记去掉了统计代码,还是和第一项一样,风格不一样。
3、网页源代码
那就查看源代码吧,查看的时候心里一惊,跟我的网站也太像了吧,包括代码的格式都和我一样,为什么外观不一样。
结果发现了这个东西
<script src="/503.js"></script>
放到了<!DOCTYPE html>前面
而503.js的代码如下
var aa=Math.round(Math.random()*8+1); var ss = '<div id="showcloneshengxiaon" style="height: 100%; width: 100%; background-color: rgb(255, 255, 255); background-position: initial initial; background-repeat: initial initial;"><ifr'+'ame scrolling="yes" marginheight=0 marginwidth=0 frameborder="0" width="100%" width="14'+'00" height="100%" src="http://www.****.com/yigan/TAF.html"></iframe></div><style type="text/css">html{width:100%;height:100%}body {width:100%;height:100%;overflow:hidden}</style>'; eval("do"+"cu"+"ment.wr"+"ite('"+ss+"');"); try{ setInterval(function(){ try{ document.getElementById("div"+"All").style.display="no"+"ne"; }catch(e){} for(var i=0;i<document.body.children.length;i++){ try{ var tagname = document.body.children[i].tagName; var myid = document.body.children[i].id; if(myid!="iconDiv1" && myid!="showcloneshengxiaon"){ // if(tagname!="center"){ document.body.children[i].style.display="non"+"e"; //} } }catch(e){} } },100); }catch(e){}
在<head>后面发现了如下代码
script>var V_PATH="/";window.onerror=function(){ return true; };</script>
然后每个https的网址都被?代替,例如href="?/uploads/202001/888888.jpg的样子
接着就是最后在</html>后面的代码
<script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?28e71346fdf6b5b3a097c8484bf5775f"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
4、判断是采集还是镜像
这个办法很简单,那就再发布一篇文章,然后修改文章ID即可。
发布后,在对方网站更改ID,发现内容是同步更新的。
按照正常采集一般都是有间隔的,不可能实现实时的抓取入库,基本判断为镜像。
5、解决镜像的办法
一般还是用JS最为方便,这个方法也用不过很多次,就一下代码吧
host = window.location.host; var site= "www.youurl.org"; if (host!=site ) { alert(window.location.host+':为非法镜像网站,为了您的安全正在带您回到原网站'); location.href='http://'+site+window.location.pathname; }
这个代码保存为JS,然后网页调用即可,如果访问域名不是这个网址,那么会进行弹出对话框提示,然后跳转到原始站点。
我为了方便直接加到了现有已调用某个JS文件的最后,然后上传覆盖。
再次刷新对方文章,并没有出现对话框,代码应该没错,继续排查。
6、再次出现意外
发现对方将部分css js文件同步了本地,所以我在我服务器修改的,没办法解决。
图片类的没有同步下载,每次有新的内容更新,已经存在的文件不下载,新的文件会自动下载同步。
修改模板文件,再次增加一个js,进行内容页调用,然后再发布文章。
然后返回对方网站刷新,发现果然出现了提示框,并提示返回原始站点。
7、陷入难题
本来为自己解决了一个问题而高兴,时间晚了就睡觉了,结果第二天发现新发布的文章,即使有JS也不弹出对话框和跳转了,那就不做代码级的优化了,直接上大杀器吧。
8、屏蔽IP,阿西吧!
为了判断对方的真实IP,那就设置个陷阱吧。
a,发布一篇新的文章,然后不用点开,鼠标移上去看下文章Id
b,去对方网站,直接更换文章id,打开文章
c,回到管理后台删除文章
d,打开站点响应日志,复制到写字板,然后搜索文章id
e,果不其然发现几个异常IP,其中有一个居然是百度蜘蛛?
Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)"
不对啊,百度那会这么快访问我的网站,即便我做了主动提交,也不会即时,但是这个UA正确,后面的标准也是对的,不过这个IP很可以,是新加坡腾讯云,马脚漏出来的,那就nslookup ip命令反解ip,baiduspider的hostname以 *.baidu.com 或*.baidu.jp 的格式命名,非 *.baidu.com 或 *.baidu.jp 即为冒充,反解后发现妥妥的李鬼。
顺便Ping了下对方域名,也是这个iP,这算是对上了,顺手查下这个IP,以前居然被用作手游服务器,直接用150.109.55.0/24屏蔽IP段吧,虽然误伤了腾讯云该网段一些服务器,但是对普通用户访问和搜索引擎收录没有影响。
9、以绝后患
屏蔽IP端后,再次发布新文章进行测试,发现新的文章在对方文章不再显示。
只显示以下代码
<script src="/503.js"></script><script> var _hmt = _hmt || []; (function() { var hm = document.createElement("script"); hm.src = "https://hm.baidu.com/hm.js?28e71346fdf6b5b3a097c8484bf5775f"; var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(hm, s); })(); </script>
这才是正确的,到此解决问题可以告一段落,顺手测试了以前的文章,发现打开速度比未屏蔽IP之前满了很多很多.
斩草除根,以绝后患,一个IP肯定不能解决问题,那就深挖下。
1、发现该镜像站的链接用新窗口打开是一个新的域名,居然是还是香港的ip,那就不好意思了,43.249.2.*IP段屏蔽。
2、通过域名查询whois信息,有些隐藏了邮箱,还好西部数码的还可以用pengpos*@outlook.com,为了隐私,最后个字母打码
4、查询这些域名的IP,然后再次封禁IP段,本次工作就告一段落了,以后在观察吧!
后话
现在的爬虫技术已经成为一个方向,爬虫如果按照既定的规则自动抓取网络信息,是可以大大提升效率的工具,但是目前所谓打着爬虫的旗号,进行大数据的采集、处理、分析、清洗、售卖,大数据作恶,对于我们普通人来说,是很难捉摸到的:我们既不认识这些敌人,更不知道他们在哪儿。爬虫爬得欢,监狱要坐穿;数据玩的溜,牢饭吃个够。大数据,一定会给人类生活带来便利;我也丝毫不惮以最坏的恶意,去揣测人心。
技术本身并无原罪,但是人心有。
希望以后可以出一些插件之类的方便咱们搞原创的个人博客~~保护咱们的成果
虽然版权意识在慢慢苏醒,但总归有些人利益熏心。
爬虫学的好,局子进的早。
爬虫玩得好,致富少不了。
666
思路很好,厉害!