array(2) { ["docs"]=> array(10) { [0]=> array(10) { ["id"]=> string(3) "428" ["text"]=> string(77) "Visual Studio 2017 单独启动MSDN帮助(Microsoft Help Viewer)的方法" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(8) "DonetRen" ["tagsname"]=> string(55) "Visual Studio 2017|MSDN帮助|C#程序|.NET|Help Viewer" ["tagsid"]=> string(23) "[401,402,403,"300",404]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400964" ["_id"]=> string(3) "428" } [1]=> array(10) { ["id"]=> string(3) "427" ["text"]=> string(42) "npm -v;报错 cannot find module "wrapp"" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "zzty" ["tagsname"]=> string(50) "node.js|npm|cannot find module "wrapp“|node" ["tagsid"]=> string(19) "[398,"239",399,400]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400760" ["_id"]=> string(3) "427" } [2]=> array(10) { ["id"]=> string(3) "426" ["text"]=> string(54) "说说css中pt、px、em、rem都扮演了什么角色" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(12) "zhengqiaoyin" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511400640" ["_id"]=> string(3) "426" } [3]=> array(10) { ["id"]=> string(3) "425" ["text"]=> string(83) "深入学习JS执行--创建执行上下文(变量对象,作用域链,this)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "Ry-yuan" ["tagsname"]=> string(33) "Javascript|Javascript执行过程" ["tagsid"]=> string(13) "["169","191"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511399901" ["_id"]=> string(3) "425" } [4]=> array(10) { ["id"]=> string(3) "424" ["text"]=> string(30) "C# 排序技术研究与对比" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "vveiliang" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(8) ".Net Dev" ["catesid"]=> string(5) "[199]" ["createtime"]=> string(10) "1511399150" ["_id"]=> string(3) "424" } [5]=> array(10) { ["id"]=> string(3) "423" ["text"]=> string(72) "【算法】小白的算法笔记:快速排序算法的编码和优化" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(9) "penghuwan" ["tagsname"]=> string(6) "算法" ["tagsid"]=> string(7) "["344"]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511398109" ["_id"]=> string(3) "423" } [6]=> array(10) { ["id"]=> string(3) "422" ["text"]=> string(64) "JavaScript数据可视化编程学习(二)Flotr2,雷达图" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "chengxs" ["tagsname"]=> string(28) "数据可视化|前端学习" ["tagsid"]=> string(9) "[396,397]" ["catesname"]=> string(18) "前端基本知识" ["catesid"]=> string(5) "[198]" ["createtime"]=> string(10) "1511397800" ["_id"]=> string(3) "422" } [7]=> array(10) { ["id"]=> string(3) "421" ["text"]=> string(36) "C#表达式目录树(Expression)" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(4) "wwym" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(4) ".NET" ["catesid"]=> string(7) "["119"]" ["createtime"]=> string(10) "1511397474" ["_id"]=> string(3) "421" } [8]=> array(10) { ["id"]=> string(3) "420" ["text"]=> string(47) "数据结构 队列_队列实例:事件处理" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(7) "idreamo" ["tagsname"]=> string(40) "C语言|数据结构|队列|事件处理" ["tagsid"]=> string(23) "["246","247","248",395]" ["catesname"]=> string(12) "数据结构" ["catesid"]=> string(7) "["133"]" ["createtime"]=> string(10) "1511397279" ["_id"]=> string(3) "420" } [9]=> array(10) { ["id"]=> string(3) "419" ["text"]=> string(47) "久等了,博客园官方Android客户端发布" ["intro"]=> string(288) "目录 ECharts 异步加载 ECharts 数据可视化在过去几年中取得了巨大进展。开发人员对可视化产品的期望不再是简单的图表创建工具,而是在交互、性能、数据处理等方面有更高的要求。 chart.setOption({ color: [ " ["username"]=> string(3) "cmt" ["tagsname"]=> string(0) "" ["tagsid"]=> string(2) "[]" ["catesname"]=> string(0) "" ["catesid"]=> string(2) "[]" ["createtime"]=> string(10) "1511396549" ["_id"]=> string(3) "419" } } ["count"]=> int(200) } 222 谨慎爬虫! - 爱码网

谨慎爬虫!

今天中午吃饭的路上,遇到爬虫组的同事,相互寒暄了几句。听同事说,最近与竞争对手公司的工程师暗地里打得热火朝天。爬虫与反爬的黑科技操作有来有往,数据曲线走势图从 9 点钟上班开始,跌宕起伏,彼此利用技术手段互相切磋,你攻我防,直到六点钟下班结束,曲线恢复正常平静波动。

这就是大公司负责爬虫和反爬的程序员一天的工作内容,保证各自的爬虫数据曲线正常绘制。

这里我想说的不是这个,而是想和大家聊聊 爬虫的合法性问题

前段时间,北京海淀法院审结了一起利用“爬虫”技术侵入计算机信息系统抓取数据的刑事案件。这也是全国首例利用“爬虫”技术非法入侵其他公司服务器抓取数据,进而实施复制被害单位视频资源的案件。

事情是这么个事情,我们长话短说。被告公司指示自己的员工利用技术手段伪造身份,绕过被害单位的服务器反爬措施,爬取了大量视频数据文件,并造成被害单位损失 2 万元的技术服务费。 后经过审判,海淀法院最终以非法获取计算机信息系统数据罪判处被告单位罚金二十万元,同时四名被告公司直接负责爬虫的主管也被处以有期徒刑九个月至一年不等的刑罚及人民币三到五万元。

爬虫有风险,行事需谨慎啊。

爬虫其实很常见,尤其在互联网公司,竞品之间彼此利用一些见不得光的黑科技手段互爬数据用于商业分析和决策,是再正常不过的一件事。

而且,像很多初学 Python 等爬虫技术的程序员,拿网络上现有的一些数据来练手,甚至写成博客教程,开源出去,都很常见。没有被追究法律责任的话,还好,一旦触及商业机密、用户隐私等敏感信息,被追究起来,欲哭无泪。

最最常见的,当属我们平时使用的搜索引擎,百度、谷歌搜索等。除了自己的数据,搜索引擎爬遍互联网上所有的数据信息,强大自己的检索能力。当然,内容提供者们都很乐意被他们爬取,能得到加权优先展示的话,那就更好了。

话说回来,那么说,爬虫到底是不是一门违法的技术手段呢?

答案并没有那么绝对,就看你爬的是什么内容,有没有侵害别人的利益了。这就好比你拿着一把菜刀,用作烧饭做菜那就没问题,要是做伤人放火的买卖,那就是违反法律了。

然而不幸的是,很多人并不清楚法律对于违法爬虫行为的定义是什么。这里有一些参考,希望能够帮助到大家。

首先,采集站点一般都会有版权说明或者内容协议之类的法律声明性文件。站主们都会在这里面写明哪些信息受法律保护,比如 Logo 图标、品牌名称、版权文件等。还有是否可以用于商业。动手爬虫之前,你一定要仔细阅读其中的内容。

其次,Robots.txt 文件,中文全称名字叫“网络爬虫排除标准”,俗称爬虫协议,也叫机器人协议。网站一般会通过 Robots 协议告诉爬客们哪些页面内容可以抓取,哪些是不能抓取的。获取 robots.txt 文件的方式很简单,通过“域名地址 + robots.txt”的方式就可以访问。

举个例子,获取淘宝网站的爬虫协议,就是下面这个链接:

https://www.taobao.com/robots.txt

打开地址,内容如下:

谨慎爬虫!

其实很简单,就是告诉各个搜索引擎,在我的网站哪些内容允许爬取,哪些是要被拦截掉的。感兴趣的话,你可以了解一下爬虫协议背后的远离。

除此之外,再就是利用自己的法律尝试判定哪些内容是受商业保护的,属于万万不能碰的敏感类信息。比如,国际机密,用户隐私,交易记录等。

爬虫技术手段千万变化,正所谓道高一尺,魔高一丈,世上没有不透风的墙。理论上讲,互联网上你能看到的所有数据都能利用爬虫手段自动批量获取。平时工作和生活当中,涉及爬虫内容时,一定要小心谨慎。没事还好,一旦犯事,后悔莫及。

推荐阅读

好消息!统一推送联盟正式公布时间表!

那个专解 Bug 的 AI 神经网络,竟然删代码跑路了!

Tinker 负责人送给 Android 工程师的尤物

财政部新规,年终奖到手能拿多少,你心里应该有点 C 数!

谨慎爬虫!

站在程序员的角度,和你继续来年的唠嗑儿

相关文章: