解决方案:网站设计,完善自动采集算法
优采云 发布时间: 2022-12-07 00:54解决方案:网站设计,完善自动采集算法
在当今互联网的海量数据中,爬虫是不可或缺的。现在的互联网数据越来越大。虽然不同领域有细分,有的领域不能跨终端,但改变不了体量越来越大的事实。很多时候,我们不知道是否存在一个好的项目。除非你的产品非常出名,否则,在互联网的狂潮中,你只是淹没其中的一粒沙。连一个泡沫都没有破。
而搜索引擎就是为了找到这些优秀的网站而诞生的。但在搜索引擎看来,即使是超级算法、超级计算机、超级模型,也不能满足现在的互联网收录。一些常见的站点,一些常见的内容,他都采集了,甚至收录几百万,几千万。但并不是所有的记录都有意义。也就是说,之前的收录已经过期,不再有任何意义。因为它们不能产生价值,所以那些收录是无用的收录。而这些收录是从爬虫中获取的。爬行动物如何获得这些信息?
爬虫是搜索引擎的探路者。在互联网上,他按照自己的既定规则不断寻找超链接,然后将内容一层层、一层一层地复制。找到内容后,他自己整理对比,将有用的信息记录在自己的数据库中,舍弃无用的或重复性高的。经过一段时间的积累,这些数据的体量是相当大的,一些流行的收录数据可能有几百、几千,甚至过亿。如果这些数据都来自同一个站点,或者大部分都来自同一个站点,那么这个站点,在搜索引擎中,这个关键词就会排名比较靠前。下次有人来搜索引擎搜索这个关键词时,这个站点就会显示在更高的位置。
这是一个大概的思路,当然实际操作会比这个复杂很多。比如如何在这几百万条记录中按照一定的权重对这些数据进行排序。哪些正反面,哪些关键词进来可以显示,哪些不显示等等。估计单单拍摄搜索的算法中概念很多,比如二分法,哪个可以有一定机会提高网站搜索速度。也可能是分布式数据库,每个数据库只查询部分数据,然后进行整合。当然如果有缓存,比如redis这样的接口,我们可以在比较短的时间内获得最大的收益。
解决方案:盗站与采集,分析及反制之术PHP实现
一般来说,只要你当过站长,应该都不知道文章采集吧?
网站小偷,官方接触不久,他也牛逼,稍微配置一下,一个功能好,资源丰富的网站是他自己的...
这就是网站站长的方便,是站长的困惑,也是Web2.0时代很多编辑的痛苦、无奈,甚至愤怒吧?
允许合法的采集是很正常的,是一个很方便的工具(我经常用),但是未经同意的滥用却大大打击了很多热心作者的心……
其实很早以前就关注过普通网页内容的处理,因为https的非对称加密成本太高,在国内也不常用——即使是需要一定安全性的网站。巧合的是,我发现经过简单的处理,可以彻底解决网站盗用和非法采集的问题(如果让别人采集,不用这个技术就好了)。
我写了一个程序包,用法可以从里面的test.php中了解到,在doc/design.txt中解释了程序对策的分析和设计。发出去分享一下。。。如果你发现使用中的bug愿意告诉我,可以邮件联系我,或者在这里留言。谢谢
附上设计说明,方便无法下载文档的朋友。
[代码]
介绍:
窃取程序,俗称网站小偷程序,是分析目标网站html源码,使用query和
替换方法是窃取目标 网站 主要内容的程序。
网站采集,顾名思义,是指在目标网站上选取文章、图片、flash等内容的方法
行为,采集程序可以自动化和批处理这种行为。因为需要共享资源,所以这个高
无效的 采集 行为在许多 网站 中很普遍。但与此同时,缺点是没有有效的方法
未经同意的非法采集可以被屏蔽。
针对上述两个程序的行为,通过分析其工作原理,巧妙设计,本程序有望解决
这个由来已久的问题。
---------------------------------------------- --------------------------
工作原则:
Press:工作原理的设计是根据目标问题的具体情况来设计的,所以如果想明白为什么要采用
使用这种方法,可以参考下面关于网站盗窃原理和采集程序的解释。
1、浏览器请求指定文本时,服务器端对文章的内容进行异化处理(加密),浏览
接收方收到后,通过Javascript还原(解密)显示。
2. 解密密钥是和正文一起传输的,所以必须对密钥进行“模糊处理”才能制作出目标程序
程序(即网站黑客和 采集 程序)很难定位和获取密钥。
3.原件网站的唯一标识信息必须附在key上,这样如果文章不是直接从原件浏览
自网站以来,Javascript中的解密是错误的(即文章毫无意义)。
4、可以选择增加用户浏览时解密操作的行为事件。
即:用户根据页面提示输入验证密钥或者只触发特定操作,Javascript的解密
仅有效。同时可以加入干扰操作。如果干扰操作被触发,密钥也会失效。
在:
第一条:是必要的依据;
第二条:针对采集(目前的采集程序还不能深入处理Js代码);
第三条:打击盗版站。
第四条:如果以后采集程序实现了深度处理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())获取一次master key!
因为这段Js代码特征太明显,需要用简单的算法对这段代码进行改造。做这个
段代码还具有随机字符串。这样就达到了“隐晦”结构的目的。通常,
二次变换的解码只执行一次(或很少执行),因此其执行开销基本可以忽略不计。
上面的描述看似复杂,但其实是一个重点:使用几种必要的方法来隐藏混在源代码中的秘密。
key,导致无法通过解析自动获取key。
这个设计是这个包的核心,否则很难彻底达到目的。
>>用户参与
如果采集程序集成了Js引擎,采集器就可以使用Js
引擎提前执行一次,获取到正常数据后再进行分析。
增加用户参与的机制(事件触发或输入验证密钥)利用了更多的随机用户操作因素。
如果验证密钥是用户输入的,则源码中Js程序的内部关联被彻底打破,从而自动运行root
这是不可能的。
当然,让用户参与进来是不友好的,用户参与的程度取决于防盗、反挖矿的重要性。
又或者,巧妙的“参与式”设计可以在很大程度上弱化这种不友好?
>> 执行流程
本程序可以嵌入到尚未采用该技术的网站系统中。
对于 网站 使用模板,在模板中:
采用前:文本数据---显示在容器中
采用后:拦截数据---加密,变量存储---在容器中以Js方式展示
对于直接硬编码的系统,需要在程序代码中做类似的处理。
加密-Js构建(PHP):
>> 创建管理器对象(T2box)获取加密密钥;
>> 使用该密码加密文本;
>> 将密文赋值给Js变量;
>> 输出Js代码:基础代码、变量赋值、启动、干扰、显示等。
解密-显示(Js):
>> 获取认证密钥;
>> 开始函数解码生成解密密钥;
>> 解密显示Js变量中的文本。
>>优点和缺点
由于实际的文本数据是加密的,搜索引擎对页面的分析可能是一个问题,但目前
有了各种 SEO 技术,这几乎不是问题。在页面上可用
包括关键字、介绍,或直接插入收录关键字或页面介绍等的图层。
---------------------------------------------- --------------------------
小偷程序原理:
小偷程序通常直接请求原网站的内容,然后替换页眉标志性内容和页脚版权
信息,以及一些广告等。或者干脆截取原网页中有用的数据作为自己的网站
资源,同时提供可定制的页眉、页脚、广告和其他控件。从而达到窃取网站的目的。
它有一个缺点:如果修改原来的网站,需要重新分析网站代码,重写程序。
这样的程序一般都很简单,代码量也少,但也仅此而已。与原网站改版的风险相比,
它的成本是可以接受的。
(在本程序中,内容页的文字是变形的,所以无法直接“截取”使用信息——
“拦截”是加法,“替换”是减法)
采集计划理由:
采集一般来说,首先,对于一个有文章内容页面链接列表的页面,分析提取一个有用的文章页面的URL,