谈谈爬虫-模拟登录思路

爬虫 Nov 20, 2017

最近在做的 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访问的频率过高,短时间内流量异常,都可以作为非人类处理。

结合反爬技术

  1. 需要登录用cookie
  2. ip限制加代理
  3. 用user-agent告诉对方你是浏览器
  4. 服务器限制访问频率,加延迟
  5. ajax异步加载,使用js引擎或者人工分析
  6. redirect,最简单的方式虚拟内核+延迟
  7. 验证码,虚拟内核

如何找切入点?

什么是好的登录页面?
没有验证码,非ajax异步加载。
不一定局限于pc端网页,app端、移动端一般做的反爬策略比较少,可以从这里入手,寻找适合的站点。

理解自己要做什么,如何伪装成人类。仔细思考访问流程,针对性的有哪些反爬手段。把这些想通了,爬虫之路会好走很多。

转载请注明:博客未命名

相关文章和资料

技术语言资料请自行google。

  1. 如何应对网站反爬虫策略?如何高效地爬大量数据?
  2. 能利用爬虫技术做到哪些很酷很有趣很有用的事情?(很有意思)
  3. Python爬虫学习系列教程(推荐)
  4. [Python爬虫] Selenium爬取新浪微博移动端热点话题及评论 (下)
/* 看板娘 */