谈谈爬虫-模拟登录思路

个人博客: 斯科特安的时间

最近在做的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爬取新浪微博移动端热点话题及评论 (下)
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,213评论 25 708
  • 1 前言 作为一名合格的数据分析师,其完整的技术知识体系必须贯穿数据获取、数据存储、数据提取、数据分析、数据挖掘、...
    whenif阅读 18,105评论 45 523
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,908评论 18 139
  • 这个标题是昨晚在青群里尹东老师提到的一个叫幕布的软件,他说喜欢这个软件还有一个重要的原因就是它的广告词:你对生活有...
    潘佳梅原创阅读 399评论 0 1
  • 年少的时候,我一直在想,我的未来是不同的,我是这万千人中独特的一个。 不过,现在不同了,我活的吃力。 一切都无法应...
    西瓜米阅读 291评论 0 0