爬虫本质是采集数据,通俗的讲就是模拟人在App或者浏览器的操作步骤自动化获取数据,本身没有什么难度,伪造HTTP 请求就好。
但是有些公司会给你设置采集障碍,大公司还有专门的安全团队防采集。
你看搞安全的程序员或者黑客平均技术水平明显好过一般写代码的同学。
对于一般新闻资讯网站,逻辑简单,大家的新闻也都是转来转去的,采集没啥障碍,只要你频率不太过分,对方程序员也懒得管。
对于需要登录权限的网站,你需要小心了,对方设置登录权限,你必须维护登录状态,一个用户自然流量总是有规律的,你一个用户一分钟浏览了100个网页,不封你留着干嘛?
爬虫程序员:好的频率太高,我多申请几个账户,降低次啊及频率
网站程序员: 这个IP地址有点奇怪,请求这么规律,NGINX 配置下,限制一下访问频率
爬虫程序员:我搞一个IP代理池,隔一段时间随机换一个IP ,全国那么多IP代理
网站程序员:用户登录太简单,上个极验,识别下机器自动登录
爬虫程序员:… github 上有破解极验的代码 Python ?selenium
如同大自然的竞争,两个互不认识的程序员的技术进化就这样开始了
采集程序本质是拿到数据,爬虫程序员的目标是尽可能低成本的采集到数据,
反爬程序员的目标是:尽可能提高爬虫来我这采集数据的成本
以下是爬虫从业者分类
初学者: requets get请求 拿数据 bs或者xpath解析
中级: requests 或者scrapy请求拿数据,伪造user-agent,会变代理ip会多线程。bs4,xpath,正则滚瓜烂熟。
高级:分布式爬取,requests scrapy 各种熟练,vps拨号换ip,代理ip,vpn换ip各种场景都会,能解密js加密,破解无限debugger,了解nlp以及深度学习训练破解数字字母型验证码。
超级:精通ast语法,掌握各种hook,能在极短时间破解js加密,精通深度学习,熟悉并破解过定位滑块图像识别数字字母验证码,精通android逆向。研究过多种智能化提取网页内容的算法,比如视觉分割,NLP结合DOM重要内容提取等。
到超级这个级别其实就靠个人的努力程度跟天赋了。android正逆向通吃的话,从业经验至少十年起步吧。加上深度学习,js安全,算法,那都是可遇不可求的。