一般的说,只要做过站长,大概都不会不知道文章采集这档子事吧?
网站小偷,正式接触还是不久前的事,其也牛B,稍加配置,一个功能不错、资源丰富的网站便属于自己了…………。
这是网站站长们的便利,也是站长们的困惑,更是Web2.0时代众多编辑者的痛苦、无奈、甚或愤怒吧?
被允许的合法采集是正常的,那是一个非常便利的工具(我就经常用),但未经同意的滥采却极大的打击了众多热心创作的Author们的心……
其实比较早就关注对普通网页内容的处理,因为https的非对称加密开销过大,而且国内也不常用——既便是需要一定安全性的网站。刚好,发现经过简单的处理,可以十分彻底的解决盗站和非法采集的问题(如果允许别人采,不用本技术就成了)。
写了个程序包,用法可以从其中的test.php中了解,程序反制的分析和设计在doc/design.txt中有说明。发出来,共享了.........如果你在使用中发现Bug,又愿意告诉我的话,可通过邮箱联系,或者在这里留言也行。谢谢
附上设计说明,以方便不能下载文档的朋友。
简介:
盗站程序,即一般所谓网站小偷程序,是通过分析目标网站的Html源码,采用查询和
替换的方式,偷梁换柱窃取目标网站主体内容的一种程序。
网站采集,顾名思义是指对目标网站上的文章、图片、flash等内容进行采摘的一种
行为,采集程序可以让这种行为实现自动化和批量处理。因为资源需要共享,这种高
效的采集行为广泛存在于许多网站上。但同时,负面的作用是并没有一种有效的方法
可以阻止未经同意的非法采集。
针对上面两种程序的行为,通过分析其工作原理,运用巧妙的设计,本程序有望解决
这一长期存在的问题。
----------------------------------------------------------------------------
工作原理:
按:工作原理的设计是依据目标问题的具体情况而来,所以如果希望明白为什么要采
用这样的方法,可参阅后面关于盗站和采集程序的原理说明。
1、在浏览器请求指定的正文时,服务器端对文章内容进行异化处理(加密),浏览
器接收后,由Javascript恢复(解密)并显示。
2、解密密钥是与正文一同传送的,所以必须对密钥进行“隐晦”构造,使得目标程
序(即盗站和采集程序)难以定位并取得密钥。
3、密钥中必须附带有原始网站的唯一性标识信息,使得如果文章不是直接浏览自原
始网站,Javascript中的解密就是错误的(即文章无含义)。
4、作为选项,可加入用户浏览时解密操作的行为事件。
即:用户根据页面的提示输入验证钥或仅仅触发特定的操作,Javascript的解密
才有效。同时,可加入干扰操作,如果干扰操作被触发,密钥也会失效。
其中:
第1条:是必须的基础;
第2条:对抗了采集(目前的采集程序尚未能深度处理Js代码);
第3条:对抗了盗站。
第4条:如果将来采集程序实现了深度处理Js的能力,此可对抗。
设计要点:
1、异化和恢复处理的算法必须十分高效。
2、接口应该足够简单,要能够用在支持服务器端脚本语言的模板中。
----------------------------------------------------------------------------
设计参考:
>>加密算法
服务器端(PHP)和浏览器端(JS)的算法是等同的。
考虑效率,仅对文字进行处理。
算法:采用对原始字符串中字符进行交换移位的方式加密。
效率:Js环境中直接支持Unicode,所以效率比较高;服务器端的PHP由于不直接支持
国际化,所以需要预先转换到UTF-16(iconv)。
>>密钥构造
实际用于加密文本的密钥由“主密钥”和“验证钥”合成。
主密钥是由一个标识串(标识原始网站)和一个随机长度的随机字符串连接而成。
验证钥是一个区分大小写的随机字符串,类似验证码(默认4个字符,可设置)。
主密钥与验证钥的合成采用“洗牌”算法,验证钥相当于几次抬牌。
网站标识串要唯一地标识原始站点,并且它不能直接存在于Js中——应该由Js自动获
取,可以采用域名和URL组合构成:
Js端: document.domain、document.URL 中截取;
PHP端:$_SERVER['SERVER_NAME']、$_SERVER['REQUEST_URI'] 中截取。
所以,在Js端,主密钥需要执行一次eval(或Function()一下)才能获取!
因为这段Js代码有太过明显的特征,所以必须用一个简便的算法变形这段代码。使这
段代码也具有随机字符串的特性。这样就达成了“隐晦”构造的目的。通常情况下,
对二次变形的解码只会执行一次(或者很少),所以其执行开销基本可以忽略。
上面的描述看似复杂,其实就一个重点:用几种必要的方法,隐藏夹杂在源码中的密
钥,使得密钥不可能通过分析自动获得。
这种设计是本程序包的核心所在,否则难以彻底达成目的。
>>用户参与
如果采集程序集成Js引擎,对于采用“直接解密浏览”用法的网页,采集器可以用Js
引擎预先执行一次,得到正常数据后再分析。
加入用户参与的机制(事件触发或输入验证钥),是利用了更为随机的用户操作因素。
如果是由用户输入验证钥,则彻底断开了源码中Js程序的内部关联,使得自动操作根
本不可能。
当然,让用户参与进来并不界面友好,用户参与度如何,取决于防盗防采的重要性。
或者,巧妙的“参与”设计可以很大程度弱化这种不友好?
>>执行流
本程序可以嵌入尚未采用该技术的网站系统中。
对于采用模板的网站,在模板中:
采用之前:文本数据 --- 容器中显示
采用之后:截取数据 --- 加密、变量存储 --- 容器中Js方式显示
对于直接硬编码的系统,需要在程序代码中作类似处理。
加密-Js构造(PHP):
>> 创建管理器对象(T2box),获取加密密钥;
>> 用该密码加密文本;
>> 密文赋值到Js变量;
>> 输出Js代码:基本代码、变量赋值、启动、干扰、显示等。
解密-显示(Js):
>> 获取验证钥;
>> 启动函数解码生成解密密钥;
>> 解密显示Js变量中的文本。
>>利与弊
由于加密了实际的文本数据,所以搜索引擎对页面的分析会是一个问题,但在目前
已存在各种SEO技术的情况下,这基本可以不成为一个问题了。如可以在页面<meta>
中包含关键字、简介,或直接插入一个包含关键字或页面简介的层等。
----------------------------------------------------------------------------
小偷程序原理:
小偷程序一般是直接请求原始网站的内容,然后替换掉页头标志性内容,页尾的版权
信息,以及一些广告等。或者单纯截取原始网页中对自己有用的数据作为自己网站的
资源,同时自身提供可定制的页头、页尾、广告等控制。从而实现盗取网站的目的。
它有一个缺点:如果原始网站改版,则需重新分析网站代码,改写程序。
这样的程序一般很简单,代码量较少,不过也唯其如此,相对于原始网站改版的风险,
它的成本才是可接受的。
(在本程序中,内容页里的文本被变形处理,所以信息也不能直接“截取”采用——
“截取”做的是加法,“替换”是做减法)
采集程序原理:
采集一般是首先针对某个有文章内容页链接列表的页面,分析提取出有用文章页的URL,
然后分析文章页面的源代码,提取出标题、正文、作者、文章来源等信息。
文章页URL列表的获得可以有多种方法:如列表页分析,手工录入,批量生成等。在这
方面做得比较好的有火车采集器(我就常用它),所以在文章列表页中做反采集的设计
意义不大。真正要反制采集,还必须从内容页上着手。
※ 在inc/global.php中可以修改全局配置。
分享到:
相关推荐
基于Flume的分布式日志采集分析系统设计与实现 Flume是一种分布式日志采集系统,可以实时地采集和处理大量日志数据。该系统基于Flume、Elasticsearch和Kibana等技术手段,能够对海量日志数据进行实时采集、处理和...
"基于声卡的LabVIEW数据采集与分析系统设计" 本文提出了一种基于声卡的数据采集与分析系统设计,利用声卡DSP技术和LabVIEW多线程技术,提出了一种廉价、简单、界面友好的数据采集与分析方案。本系统具有实现简单、...
在本设计中,我们提出了一种基于Matlab的语音信号采集与分析系统,该系统可以低成本地实现语音信号的实时采集,并利用Matlab强大的数值计算和信号处理功能高精度地完成语音信号的分析工作。 Matlab提供了强大的数据...
振动信号采集与分析是工业设备状态监测和故障诊断中的关键技术。LabVIEW(Laboratory Virtual Instrument Engineering Workbench)是一款由美国国家仪器公司(NI)开发的图形化编程环境,广泛应用于科研、工程和教育...
基于 Python 的豆瓣电影数据采集与分析可视化 本文档介绍了基于 Python 的豆瓣电影数据采集与分析可视化技术。该技术使用网络爬虫技术来采集豆瓣电影的短评数据,然后对数据进行清洁和预处理,最后使用 WordCloud ...
相比之下,国内的研究主要集中在利用虚拟仪器技术,尤其是LabVIEW软件,来开发噪声采集分析系统,以实现更广泛的普及和应用。 1.3 课题的研究内容及章节安排 本课题主要研究如何利用LabVIEW虚拟仪器技术,设计并...
"基于matlab的数字语音信号的采集及频谱分析" 本资源主要介绍了基于Matlab的数字语音信号的采集及频谱分析,涵盖了语音信号的采集、频谱分析、滤波器设计和语音信号处理等内容。通过Matlab的信号分析工具箱,可以...
【标题】"基于PHP的狂盗小说爬虫采集"是一个涉及网络数据抓取与处理的项目,使用PHP作为主要编程语言。PHP是一种广泛应用于Web开发的脚本语言,以其灵活性和易学性著称,尤其适合处理服务器端的任务。在这个项目中,...
在提供的文件“振动采集与分析.vi”中,很可能包含了上述流程的完整实现,用户可以打开这个VI(虚拟仪器)文件,查看和学习如何在LabVIEW中实现振动信号的采集和分析。而“振动分析说明.txt”则可能提供了更详细的...
在IT行业中,Python语言因其简洁明了的语法和强大的库支持,已经成为数据采集与分析的首选工具。本主题将深入探讨“Python数据采集与分析”的关键知识点,包括Python科学计算、Python网络数据采集以及如何利用Python...
JavaScript(JS)防采集插件在PHP环境中的应用主要涉及到网站内容保护、SEO优化和网络...开发者需要根据自身网站的需求,选择合适的防采集策略,并持续关注最新的防采集技术和反制措施,以应对不断进化的网络爬虫技术。
Kubernetes日志采集与分析是当前容器化部署与运维中非常关键的一个环节,由于Kubernetes自身的分布式特性,使得日志管理变得更加复杂。本文分享了关于Kubernetes日志管理的最佳实践,由阿里云日志服务技术专家元乙...
【PHP采集程序与宋正河】 在互联网信息爆炸的时代,数据采集成为了获取网络资源的重要手段,PHP作为一款广泛使用的服务器端脚本语言,被广泛应用在网页数据抓取领域。PHP采集程序,顾名思义,是利用PHP编写的一类...
在“labview 基于NI采集卡信号采集分析系统”中,我们探讨的是如何利用LabVIEW与NI的采集卡配合,构建一个强大的信号采集和分析系统。 首先,我们要理解LabVIEW的工作原理。LabVIEW的核心是其图形化编程语言G...
《CVI信号采集分析系统与NI采集卡详解》 在现代科技领域,数据采集系统扮演着至关重要的角色,尤其在工业自动化、科学研究以及实验室测试中。本文将详细探讨CVI(Controlled Vocabulary Interface)信号采集分析...
《C# 数据采集系统:智能采集与数据分析的全方位解析》 C# 数据采集系统是一种高效、灵活的工具,用于从互联网、数据库、文件系统等不同数据源获取信息,并进行智能化处理和分析。在这个整套源码中,我们将深入探讨...
豆瓣电影网与艺恩票房网的电影数据采集与分析及可视化源码.zip豆瓣电影网与艺恩票房网的电影数据采集与分析及可视化源码.zip豆瓣电影网与艺恩票房网的电影数据采集与分析及可视化源码.zip豆瓣电影网与艺恩票房网的...
声卡数据采集与分析软件是计算机技术与音频处理领域中的一个重要工具,主要应用于声音信号的获取、处理和分析。在本案例中,该软件是由LabVIEW(Laboratory Virtual Instrument Engineering Workbench)编程语言编写...