网页内容防抓取的非主流思路

最近做的一个站点,里面有一些的信息是不想被别人抓取,然后就想了这么个非主流的防抓取方式,想的不是特别的严谨,但是还是能简单的抵挡一下哪些二流的程序员的,OK,那就开始说一下思路吧。

思路就是,随机生成一批随机字符,插入到想要防止抓取的文字中,然后记录下这批随机字符,传入JS,在前端用JS将这些字符替换掉。

看一下我的实践:
randstr方法就是生成随机字符用的
ORG.JavaScriptPacker 是引入的一个JS压缩类

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
//随机字符加密
import("@.ORG.JavaScriptPacker");
$linestr = "''";
for($i=0;$i<20;$i++){
$str = randstr(rand(4,5));
$randstr[] = $str;
$linestr = "'".$str."',".$linestr;
}
$script = '$(function(){
source = $(".wrapper").html();
var randstr = ['.$linestr.'];
news = source ;
for(str in randstr){
var regS = new RegExp(randstr[str],"g");
news=news.replace(regS,"")
}
$(".wrapper").html(news);
});';
$packer = new JavaScriptPacker($script, 10);
$ScriptExec = $packer->pack();
$this->assign("scriptexec",$ScriptExec);

然后将这些PHP生成的随机字符随机的插入不想被抓取到的文字中。

这段代码是ThinkPHP中粘出来的,如果不懂可以基本立即就是把最终的$ScriptExec给打印出来(放入script中),即可,替换的内容是class = wrapper 的内容。

这个方法再开头也说了,只能稍作抵挡,真想抓取到实际内容也非常简单,
1、找到源码里执行的那段替换script代码,
2、解密这段script代码,找到其中的随机字符
2、抓取到相应的内容后自己再做替换