更新一篇,总结下这小半年的心得。
上周一同事问我能不能接个私活,大概就是对x点中文网做一个增量更新,需求包括免费和付费的抓取,在这个phper同学看来,付费=免费 在爬虫眼里,只要拿到url就能请求。
(这里举个栗子,翻墙出去某个网站,下载视频,不是会员下载不了,确实拿到url了啊,是真实的。原因很简单,就是服务器会对你进行cookie验证,会去验证是不是会员,同时也不支持断点续传。)
接上上段,话是没错,但是这个url怎么拿呢,看了起点中文网,从首页去看vip内容,那是个假url,点进去只有一小部分。
那就先看看免费,打开章节页面时候是url是乱码,并没xxxx?xx=xx&xx=xx这种。那就看看cookie里有没有类似page的字段,然而章节和cookie没有多大关系。每一个章节的url看着像乱码,在不知道生成规则时候,反向推url没用呀。
知识点 1:有的网站会把请求信息放在cookie里,通过去构造cookie请求拿到目标页面
之前的同事去了x面新闻后,有一天发我一个url让我看看怎么获取数据,打开url看看源码,嗯,所有模块异步加载,同时有token验证。一时间这个加密的js没找到。
随后,我提醒去看看app上面有没有数据。
然后打开app,抓包,数据整整齐齐躺在json里。
知识点 2:手机性能有限,反爬虫并不能做到像客户端那么恶心,网页没办法的时候,看看app
在我上家公司需要拿x众点评的数据,从列表详情到评论。
笔者有印象17年11月后更新了反爬虫策略后,数据一度不好爬取了,各种眼花缭乱的token。
当时基本功不足,就放弃了。
前段时间突然想起了,再来看看x众点评的数据,嗯,反爬虫更恶心了,评论数据需要登录,现在加入滑动验证部分,这个看来是像阿里系学来的,用来ban掉那些用selenium + chromedriver/geckodriver 的
另外据上家公司的同事讲,眼花缭乱的token是一个障眼法,真正的反爬在别处。
知识点 3:反爬虫的核心思想是让你拿到数据的成本增加,而不是想的不让你拿,毕竟爬虫的思想是 可见即可爬
接着说这个x众点评,网页拿不到,那就看看app呢。打开x团,我这里抓包工具用的charles,咦,app不加载。 看来是加入SSL Pining了的,好吧,whatever,我有办法。
emmm,怎么还是抓不了包,仅仅只能抓到图片的包。
笔者开始怀疑走的不是TCP? 那行啊,走的是UDP对吧,这么虎!
随后底层抓包,这里用的是Wireshark,一路看下来,然而并没看到UDP的包。
这里笔者开始在怀疑这个app的请求走的是私有协议,那怎么办,除非内部人士告知,不然就真的没得搞了。
这个部分属于个人的猜测,懂得人看到望指正。
知识点 4:抓包app抓不到包,不加载那就是SSL-Pining,抓不到包要么 udp要么私有协议了。
这家公司刚入职那会儿,需要大量的汽车数据。
到汽车配置这一项时候,当然去x车之家啊,但是人家有字体反爬虫啊,还是教科书级别的。
行行行,那我看app咯。抓包也是ok 的,那行,咱们通过app去拿数据。
等会儿,人家的url怎么是 https://xx.xxx.xx.xx/xx 这种,怎么是ip地址
咦,代码里去请求这个url怎么被ban
看来是上了cdn
知识点 5:很多app上了cdn,抓包获取的地址,是人家cdn服务器的地址,所以真是的服务器地址呢,怎么去获取。笔者目前没解决。
好吧,x车之家,那咱们只能硬肝了,研究页面的js,找到动态加载的字体库,还原回去。
知识点 6:很多时候你需要的js就在页面的html里,并不是打开network一个js接着一个js去找
之前有一个需求是模仿用户登录x宝。
登录啊,好吧,我去调研下,没研究过x宝,自己闹着玩的时候研究过x浪x博的登录。
然后发现登录参数又长又恶心,其中有个字段每天都要变化,这个用代码来模拟太麻烦了。
遂拿出我不太常用的selenium + chromedriver, 发现滑动验证不能通过。
后来笔者琢磨,应该是一开始人家就检测到这是用selenium驱动的,被当做爬虫。
不过后来改成扫二维码登录,能成。
在Stack Overflow上面关于这个的讨论有
知识点 7:类似逻辑回归,浏览器指纹是很重要的被识别为人还是机器的依据
随着脚本的越来越多,维护的成本增加。
一方面来着网站自身的迭代,一方面是自己脚本的运行。
慢慢一个人的工作量会被维护占去一大部分,这里就需要一个管理工具了。
那就是抓取平台,笔者这几月都在绞尽脑汁想这个平台怎么来写。
无奈基本功,特别是开发上面的欠缺,需要恶补的东西很多。
好了,就想到这么多。
另外,敏感的项目栗子笔者也不能说。