一看就明白的爬虫入门讲解-基础理论篇(下篇)
文/孔淼
上篇我分享了爬虫入门中的"我们的目的是什么"、"内容从何而来"、"了解网络请求"这三部分的内容,这一篇我继续分享以下内容:
1) 一些常见的限制方式
2) 尝试解决问题的思路
3) 效率问题的取舍
一、一些常见的限制方式
上述都是讲的都是一些的基础的知识,现在我就列一些比较常见的限制方式,如何突破这些限制这些抓取数据:
- Basic Auth
一般会有用户授权的限制,会在headers的Autheration字段里要求加入;
- Referer
通常是在访问链接时,必须要带上Referer字段,服务器会进行验证,例如抓取京东的评论;
- User-Agent
会要求真是的设备,如果不加会用编程语言包里自有User-Agent,可以被辨别出来;
- Cookie
一般在用户登录或者某些操作后,服务端会在返回包中包含Cookie信息要求浏览器设置Cookie,没有Cookie会很容易被辨别出来是伪造请求;
也有本地通过JS,根据服务端返回的某个信息进行处理生成的加密信息,设置在Cookie里面;
- Gzip
请求headers里面带了gzip,返回有时候会是gzip压缩,需要解压;
- Javascript加密操作
一般都是在请求的数据包内容里面会包含一些被javascript进行加密限制的信息,例如新浪微博会进行SHA1和RSA加密,之前是两次SHA1加密,然后发送的密码和用户名都会被加密;
- 其他字段
因为http的headers可以自定义地段,所以第三方可能会加入了一些自定义的字段名称或者字段值,这也是需要注意的。
真实的请求过程中,其实不止上面某一种限制,可能是几种限制组合在一次,比如如果是类似RSA加密的话,可能先请求服务器得到Cookie,然后再带着Cookie去请求服务器拿到公钥,然后再用js进行加密,再发送数据到服务器。所以弄清楚这其中的原理,并且耐心分析很重要。
二、尝试解决问题的思路
首先大的地方,加入我们想抓取某个数据源,我们要知道大概有哪些路径可以获取到数据源,基本上无外乎三种:
1) PC端网站;
2) 针对移动设备响应式设计的网站(也就是很多人说的H5, 虽然不一定是H5);
3) 移动App;
原则是能抓移动App的,最好抓移动App,如果有针对移动设备优化的网站,就抓针对移动设备优化的网站,最后考虑PC网站。因为移动App基本都是API很简单,而移动设备访问优化的网站一般来讲都是结构简单清晰的HTML,而PC网站自然是最复杂的了;
针对PC端网站和移动网站的做法一样,分析思路可以一起讲,移动App单独分析。
1.网站类型的分析
首先是网站类的,使用的工具就是Chrome,建议用Chrome的隐身模式,分析时不用频繁清楚cookie,直接关闭窗口就可以了。
具体操作步骤如下:
- 输入网址后,先不要回车确认,右键选择审查元素,然后点击网络,记得要勾上preserve log选项,因为如果出现上面提到过的重定向跳转,之前的请求全部都会被清掉,影响分析,尤其是重定向时还加上了Cookie;
- 接下来观察网络请求列表,资源文件,例如css,图片基本都可以忽略,第一个请求肯定就是该链接的内容本身,所以查看源码,确认页面上需要抓取的内容是不是在HTML标签里面,很简单的方法,找到自己要找的内容,看到父节点,然后再看源代码里面该父节点里面有没有内容,如果没有,那么一定是异步请求,如果是非异步请求,直接抓该链接就可以了。
分析异步请求,按照网络列表,略过资源文件,然后点击各个请求,观察是否在返回时包含想要的内容,有几个方法:
- 内容比较有特点,例如人的属性信息,物品的价格,或者微博列表等内容,直接观察可以判断是不是该异步请求;
- 知道异步加载的内容节点或者父节点的class或者id的名称,找到js代码,阅读代码得到异步请求;
- 确认异步请求之后,就是要分析异步请求了,简单的,直接请求异步请求,能得到数据,但是有时候异步请求会有限制,所以现在分析限制从何而来。
针对分析对请求的限制,思路是逆序方法:
- 先找到最后一个得到内容的请求,然后观察headers,先看post数据或者url的某个参数是不是都是已知数据,或者有意义数据,如果发现不确定的先带上,只是更改某个关键字段,例如page,count看结果是不是会正常,如果不正常,比如多了个token,或者某个字段明显被加密,例如用户名密码,那么接下来就要看JS的代码,看到底是哪个函数进行了加密,一般会是原生js代码加密,那么看到代码,直接加密就行,如果是类似RSA加密,那么就要看公钥是从何而来,如果是请求得到的,那么就要往上分析请求,另外如果是发现请求headers里面有陌生字段,或者有Cookie也要往上看请求,Cookie在哪一步设置的;
- 接下来找到刚刚那个请求未知来源的信息,例如Cookie或者某个加密需要的公钥等等,看看上面某个请求是不是已经包含,依次类推。
2.App的分析
然后是App类的,使用的工具是Charles,手机和电脑在一个局域网内,先用Charles配置好端口,然后手机设置代理,ip为电脑的ip,端口为设置的端口,然后如果手机上请求网络内容时,Charles会显示相应地请求,那么就ok了,分析的大体逻辑基本一致,限制会相对少很多,但是也有几种情况需要注意:
- 加密,App有时候也有一些加密的字段,这个时候,一般来讲都会进行反编译进行分析,找到对应的代码片段,逆推出加密方法;
- gzip压缩或者base64编码,base64编码的辨别度较高,有时候数据被gzip压缩了,不过Charles都是有自动解密的;
- https证书,有的https请求会验证证书,Charles提供了证书,可以在官网找到,手机访问,然后信任添加就可以。
三、效率问题的取舍
一般来讲在抓取大量数据,例如全网抓取京东的评论,微博所有人的信息,微博信息,关注关系等等,这种上十亿到百亿次设置千亿次的请求必须考虑效率,否者一天只有86400秒,那么一秒钟要抓100次,一天也才864w次请求,也需要100多天才能到达十亿级别的请求量。
涉及到大规模的抓取,一定要有良好的爬虫设计,一般很多开源的爬虫框架也都是有限制的,因为中间涉及到很多其他的问题,例如数据结构,重复抓取过滤的问题,当然最重要的是要把带宽利用满,所以分布式抓取很重要,接下来我会有一篇专门讲分布式的爬虫设计,分布式最重要的就是中间消息通信,如果想要抓的越多越快,那么对中间的消息系统的吞吐量要求也越高。
但是对于一些不太大规模的抓取就没要用分布式的一套,比较消耗时间,基本只要保证单机器的带宽能够利用满就没问题,所以做好并发就可以,另外对于数据结构也要有一定的控制,很多人写程序,内存越写越大,抓取越来越慢,可能存在的原因就包括,一个是用了内存存一些数据没有进行释放,第二个可能有一些hashset的判断,最后判断的效率越来越低,比如用bloomfilter替换就会优化很多。
本文由诸葛io CEO 孔淼原创发布于PMCAFF产品经理社区,转载请注明出处,欢迎关注诸葛io公众号(zhugeio),更多精彩,尽在其中。
一看就明白的爬虫入门讲解-基础理论篇(上篇)
http://www.taodudu.cc/news/show-546675.html
相关文章:
- 德式秘籍:产品总监最该学会的管理方法是什么?(一)
- 如何运营垂直类产品
- 如何更好的解决问题 : The puzzle of die
- 来吧,我教你画真正的流程图
- 浅谈O2O产品信息结构化
- PMCAFF原创作者人气榜,快来看看你排第几?
- 你不知道的APP色彩跟产品场景的关联因素(干货多图)
- 用户金字塔模型详解及在实际运营工作中的意义
- 如何跟各种人解释什么是产品经理
- 利用「接口」做产品时我们该如何思考?
- 有逼格的产品经理都用什么样的杯子?
- App推广中如何寻找200个以上渠道
- 为什么你今年的去哪儿产品经理面试挂了?
- 停止对互联网的意淫吧,它不过是个信息技术啊
- 互联网音乐还有什么机会
- 如何设计一款大学生找实习的APP?
- 适合创业团队使用的团队协作工具大盘点
- 产品需求文档中容易被忽视的10个细节
- 听说邻居表妹来了
- 如何在面试中有条理的回答用户体验方面的问题
- 产品体验分析之7步走(附PPT)
- 总被忽略的 2 条产品原则
- App上线需要自查的list——主要针对产品、部分运营加测试
- PMCAFF微课堂已结束 | 前YY产品总监深度揭秘P2P运营推广精髓
- 互联网金融投放获客优化的讨论(新用户引导流程)
- 神吐槽|产品经理都是如何相爱相撕的?
- 避免需求分析与定义误区的7个招式:作为产品新人,我所遇到的坑(续)
- 如何使用Axure高效完成高保真原型
- 我们从产品团队扩大中学到了什么
- 产品经理的每日反省清单
一看就明白的爬虫入门讲解-基础理论篇(下篇)相关推荐
- 一看就明白的爬虫入门讲解-基础理论篇(上篇)
作者:孔淼 关于爬虫内容的分享,我会分成两篇,六个部分来分享,分别是: 1) 我们的目的是什么 2) 内容从何而来 3) 了解网络请求 4) 一些常见的限制方式 5) 尝试解决问题的思路 6 ...
- 一看就明白的爬虫入门讲解:基础理论篇
一看就明白的爬虫入门讲解:基础理论篇 发表于2015-11-13 18:50| 5909次阅读| 来源CSDN| 37 条评论| 作者孔淼 爬虫经验分享HTMLCSSAjaxApp网络 width=& ...
- python爬虫-Python爬虫入门这一篇就够了
何谓爬虫 所谓爬虫,就是按照一定的规则,自动的从网络中抓取信息的程序或者脚本.万维网就像一个巨大的蜘蛛网,我们的爬虫就是上面的一个蜘蛛,不断的去抓取我们需要的信息. 爬虫三要素 抓取 分析 存储 基础 ...
- 摄影入门-之三-基础理论篇
焦距 镜头的焦距分为像方焦距和物方焦距.像方焦距是像方主面到象方焦点的距离,同样,物方焦距就是物方主面到物方焦点的距离.必须注意,由于照相机镜头设计,特别是变焦距镜头中广泛采用了望远镜结构,物方焦距与 ...
- 学python买什么书-Python爬虫入门看什么书好 小编教你学Python
Python爬虫入门看什么书好 小编教你学Python 时间:2018-01-12 来源:Python爬虫入门讲解 生活在21世纪的互联网时代,各类技术的发展可谓是瞬息万变,这不今天编程界又出 ...
- python爬虫进阶案例,Python进阶(二十)-Python爬虫实例讲解
#Python进阶(二十)-Python爬虫实例讲解 本篇博文主要讲解Python爬虫实例,重点包括爬虫技术架构,组成爬虫的关键模块:URL管理器.HTML下载器和HTML解析器. ##爬虫简单架构 ...
- 爬虫入门到精通-HTTP协议的讲解
HTTP协议的讲解 本文章属于爬虫入门到精通系统教程第三讲 什么是HTTP协议? 引用自维基百科 超文本传输协议(英文:HyperText Transfer Protocol,缩写:HTTP)是互联网 ...
- python爬虫挖掘平台搭建_一篇非常棒的安装Python及爬虫入门博文!
原标题:一篇非常棒的安装Python及爬虫入门博文! 一. 大数据及数据挖掘基础(私信小编007即可获取大量Python学习资料!) 第一部分主要简单介绍三个问题: 1.什么是大数据? 2.什么是数据 ...
- 零基础学python爬虫-零基础如何学爬虫技术?一篇带你入门!(理论+实操+荐书)...
对于小白来说,爬虫可能是一件非常复杂.技术门槛很高的事情. 但掌握正确的方法,在短时间内做到能够爬取主流网站的数据,其实非常容易实现! 同时,你需要从一开始就有一个具体的目标!只有在目标的驱动下,你的 ...
最新文章
- webpack 项目使用--转换为React项目(4)
- tomcat升级后报错: Invalid character found in the request target.
- mysql三范式和反三范式_数据库三范式和反三范式
- 塑壳断路器用考虑启动电流么_塑壳式断路器知识
- 昆仑量子计算机只是云计算模拟吧,量子模拟赛题让大学生认识未来计算发展方向...
- EntityFramework包含作用
- 电脑中毒了怎么办 电脑中病毒的解决方法
- 李彦宏:5年后语音和图片搜索会超文字搜索
- 被逮到一个初始状态考虑不周的Bug
- mac 下安装java, jmeter, ant, jenkins,使用jmeter+ant+jenkins 接口测试集成工具,发送html报告到邮箱中
- ENVI5.3.1使用Landsat 8影像进行主成分分析实例操作
- Julia:1.0与0.6 的几点不同
- windows修复移动硬盘
- android dpi计算器,安卓多功能计算器 One++ Calculator 1.7.5 中文多语免费版
- 什么是链路层发现协议LLDP和LLDP-MED
- 程序员租女友被骗 揭秘“租友”市场背后那些坑
- GPON标准简要解析
- iOS 非越狱下的代码注入
- 七巧板复原算法探讨之二——七巧板的表示
- 怎么区分处理器是第几代的
热门文章
- 课时 28:理解容器运行时接口 CRI(知谨)
- java sql函数_Java调用Sql存储过程实例讲解
- 圆弧周长公式_建筑工程施工,最常用计算公式 (大全)
- (二)深度学习数据处理-----图片数据处理
- python if and_python有趣用法汇总(持续更新)
- linux python 调试_Python教程:4环境变量与集成开发
- 方舟原始恐惧mod生物代码_重磅!命令与征服和红色警戒源代码在GitHub公布了
- 在几何画板中如何制作圆柱的侧面展开动画_基本尺规作图过程展示 | 几何画板...
- 机器视觉:工业线阵相机与面阵相机特点分析
- 当引用com类dll时,在VS2005下会出现,dll虽然更换了但是引用没有更换或找不到的错误