最近在做的sideproject,需要网络上的文章数据。于是顺便学习了下爬虫技术,也算是有些心得体会。写下来分享给刚入坑的新人。
怎么理解模拟登录?
怎么理解模拟登录?
把这句话补全就是: 怎么(让机器)模拟(人在浏览器上的行为)登录(指定的网站)。
那么这个问题实际上问的是: 人通过浏览器登录网站时,浏览器为我们做了哪些事情。
那么我们需要做的只有:写一个脚本,让这个脚本模拟浏览器的行为,做我们希望它做的事情。
有兴趣参考:
当在浏览器地址栏输入一个URL后回车,将会发生的事情?
那么,
人类在登录时做了哪些事情呢,很简单:
1. 打开登录页面
2. 输入用户名密码,有时可能还有验证码,各种各样的验证码
3. 点击登录
4. 等待浏览器自动跳转
只要你稍微懂一点html语言,就应该能分析个八九不离十。
机器人怎么做呢:
两种方式:
方式一:
需要使用虚拟的浏览器引擎。
优点: 适合几乎所有的网站登录,可以人为输入验证码
缺点: 速度较慢
1. 请求登录页面的url,比如微博的(https://passport.weibo.cn/signin/login)
2. 分析html中的表单数据
2.1 找到输入用户名、密码的输入框
2.2 把输入框的text域替换成自己的用户名密码
3. 模拟点击提交按钮
方式二:
分析登录信息提交方式,一般就是表单
优点: 轻量,速度快
缺点: 局限性大,对技术要求高,对验证码机制需要做针对的破解
1. 使用浏览器的调试模式查看网页
2. 检查是否使用表单提交
3. 点击登录按钮,查看发送的请求数据。主要查看参数有无加密验证或其它隐藏信息。
4. 使用分析结果进行请求操作
对于一般用户,所有的非特殊性需求都可以使用方式一进行完成。
若非是为了学习,推荐方式一。
技术资料请参考:
Python爬虫学习系列教程(推荐)
[Python爬虫] Selenium爬取新浪微博移动端热点话题及评论 (下)
如何让脚本的行为看起来像人?
为什么要像人
因为很多服务器会使用一些反爬技术拒绝爬虫软件访问。
哪些东西让你看起来像人,哪些不像人
像人,其实可以分为两点。
一类是看请求数据,是否符合是浏览器发出的正常数据,比如header内容。
一类是看行为模式,发送请求对象的行为更像人类还是机器人,比如请求的频率。
不像人,和上面对应。
从请求数据上看,你没说明user-agent,我就可以认为你是非法侵入。你没有带着我之前给你的饼干(cookie)来,我也可以拒绝你。
从行为模式上,同一个ip访问的频率过高,短时间内流量异常,都可以作为非人类处理。
结合反爬技术
- 需要登录用cookie
- ip限制加代理
- 用user-agent告诉对方你是浏览器
- 服务器限制访问频率,加延迟
- ajax异步加载,使用js引擎或者人工分析
- redirect,最简单的方式虚拟内核+延迟
- 验证码,虚拟内核
如何找切入点?
什么是好的登录页面?
没有验证码,非ajax异步加载。
不一定局限于pc端网页,app端、移动端一般做的反爬策略比较少,可以从这里入手,寻找适合的站点。
理解自己要做什么,如何伪装成人类。仔细思考访问流程,针对性的有哪些反爬手段。把这些想通了,爬虫之路会好走很多。
转载请注明:未命名的博客
相关文章和资料
技术语言资料请自行google。