童话说说技术创业美文职业
投稿投诉
职业母婴
职场个人
历史治疗
笔记技能
美文纠纷
幽默家庭
范文作文
乐趣解密
创业案例
社会工作
新闻家居
心理安全
技术八卦
仲裁思考
生活时事
运势奇闻
说说企业
魅力社交
安好健康
传统笑话
童话初中
男女饮食
周易阅读
爱好两性

一看就明白的爬虫入门讲解基础理论篇(下篇)

9月5日 孤行者投稿
  上篇我分享了爬虫入门中的我们的目的是什么、内容从何而来、了解网络请求这三部分的内容,这一篇我继续分享以下内容:
  一些常见的限制方式
  尝试解决问题的思路
  效率问题的取舍
  一、一些常见的限制方式
  上述都是讲的都是一些的基础的知识,现在我就列一些比较常见的限制方式,如何突破这些限制这些抓取数据:
  BasicA
  一般会有用户授权的限制,会在headers的Autheration字段里要求加入;
  Referer
  通常是在访问链接时,必须要带上Referer字段,服务器会进行验证,例如抓取京东的评论;
  UserAgent
  会要求真是的设备,如果不加会用编程语言包里自有UserAgent,可以被辨别出来;
  Cookie
  一般在用户登录或者某些操作后,服务端会在返回包中包含Cookie信息要求浏览器设置Cookie,没有Cookie会很容易被辨别出来是伪造请求;
  也有本地通过JS,根据服务端返回的某个信息进行处理生成的加密信息,设置在Cookie里面;
  Gzip
  请求headers里面带了gzip,返回有时候会是gzip压缩,需要解压;
  Javascript加密操作
  一般都是在请求的数据包内容里面会包含一些被javascript进行加密限制的信息,例如新浪微博会进行SHA1和RSA加密,之前是两次SHA1加密,然后发送的密码和用户名都会被加密;
  其他字段
  因为http的headers可以自定义地段,所以第三方可能会加入了一些自定义的字段名称或者字段值,这也是需要注意的。
  真实的请求过程中,其实不止上面某一种限制,可能是几种限制组合在一次,比如如果是类似RSA加密的话,可能先请求服务器得到Cookie,然后再带着Cookie去请求服务器拿到公钥,然后再用js进行加密,再发送数据到服务器。所以弄清楚这其中的原理,并且耐心分析很重要。
  二、尝试解决问题的思路
  首先大的地方,加入我们想抓取某个数据源,我们要知道大概有哪些路径可以获取到数据源,基本上无外乎三种:
  PC端网站;
  针对移动设备响应式设计的网站(也就是很多人说的H5,虽然不一定是H5);
  移动A
  原则是能抓移动App的,最好抓移动App,如果有针对移动设备优化的网站,就抓针对移动设备优化的网站,最后考虑PC网站。因为移动App基本都是API很简单,而移动设备访问优化的网站一般来讲都是结构简单清晰的HTML,而PC网站自然是最复杂的了;
  针对PC端网站和移动网站的做法一样,分析思路可以一起讲,移动App单独分析。
  1网站类型的分析
  首先是网站类的,使用的工具就是Chrome,建议用Chrome的隐身模式,分析时不用频繁清楚cookie,直接关闭窗口就可以了。
  具体操作步骤如下:
  输入网址后,先不要回车确认,右键选择审查元素,然后点击网络,记得要勾上preservelog选项,因为如果出现上面提到过的重定向跳转,之前的请求全部都会被清掉,影响分析,尤其是重定向时还加上了C
  接下来观察网络请求列表,资源文件,例如css,图片基本都可以忽略,第一个请求肯定就是该链接的内容本身,所以查看源码,确认页面上需要抓取的内容是不是在HTML标签里面,很简单的方法,找到自己要找的内容,看到父节点,然后再看源代码里面该父节点里面有没有内容,如果没有,那么一定是异步请求,如果是非异步请求,直接抓该链接就可以了。
  分析异步请求,按照网络列表,略过资源文件,然后点击各个请求,观察是否在返回时包含想要的内容,有几个方法:
  内容比较有特点,例如人的属性信息,物品的价格,或者微博列表等内容,直接观察可以判断是不是该异步请求;
  知道异步加载的内容节点或者父节点的class或者id的名称,找到js代码,阅读代码得到异步请求;
  确认异步请求之后,就是要分析异步请求了,简单的,直接请求异步请求,能得到数据,但是有时候异步请求会有限制,所以现在分析限制从何而来。
  针对分析对请求的限制,思路是逆序方法:
  先找到最后一个得到内容的请求,然后观察headers,先看post数据或者url的某个参数是不是都是已知数据,或者有意义数据,如果发现不确定的先带上,只是更改某个关键字段,例如page,count看结果是不是会正常,如果不正常,比如多了个token,或者某个字段明显被加密,例如用户名密码,那么接下来就要看JS的代码,看到底是哪个函数进行了加密,一般会是原生js代码加密,那么看到代码,直接加密就行,如果是类似RSA加密,那么就要看公钥是从何而来,如果是请求得到的,那么就要往上分析请求,另外如果是发现请求headers里面有陌生字段,或者有Cookie也要往上看请求,Cookie在哪一步设置的;
  接下来找到刚刚那个请求未知来源的信息,例如Cookie或者某个加密需要的公钥等等,看看上面某个请求是不是已经包含,依次类推。
  2App的分析
  然后是App类的,使用的工具是Charles,手机和电脑在一个局域网内,先用Charles配置好端口,然后手机设置代理,ip为电脑的ip,端口为设置的端口,然后如果手机上请求网络内容时,Charles会显示相应地请求,那么就ok了,分析的大体逻辑基本一致,限制会相对少很多,但是也有几种情况需要注意:
  加密,App有时候也有一些加密的字段,这个时候,一般来讲都会进行反编译进行分析,找到对应的代码片段,逆推出加密方法;
  gzip压缩或者base64编码,base64编码的辨别度较高,有时候数据被gzip压缩了,不过Charles都是有自动解密的;
  https证书,有的https请求会验证证书,Charles提供了证书,可以在官网找到,手机访问,然后信任添加就可以。
  三、效率问题的取舍
  一般来讲在抓取大量数据,例如全网抓取京东的评论,微博所有人的信息,微博信息,关注关系等等,这种上十亿到百亿次设置千亿次的请求必须考虑效率,否者一天只有86400秒,那么一秒钟要抓100次,一天也才864w次请求,也需要100多天才能到达十亿级别的请求量。
  涉及到大规模的抓取,一定要有良好的爬虫设计,一般很多开源的爬虫框架也都是有限制的,因为中间涉及到很多其他的问题,例如数据结构,重复抓取过滤的问题,当然最重要的是要把带宽利用满,所以分布式抓取很重要,接下来我会有一篇专门讲分布式的爬虫设计,分布式最重要的就是中间消息通信,如果想要抓的越多越快,那么对中间的消息系统的吞吐量要求也越高。
  但是对于一些不太大规模的抓取就没要用分布式的一套,比较消耗时间,基本只要保证单机器的带宽能够利用满就没问题,所以做好并发就可以,另外对于数据结构也要有一定的控制,很多人写程序,内存越写越大,抓取越来越慢,可能存在的原因就包括,一个是用了内存存一些数据没有进行释放,第二个可能有一些hashset的判断,最后判断的效率越来越低,比如用bloomfilter替换就会优化很多。
  阅读上篇点击《一看就明白的爬虫入门讲解基础理论篇(上篇)》
投诉 评论 转载

开课通知史上最强产品总监晋级大课开课倒计时,四大梦想导师齐聚亲爱滴小伙伴们,史上最强产品总监晋级大课《产品总监修炼之道》报名非常火热,门票已经全部售罄!目前一切准备就绪,就等大家来上课啦!温馨提示1。请务必留足时间,提前出发……一看就明白的爬虫入门讲解基础理论篇(上篇)关于爬虫内容的分享,我会分成两篇,六个部分来分享,分别是:我们的目的是什么内容从何而来了解网络请求一些常见的限制方式尝试解决问题的思路……产品经理3000问作为一名产品经理,这些秘诀方法你都知道嘛?说大道理谁都知道,说设计流程、说工具使用,百度或者谷歌一下搜索一下也能告诉我们答案。但是工作中的细节,因为每个人碰到的情况不一样,而这种细节性的问题是没有标准答案的,需要具体问……产品经理需要了解的心理小课堂直觉与误差篇大家好,我是李红袖,再一次和大家见面了上一篇文章中和大家讨论的是“社会群体判断”的相关知识,这次要和大家聊的是“人们直觉和偏差”的内容。很多时候人们的直觉是有着他们自己习……一看就明白的爬虫入门讲解基础理论篇(下篇)上篇我分享了爬虫入门中的我们的目的是什么、内容从何而来、了解网络请求这三部分的内容,这一篇我继续分享以下内容:一些常见的限制方式尝试解决问题的思路效……什么样的产品:是一款好产品?经常会有人问这个问题,究竟什么样的产品能算一个好产品。以前,BLUES会回答:首先要有用,解决用户的某个问题,具体一点,就是满足某类用户在某个特定的时间、地点下产生……除了埋头苦干,更要抬头望天记11月北京起点学院课程写在正文之前的废话:水了N久的人人都是产品经理社区,更是已经忘了具体多久之前参加了起点学院的入学考试,一直拖到了现在经过长久的蓄谋,终于还是从大郑州杀向了大首都,亲身体验……产品经理做好跨部门合作的一个中心和三个原则跨部门合作是产品经理工作中最重要的一部分。除了用户调研、需求分析、原型设计等本职工作之外,跨部门沟通和合作可能就是产品经理最核心的工作了。而且,这种跨部门合作的难度和复杂性会随……如何写一份过关的产品经理简历?今天下午是迅雷的校招笔试时间,最后的笔试名单是昨天下午确认。不少同学做完笔试后,表示,脑洞大开,各类题目都有,从逻辑推理,到游戏,到产品常识,到产品思维,到二次元好吧,因为这套……迅雷产品经理的一天很多朋友对产品经理的工作很感兴趣,今天Glen就来记录一下产品经理工作的一天,帮助你了解这个神奇的群体。一起去做产品吧!09:30产品经理的一天开始了经过搏斗,Gl……一线产品喵浅谈日常产品工作关注点之前有国内一位Top级的CTO一直吐槽产品经理,对产品经理不以为然,觉得这个职位非常多余。最近突然在微信上对我说:“赶紧推荐我几个产品经理,没有产品经理真不行。作为一个一……初出茅庐的产品经理感悟本文作于一个初级软件产品经理,而且专注于移动端软件产品,希望对刚刚踏入工作的想做移动端产品经理的或者想转行做产品经理的人,有些许帮助。一,选择做什么产品的经理俗话说……
简单聊聊,如何设计站内信?如何进行可用性测试?这里有一份全面的可用性测试指南四大分析法打造你的产品说服力坏设计VS好设计:从5个对比案例中获得设计经验电商平台的生态建设五:避免漏斗型马太陷阱1。0版App如何做全局产品设计为上瘾而设计VS为归属感而设计:从设计思路出发,分析了两者的电商ToC和ToB的产品,到底有啥区别?如何基于物联网设计有价值的服务?产品心得用讲故事的方式设计管理后台客服系统后台:工单系统的简单说明(二)设计师如何洞察需求本质做正确的设计
节目主持人应该具备的条件寒假日记300字三篇我有一片晴天郭于华:勿因平庸而作恶男子开了4年合资车,换上了国产车后,憋了一肚子话假如我是地球美容师作文500字s29赛季排位巨变,夏日奇旅专属特效品质超高,伽罗新皮官方预共同的心愿小学生作文15句八字铁口直断口诀,流传千年,灵验无比!上古八大姓氏,看你的祖先到底姓啥?想要高效工作必须掌握的五大步骤和三大原则甘肃平菇价格今日行情

友情链接:中准网聚热点快百科快传网快生活快软网快好知文好找作文动态热点娱乐育儿情感教程科技体育养生教案探索美文旅游财经日志励志范文论文时尚保健游戏护肤业界