- A+
Python编程语言我们并不陌生吧,在2017年底成了全球最受欢迎的编程语言,在众多的编程语言直升排名老大的位置,JAVA排名也才第三。下面给大家分享Python爬虫,“爬”特价机票、“爬”人脸识别监控、“爬”支付宝、“爬”12306、“爬”微信、爬论坛....那么网络爬虫这么厉害,网络监管机制空白吗?
网络爬虫、Python语言……这些高科技黑话你懂吗?懂,说明你可能是折扣秒杀高手;不懂,那你就要看看这篇文章了。或许今年再写年终总结时,用一个“爬虫”软件就可以一“爬”搞定,再也不用一页一页找材料了。
幕后黑手——
特价机票轻轻松松被“爬”走
近日,为春节出游做准备的老张正在各大航空公司网站抢购特价机票。然而,设置了闹铃、把家里网速带宽提高到100兆的她还是一无所获。而她的闺蜜却在某“爬虫”软件的帮助下,成功抢到特价机票。关键python代码如下:
这里所说的“爬虫”,是一个“收集控”,它在各大航空公司的网站收集低价机票,在每个时间每个航段之间对比,选出最便宜的。这对于人类来说是一项非常繁琐复杂的工作,但对于网络“爬虫”来说却可以迅速完成;“爬虫”又是一个“伪装者”,它收集到特价机票后仿冒真人用户抢订机票。
由于“爬虫”的效率远远超过正常的手动操作,导致通过正常操作几乎无法抢到票。代理公司抢到票后不会立即付款,他们会在航空公司允许的账期内,寻找真正客源,然后退订此前使用虚假客源身份预订的低价票,再使用真实身份信息进行订购,最后实现该低价票的加价转售。如果未能在规定账期内找到真正客源,代理公司会在订单失效前再追加虚假身份订单,继续“霸占”该低价票,直至找到真正客源售出为止,而普通用户在航企官网查看时却显示低价票已售罄。
其实,“爬虫”技术并不神秘,无非分为三步:“爬”上网页、“铲”下数据,最后进行加工清洗。
事实上,机票代理公司用“爬虫”抢特价票再加价售卖也不是秘密。在线票务服务公司携程的“反爬虫”专家在技术分享中透露,某网站的一个页面,每分钟的浏览量是1.2万,真实用户只有500个,“爬虫”流量占比为95.8%。很多业内人士也表示,即使在“爬虫”活动的淡季,虚假流量也占到订票网站总流量的50%,高峰期更是占到90%以上。
功能强大——
人脸识别监控都靠“爬”
“爬虫”技术刚刚出现时,并不是一个抢票工具,而是采集公开数据、然后进行分析使用的工具。爱济南App的研发者之一、舜网研发部主任李滨告诉记者,“爬虫”最早应用在搜索引擎领域比如谷歌、百度、搜狗等,因为每天需要抓取数百亿的网页,所以它们需要借助庞大的“爬虫”集群来实现搜索功能。这种信息采集过程很像爬虫或蜘蛛在网络上漫游,因此得名。Python 仅关键的25行代码就可以实现人脸识别,代码如下:# Get user supplied values
imagePath = sys.argv[1]
cascPath = sys.argv[2]
将图片和 cascade 名字作为命令行参数传入。我们会用 Abba 图片和 OpenCV 提供的默认 cascade 来人脸检测。
# Create the haar cascade
faceCascade = cv2.CascadeClassifier(cascPath)
现在,我们创建一个 cascade,并用人脸 cascade 初始化。这把人脸 cascade 导入内存,所以它随时可以使用。记住,该 cascade 只是一个包含人脸检测数据的 XML 文件。
# Read the image
image = cv2.imread(imagePath)
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
读取图片把它转化到灰度格式。
# Detect faces in the image
faces = faceCascade.detectMultiScale(
gray,
scaleFactor=1.1,
minNeighbors=5,
minSize=(30, 30),
flags = cv2.cv.CV_HAAR_SCALE_IMAGE
)
该函数做的就是检测人脸,是代码核心部分。所以,我们来过一遍选项。
DetectMultiScale 函数是一个检测物体的通用函数。我们在人脸 cascade 上调用它,它检测的就是人脸。第一个选项是灰度图片。
第二个是 scaleFactor。有的人脸离镜头近,会比其他人脸更大。ScaleFactor 对此进行补偿。
检测算法使用移动窗口来检测物体。在系统宣布检测到人脸之前,minNeighbors 会对当前其周围有多少物体进行定义。MinSize 给出每个窗口的大小。
我用的是这些领域的常用值。现实中,你会拿不同的值试验窗口尺寸、扩展因素等参数,直到找出最比较合适的那一个。
当该函数认为它找到一张人脸时,会返回一个矩形列表。下一步,我们会进行循环,直到它认为检测出了什么。
print "Found {0} faces!".format(len(faces))
# Draw a rectangle around the faces
for (x, y, w, h) in faces:
cv2.rectangle(image, (x, y), (x+w, y+h), (0, 255, 0), 2)
该函数返回四个值:矩形的 x 和 y 坐标,以及它的高和宽。我们用这些值和内置的 rectangle() 函数,画出矩阵。
cv2.imshow("Faces found" ,image)
cv2.waitKey(0)
随着人工智能时代的到来,网络“爬虫”已是大数据概念的重要组成部分。爬取对象也从一些种子起始网址扩充到整个互联网数据,比如新闻资讯、电商产品、折扣信息等。“爱济南App就是通过收集用户的阅读习惯,从日常爬取的内容中,进行筛选分析,然后再推荐给用户。”听说。一些12306车票余票信息,还有一些通过爬取淘宝和京东等网站的折扣信息,计算出最低价格推荐给群友。
“爬虫”还应用于市政舆情系统,通过爬取论坛、微博、微信内容,自动分析出色情、暴力等信息提交。除此之外,个人征信系统、医院智慧健康系统等都离不开“爬虫”。
大数据带火了网络“爬虫”,网络“爬虫”又带火了Python语言。现在用百度搜索“网络爬虫”,前几条都是Python语言培训广告。山东最新出版的小学信息技术六年级教材,新增了Python语言编写的内容;2018年的全国计算机二级考试,也新增了Python科目。
邪恶一面——
非法窃取信息沦为“黑暗武器”
老张终于明白,跟她抢票的根本不是人,而是技术黄牛。既然能抢机票,那么现在春运到了,一票难求,能不能抢12306的火车票?
李滨表示:“不能。飞机票因为有多家民航公司,同一航线、不同公司、不同时段,票价不同;但火车票目前只有铁路部门负责,同一线路票价固定,没有爬取的意义。”其实,“爬虫”的意义在于代替工人来分析和对比各大民航网站和在线平台的票价,通过数据分析得出最低价,而不是抢票。Python可以爬取12306的余票信息,快速抓取起点站到目标站的信息,给你分析转乘到达目标站最优方案。Python部分关键代码实现
大数据时代,“爬虫”有时会成为低成本获取数据的捷径,沦为“黑暗武器”。有财经媒体爆料,在现金贷行业,有的平台直接用“爬虫”窃取其他平台的用户注册信息和风控数据,类似于信用卡“以卡办卡”,如果你有别的信用卡,不用自己申请就给你发卡;你在某个现金贷平台注册填写的数据,有可能被别的平台“爬”出来,只需用户授权账号和密码,但这个授权你本人可能并不知情。
而最近几年被曝出的“爬虫”产品远远不止这些。某大数据公司的业务员称,公司最近开发了新项目,可爬取旅行网站、外卖平台、地图、共享单车等平台的个人信息,甚至可以定制化抓取,“拿到第一手鲜活原始数据”。
“爬”支付宝、“爬”微信、“爬”现金贷……“爬虫”看起来无所不能。
法律空白——
恶意“爬取”成为监管“灰色地带”
“新技术如果被非法或者不当应用,便会产生严重危害。互联网空间安全需要建立健全完善的保护体系,绝不能裸奔。”李滨说。
李滨介绍,目前的反爬技术有两种:一种是限制同一IP、同一电脑在一定时间内访问网站的次数,另一种是设置复杂的验证码机制,让机器“爬虫”不好识别。对航空公司来说,封IP的做法可能误伤真实用户。“而如果给消费者设置一个非常复杂的验证码,导致他难以输入,可能其就不再购买这个公司的票了。”一名不愿透露姓名的航空公司人士表示。他认为,除了加大技术防范力度之外,司法机关也要通过完善管理和法律法规的手段来共同约束这种行为。
而在恶意“爬取”信息和技术黄牛抢票方面,正是法律法规监管的“灰色地带”。《网络安全法》规定,未经授权“爬取”用户手机通讯录超过50条记录,公司法人最高可获刑3年;未经授权读取用户公积金社保记录超过5万条的,公司法人最高可获刑7年……但对于高科技“黄牛”倒票行为,尚未有明确规定。
业内人士认为,航企的目标是要提升“爬虫”抢票行为识别的准确率和账期管理,不给“爬虫”提供机会,“反爬虫”不仅要依靠技术防范和业界自律,还应该通过完善管理和法律法规手段来约束,尤其是法律手段。
Python爬虫技术给我们生活和工作带来了很多便捷,也有一些人利用它获取非法利益,怎么利用“反爬虫”约束和完善管理?Python爬虫您认为带给我们生活带来好处多,还是坏处多?欢迎转发或留言探讨。
![weinxin](http://file.az009.com/wp-content/themes/begin/img/python.jpg)