精华内容
下载资源
问答
  • 网页爬虫系统.zip

    2021-03-25 09:44:29
    观察名单中的访问在下一单位时间内继续访问则要求其 填写验证码,若没有填写验证码而持续发起大量请求,则判定为爬虫,加入黑名单。 2.离线策略:引入访问统计系统,对访问记录进行持久化,按分、小时、天等维度...
  • java web系统的网页爬虫程序 简介:一些智能的搜索引擎爬虫的爬取频率比较合理,对网站资源消耗比较少,但是很多糟糕的网络爬虫,对网页爬取能力很差,经常并发几百个请求循环重复抓取,这种爬虫对中小型网站经常...
  • 一个IP在同一个平台网站上采用的次数越高,就越极易被平台网站封住,这个是因为有爬虫工作机制的存在。所以,采用代理IP也是一样的原理,并非代理IP中的IP就强大,就没局限了。我们可以通过以下方法排查IP被封的...

    在这里插入图片描述
    许多爬虫工作者在爬虫过程中会遇到爬虫被封的特殊情况,然后采用代理IP来解决这种情况,但并非每次采用代理IP就一定管用的,使用不当还是一样的结果。一个IP在同一个平台网站上采用的次数越高,就越极易被平台网站封住,这个是因为有反爬虫工作机制的存在。所以,采用代理IP也是一样的原理,并非代理IP中的IP就强大,就没局限了。我们可以通过以下方法排查IP被封的原因。
    假如你发觉你爬取到的信息内容和网页页面正常情况下显示的信息内容不同,或者是你爬取的是空白信息内容,那很有可能是由于网站建立页的程序有什么问题,故而爬取前须要我们检查一下;无论是客户或是爬虫程序,实际上在网页浏览信息内容的时候就等同于给浏览器发送了对应的需求或者是是请求,故而你需要保证自己的所有请求参数都是正确的,是没有问题的;许多时候我们的 ip 地址会被记录,网络服务器将你当做是爬虫程序,故而就导致目前 ip 地址不能用,这样就须要我们想办法改动一下目前爬虫程序或者改动对应的ip 地址 。
    文章部分内容源于网络,联系侵删*
    文章参考源于http://h.zhimaruanjian.com/faq/54405.html

    展开全文
  • 爬虫对于网站拥有者来说并不是一个令人高兴的存在,因为爬虫的肆意横行意味自己的网站资料泄露,甚至是自己刻意隐藏在网站的隐私的内容也会泄露。面对这样的状况,作为网站的维护者或者拥有者,要么抵御爬虫,通过...

    0x01 介绍

    爬虫对于网站拥有者来说并不是一个令人高兴的存在,因为爬虫的肆意横行意味着自己的网站资料泄露,甚至是自己刻意隐藏在网站的隐私的内容也会泄露。面对这样的状况,作为网站的维护者或者拥有者,要么抵御爬虫,通过各种反爬虫的手段阻挡爬虫,要么顺从爬虫,自动提供可供爬虫使用的接口。对于这两种决策的正确与否,实际上是有一些讲究的,作为一个电商平台来讲,某种程度上来说还是希望爬虫在自己网站上工作但是却不希望爬虫的工作影响了平台的运营,但是这就有一个问题了,也就是前几篇文章中有读者问道的,如何减轻爬虫造成的损失。作为搜索引擎来讲,实际上工作在搜索引擎上的爬虫可能是道德缺失的,实际上,搜索引擎作为非常专业的爬虫,尊崇爬虫道德准则,但是不希望自己同类获取自己辛苦收集的信息,同样这样也就是说,作为搜索引擎来讲,可以说是绝对反爬虫的

    0x02 问题的分类

    那么,由我们上面的叙述,对于爬虫的策略也就有:

    1.    顺从但减轻损失

    2.    爬虫反制

    0x03 顺从的艺术

    可能有人会觉得可笑,为什么要顺从?很简单,记得我们以前使用的sitemap么?可以说它就是为了爬虫服务,除此之外,我们还要知道推特的开放平台提供了收费的爬虫接口,google也提供了收费的爬虫接口。那么大家觉得这些墙外的事情离我们还是非常的远,那么我就来举一些例子好了,我们经常网购的朋友都使用京东对吧?也许大家还不知道京东有自己的开放平台,可以供爬虫或者是希望获取京东内商家或者商品信息的开发者:

     

    然后我们打开API页面的商品API页面:

     

    我们发现它提供了不少易用的接口,开发者注册以后可以使用,或者处理一下丢给爬虫去使用。同样的淘宝也有相应的平台,但是应该是收费的,就是淘宝开放平台,要在聚石塔调用API才会生效:

     

     

    大家可以看到,如果你希望获取的是京东或者淘宝的信息,怎么办?自己费力去解析网页并不是一个好办法,再者说,在爬虫开发四中,我们举的例子就是淘宝的例子,一般的爬虫是没有办法爬到淘宝页面的,这也就从某种程度上解释了为什么百度很难收到淘宝的商品信息什么的,当然不是说百度没有动态爬虫这项技术。

    读者会发现,如果我们要使用这些爬虫,就要遵守商家约定的规则,注册甚至是付费才能使用。

    其实这就是一个本部分讲的一个平衡点,作为一只爬虫,如果想要在某个网站工作,就必须遵守网站的规则(robots.txt协议,开放平台API协议)。

    当然如果爬虫制造者觉得不爽,当然可以有别的办法啊,但是代价就是你要针对这个网站写不少爬虫代码,增加自己的开发成本,也不能说得不偿失,只是你有了汽车为什么还偏爱自行车呢?当然自行车和汽车也是有优劣之分的:顶多也就是比赛竞速用的自行车和一辆小奥拓的差别吧。


    很多人学习python,不知道从何学起。
    很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
    很多已经做案例的人,却不知道如何去学习更加高深的知识。
    那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
    QQ群:721195303


    0x04 反爬虫

    但是你是真的真的很讨厌爬虫,你恨不得有一万种措施挡住爬虫,那么同样的,有些措施可以起到很好的效果,有些措施可能起不了多大的作用,那么我们现在就来讲一下反爬虫的几重措施。

    1. IP限制

    如果是个人编写的爬虫,IP可能是固定的,那么发现某个IP请求过于频繁并且短时间内访问大量的页面,有爬虫的嫌疑,作为网站的管理或者运维人员,你可能就得想办法禁止这个IP地址访问你的网页了。那么也就是说这个IP发出的请求在短时间内不能再访问你的网页了,也就暂时挡住了爬虫。

    2. User-Agent

    User-Agent是用户访问网站时候的浏览器的标识

    下面我列出了常见的几种正常的系统的User-Agent大家可以参考一下,

     

    并且在实际发生的时候,根据浏览器的不同,还有各种其他的User-Agent,我举几个例子方便大家理解:

    safari 5.1 – MAC

    User-Agent:Mozilla/5.0 (Macintosh; U; IntelMac OS X 10_6_8; en-us) AppleWebKit/534.50 (KHTML, like Gecko) Version/5.1Safari/534.50

    Firefox 4.0.1 – MAC

    User-Agent: Mozilla/5.0 (Macintosh; IntelMac OS X 10.6; rv:2.0.1) Gecko/20100101 Firefox/4.0.1

    Firefox 4.0.1 – Windows

    User-Agent:Mozilla/5.0 (Windows NT 6.1;rv:2.0.1) Gecko/20100101 Firefox/4.0.1

    同样的也有很多的合法的User-Agent,只要用户访问不是正常的User-Agent极有可能是爬虫再访问,这样你就可以针对用户的User-Agent进行限制了。

    3、 验证码反爬虫

    这个办法也是相当古老并且相当的有效果,如果一个爬虫要解释一个验证码中的内容,这在以前通过简单的图像识别是可以完成的,但是就现在来讲,验证码的干扰线,噪点都很多,甚至还出现了人类都难以认识的验证码(某二三零六)。

     

    嗯,如果一个爬虫要访问的页面提示要输入验证码,那么问题就来了,不是所有的爬虫都装备了图像识别技术啊。其实大家要问了,爬虫处理这些登录页面有什么意义呢?除非你是想爆破密码或者是刷xxx什么的。但是真的有人把验证码用在反爬虫上的么?事实上确实有,Google就在使用,如果有使用google经验的读者会发现自己在愉快查google,特别是使用vpn或者是各种科学上网工具的时候,经常会提示你google想知道你是不是一个人(不是人还能是什么?)

     

    不是所有的爬虫都可以配备OCR技术,所以自然这样可以很好的抵挡爬虫。(当然如果你有兴趣编写一个具有机器学习的OCR技术的爬虫的话,这样可能会有一些正确率,笔者有一段时间还是很想通过OCR技术解决验证码问题,但是尝试一点获得失败之后并没有新的进展,于是就放弃了)

    4. Ajax异步加载

    网页的不希望被爬虫拿到的数据使用Ajax动态加载,这样就为爬虫造成了绝大的麻烦,如果一个爬虫不具备js引擎,或者具备js引擎,但是没有处理js返回的方案,或者是具备了js引擎,但是没办法让站点显示启用脚本设置。基于这些情况,ajax动态加载反制爬虫还是相当有效的。具体的例子有很多,比如淘宝(在上一篇文章中我们有解释)。.

    5. Noscript标签的使用

    <noscript>标签是在浏览器(或者用户浏览标识),没有启动脚本支持的情况下触发的标签,在低级爬虫中,基本都没有配置js引擎,通常这种方式和Ajax异步加载同时使用。用于保护自己不想让爬虫接触的信息。

    6. Cookie限制

    第一次打开网页会生成一个随机cookie,如果再次打开网页这个cookie不存在,那么再次设置,第三次打开仍然不存在,这就非常有可能是爬虫在工作了。很简单,在三番屡次没有带有该带的cookie,就禁止访问。

    0x05 Anti-Anti-Spider

    这一部分笔者并不计划深入讲解,因为如果读过笔者前一部分爬虫文章的读者,都会知道,笔者基本把同一级别的主流爬虫解决方案都说的很清楚了,如果要问scrapy什么的爬虫框架,大家自行归类,从最底层到最顶层大家都是有了这些概念,我们接下来的介绍尽量从简。

    接下来我们就讨论一些关于反爬虫反制的措施。其实在这段时间内,我总结出一条用于爬虫编写的核心定律:

    像一个人一样浏览网页,像一台机器一样分析数据

    接下来我们就讨论一下在整个一系列文章出现的解决方案能突破几种限制(Python2):

    1. Urllib是最弱的web网页浏览模式,User-Agent,cookie,ip都无法解决;

    2. Requests模块与urllib2,urllib3,基本可以解决静态网页的所有问题,但是没办法解决IP限制,如果需要解决IP限制则需要使用代理,如果需要解决验证码问题,则需要自己配置OCR;

    3. Selenium+浏览器:无法解决验证码的问题,效率低,速度慢;

    4. Ghost.py无法解决验证码问题,效率低,速度慢。

    从原理上来讲,selenium或者ghost.py模式已经是完全模仿人类浏览网页方式了,事实上,他们就是,因为对于大多数人来:讲只有人类才会打开一个浏览器浏览网页,查看网页各种信息,click甚至是send_key.

    具体来讲,建议使用Requests,学习Requests模块的使用,必要时使用selenium或者ghost.py。这样,面对所有的爬虫,也许就只有验证码和IP会比较伤脑筋了,但是对于IP限制来讲,我们并不畏惧,有经验的朋友可以很快构造出代理模式浏览其他网页,多久换一次IP就需要具体调查目标网页的限制阈值了。

    那么也就是说验证码是一个巨大的门槛。诚然,的确是的,很多人致力多年研究绕过验证码。可以说是卓有成效也可以说是一筹莫展。目前比较成熟的方法就是使用机器学习识别验证码内容。但是一旦验证码识别方式改动以后,比如现在12306的验证码,这个着实是难以处理。但是大家也不要灰心,绕过验证码就一定要认认真真填写么?笔者在这里可以负责任地讲,验证码的绕过在很多的时候是通过web应用逻辑错误绕过的。

    0x06 爬虫编写注意事项

    在这一部分,笔者希望就自己的经验给大家编写爬虫提供比较可行的建议,也为大家提一个醒:

    1. 道德问题,是否遵守robots协议;

    2. 小心不要出现卡死在死循环中,尽量使用urlparser去解析分离url决定如何处理,如果简单的想当然的分析url很容易出现死循环的问题;

    3. 单页面响应超时设置,默认是200秒,建议调短,在网络允许的条件下,找到一个平衡点,避免所有的爬虫线程都在等待200,结果出现效率降低;

    4. 高效准确的判重模式,如果判重出现问题,就会造成访问大量已经访问过的页面浪费时间;

    5. 可以采用先下载,后分析的方法,加快爬虫速度;

    6. 在异步编程的时候要注意资源死锁问题;

    7. 定位元素要精准(xpath)尽量避免dirty data。

    这些问题都是笔者在学习的过程中,遇到的问题,拿出来给大家分享,希望对大家进行数据挖掘学习有所帮助。

    0x07 反馈与问题

    希望大家提出自己的意见,本系列大多数时间都在从微观的角度讲爬虫各个部件的解决方案。如果大家想知道一个完整的爬虫开发流程,欢迎留言给我,如果读者有兴趣,我还是可以从架构设计讲起,到具体的实现,再到调试运行,改造成分布式爬虫解决方案。

    同时笔者作为一个不规矩的Coder,业余时间在编写一个Web Fuzz的工具,如果读者希望围观这个项目的开发现场,我也是很乐意分享出Github地址分享出来。

    在这里还是要推荐下我自己建的Python学习群:721195303,群里都是学Python的,如果你想学或者正在学习Python ,欢迎你加入,大家都是软件开发党,不定期分享干货(只有Python软件开发相关的),包括我自己整理的一份2020最新的Python进阶资料和零基础教学,欢迎进阶中和对Python感兴趣的小伙伴加入!
     

    展开全文
  • 爬虫与爬虫

    2018-03-13 11:58:08
    爬虫和反爬的对抗一直在进行… 为了帮助更好的进行爬虫行为以及反爬, 今天就来介绍一下网页开发者常用的反爬手段。1. BAN IP :网页的运维人员通过分析日志发现最近某一个IP访问量特别特别大,某一段时间内访问...

    爬虫和反爬的对抗一直在进行着… 为了帮助更好的进行爬虫行为以及反爬, 今天就来介绍一下网页开发者常用的反爬手段。

    1. BAN IP :网页的运维人员通过分析日志发现最近某一个IP访问量特别特别大,某一段时间内访问了无数次的网页,则运维人员判断此种访问行为并非正常人的行为,于是直接在服务器上封杀了此人IP。

    解决方法:此种方法极其容易误伤其他正常用户,因为某一片区域的其他用户可能有着相同的IP,导致服务器少了许多正常用户的访问,所以一般运维人员不会通过此种方法来限制爬虫。不过面对许多大量的访问,服务器还是会偶尔把该IP放入黑名单,过一段时间再将其放出来,但我们可以通过分布式爬虫以及购买代理IP也能很好的解决,只不过爬虫的成本提高了。

    2. BAN USERAGENT :很多的爬虫请求头就是默认的一些很明显的爬虫头python-requests/2.18.4,诸如此类,当运维人员发现携带有这类headers的数据包,直接拒绝访问,返回403错误

    解决方法:直接r=requests.get(url,headers={'User-Agent':'Baiduspider'})把爬虫请求headers伪装成百度爬虫或者其他浏览器头就行了。

    案例:雪球网

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    返回的就是

    403

    403 Forbidden.

    Your IP Address: xxx.xxx.xxx.xxx .

    但是当我们这样写:

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    返回的就是

    200

    < !DOCTYPE html><html …

    3. BAN COOKIES :服务器对每一个访问网页的人都set-cookie,给其一个cookies,当该cookies访问超过某一个阀值时就BAN掉该COOKIE,过一段时间再放出来,当然一般爬虫都是不带COOKIE进行访问的,可是网页上有一部分内容如新浪微博是需要用户登录才能查看更多内容。

    解决办法:控制访问速度,或者某些需要登录的如新浪微博,在某宝上买多个账号,生成多个cookies,在每一次访问时带上cookies

    案例:蚂蜂窝

    以前因为旅游的需求,所以想到了去抓一点游记来找找哪些地方好玩,于是去了蚂蜂窝网站找游记,一篇一篇的看真的很慢,想到不如把所有文章抓过来然后统计每个词出现的频率最高,统计出最热的一些旅游景点,就写了一个scrapy爬虫抓游记,当修改了headers后开始爬取,发现访问过快服务器就会断开掉我的连接,然后过一段时间(几个小时)才能继续爬。于是放慢速度抓就发现不会再被BAN了。

    4. 验证码验证 :当某一用户访问次数过多后,就自动让请求跳转到一个验证码页面,只有在输入正确的验证码之后才能继续访问网站

    解决办法:python可以通过一些第三方库如(pytesser,PIL)来对验证码进行处理,识别出正确的验证码,复杂的验证码可以通过机器学习让爬虫自动识别复杂验证码,让程序自动识别验证码并自动输入验证码继续抓取

    案例:安全客

    当访问者对安全客访问过快他就会自动蹦出一个验证码界面。

    如下:

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    5. javascript渲染 :网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染<script>标签中的js代码将信息展现在浏览器当中,而爬虫是不具备执行js代码的能力,所以无法将js事件产生的信息读取出来

    解决办法:通过分析提取script中的js代码来通过正则匹配提取信息内容或通过webdriver+phantomjs直接进行无头浏览器渲染网页。

    案例:前程无忧网

    随便打开一个前程无忧工作界面,直接用requests.get对其进行访问,可以得到一页的20个左右数据,显然得到的不全,而用webdriver访问同样的页面可以得到50个完整的工作信息。

    6. ajax异步传输 :访问网页的时候服务器将网页框架返回给客户端,在与客户端交互的过程中通过异步ajax技术传输数据包到客户端,呈现在网页上,爬虫直接抓取的话信息为空

    解决办法:通过fiddler或是wireshark抓包分析ajax请求的界面,然后自己通过规律仿造服务器构造一个请求访问服务器得到返回的真实数据包。

    案例:拉勾网

    打开拉勾网的某一个工作招聘页,可以看到许许多多的招聘信息数据,点击下一页后发现页面框架不变化,url地址不变,而其中的每个招聘数据发生了变化,通过chrome开发者工具抓包找到了一个叫请求了一个叫做http://www.lagou.com/zhaopin/Java/2/?filterOption=3的网页,

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    打开改网页发现为第二页真正的数据源,通过仿造请求可以抓取每一页的数据。

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    很多网页的运维者通过组合以上几种手段,然后形成一套反爬策略,就像之前碰到过一个复杂网络传输+加速乐+cookies时效的反爬手段。

    7. 加速乐 :有些网站使用了加速乐的服务,在访问之前先判断客户端的cookie正不正确。如果不正确,返回521状态码,set-cookie并且返回一段js代码通过浏览器执行后又可以生成一个cookie,只有这两个cookie一起发送给服务器,才会返回正确的网页内容。

    解决办法 :将浏览器返回的js代码放在一个字符串中,然后利用nodejs对这段代码进行反压缩,然后对局部的信息进行解密,得到关键信息放入下一次访问请求的头部中。

    案例:加速乐

    这样的一个交互过程仅仅用python的requests库是解决不了的,经过查阅资料,有两种解决办法:

    第一种将返回的set-cookie获取到之后再通过脚本执行返回的eval加密的js代码,将代码中生成的cookie与之前set-cookie联合发送给服务器就可以返回正确的内容,即状态码从521变成了200。

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    直接通过这一段就可以获取返回的一段经过压缩和加密处理的js代码

    类似于这种:

    所以我们需要对代码进行处理,让其格式化输出,操作之后如下:

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    这里我们就需要对这段JS做下修改,假设我们先把这段JS代码存在了string sHtmlJs这个字符串变量里,我们需要把eval这里执行的结果提取出来,把eval替换成 return,然后把整个代码放到一个JS函数里,方式如下:

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    解密后的代码如下:

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    通过观察代码发现了一段:

    显而易见,这个dc就是我们想要的cookie,执行JS,让函数返回DC就OK了。

    我还发现了其中有一段

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    当服务器发现浏览器的头部是_phantom或者__phantommas就让浏览器进行死循环,即阻止用selenium操控phantomjs来访问网页。

    至此两端加速乐cookie如下:

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    这个破解方法很麻烦不建议用,所以我想出了第二种方法

    第二种办法就是通过selenium的webdriver模块控制浏览器自动访问网页然后输出浏览器头部信息中的cookie,封装在一个字典中,将其通过requests中的jar模块转换成cookiejar放入下一次访问的request中就可以持续访问,因为cookie的时效大约一个小时左右。

    以下是处理自动生成一个新的有效cookie的代码:

    反爬烦的不行?看看这个神级程序员怎么来破解的!强的不行!

    切记,放在requests中访问的headers信息一定要和你操控的浏览器headers信息一致,因为服务器端也会检查cookies与headers信息是否一致

    最厉害的武功是融会贯通,那么最厉害的反爬策略也就是组合目前有的各种反爬手段,当然也不是无法破解,这就需要我们对各个反爬技术及原理都很清楚,梳理清楚服务器的反爬逻辑,然后再见招拆招,就可以让我们的爬虫无孔不入。

    展开全文
  • 爬虫 反扒与反扒

    2018-05-14 21:57:00
    爬虫策略及破解方法爬虫和反爬的对抗一直在进行…为了帮助更好的进行爬虫行为以及反爬,今天就来介绍一下网页开发者常用的反爬手段。 0.0 robots.txt反扒  爬虫协议:防君子不防小人 1. IP:网页的运维...

    反爬虫策略及破解方法
    爬虫和反爬的对抗一直在进行着…为了帮助更好的进行爬虫行为以及反爬,今天就来介绍一下网页开发者常用的反爬手段。

    0.0 robots.txt反扒
      爬虫协议:防君子不防小人
    1. IP:网页的运维人员通过分析日志发现最近某一个IP访问量特别特别大,某一段时间内访问了无数次的网页,则运维人员判断此种访问行为并非正常人的行为,
          于是直接在服务器上封杀了此人IP。 解决方法:此种方法极其容易误伤其他正常用户,因为某一片区域的其他用户可能有着相同的IP,导致服务器少了许多正常用户的访问,
          所以一般运维人员不会通过此种方法来限制爬虫。不过面对许多大量的访问,服务器还是会偶尔把该IP放入黑名单,过一段时间再将其放出来,
    但我们可以通过分布式爬虫以及购买代理IP也能很好的解决,只不过爬虫的成本提高了。
    2. USERAGENT:很多的爬虫请求头就是默认的一些很明显的爬虫头python-requests/2.18.4,诸如此类,当运维人员发现携带有这类headers数据包,直接拒绝访问,返回403错误 解决方法:直接r=requests.get(url,headers={'User-Agent':'Baiduspider'})把爬虫请求headers伪装成百度爬虫或者其他浏览器头就行了。
        user-agent控制访问
          解决方案1:headers头携带user-agent浏览器信息就可以解决
          解决方案2:使用Fakeuseragent模块解决

    案例:雪球网 返回的就是403403 Forbidden. Your IP Address:xxx.xxx.xxx.xxx.但是当我们这样写: 返回的就是200< !DOCTYPE html><html …
    3. COOKIES:服务器对每一个访问网页的人都set-cookie,给其一个cookies,当该cookies访问超过某一个阀值时就BAN掉该COOKIE,过一段时间再放出来,
    当然一般爬虫都是不带COOKIE进行访问的,可是网页上有一部分内容如新浪微博是需要用户登录才能查看更多内容。 解决办法:控制访问速度,或者某些需要登录的如新浪微博,在某宝上买多个账号,生成多个cookies,在每一次访问时带上cookies
    案例:蚂蜂窝 以前因为旅游的需求,所以想到了去抓一点游记来找找哪些地方好玩,于是去了蚂蜂窝网站找游记,一篇一篇的看真的很慢,想到不如把所有文章抓过来然后统计每个词
    出现的频率最高,统计出最热的一些旅游景点,就写了一个scrapy爬虫抓游记,当修改了headers后开始爬取,发现访问过快服务器就会断开掉我的连接,
    然后过一段时间(几个小时)才能继续爬。于是放慢速度抓就发现不会再被BAN了。
    4. 验证码验证:当某一用户访问次数过多后,就自动让请求跳转到一个验证码页面,只有在输入正确的验证码之后才能继续访问网站
    解决办法:python可以通过一些第三方库如(pytesser,PIL)来对验证码进行处理,识别出正确的验证码,复杂的验证码可以通过机器学习让爬虫自动识别复杂验证码,
    让程序自动识别验证码并自动输入验证码继续抓取 案例:安全客当访问者对安全客访问过快他就会自动蹦出一个验证码界面。如下: 5. javascript渲染:网页开发者将重要信息放在网页中但不写入html标签中,而浏览器会自动渲染<script>标签中的js代码将信息展现在浏览器当中,
    而爬虫是不具备执行js代码的能力,所以无法将js事件产生的信息读取出来 解决办法:通过分析提取script中的js代码来通过正则匹配提取信息内容或通过webdriver+phantomjs直接进行无头浏览器渲染网页。
    案例:前程无忧网随便打开一个前程无忧工作界面,直接用requests.get对其进行访问,可以得到一页的20个左右数据,显然得到的不全,
    而用webdriver访问同样的页面可以得到50个完整的工作信息。
    6. ajax异步传输:访问网页的时候服务器将网页框架返回给客户端,在与客户端交互的过程中通过异步ajax技术传输数据包到客户端,呈现在网页上,爬虫直接抓取的话信息为空
    解决办法:通过fiddler或是wireshark抓包分析ajax请求的界面,然后自己通过规律仿造服务器构造一个请求访问服务器得到返回的真实数据包。
    案例:拉勾网打开拉勾网的某一个工作招聘页,可以看到许许多多的招聘信息数据,点击下一页后发现页面框架不变化,url地址不变,而其中的每个招聘数据发生了变化,
    通过chrome开发者工具抓包找到了一个叫请求了一个叫做https://www.lagou.com/zhaopin/Java/2/?filterOption=3的网页,打开改网页发现为第二页真正的数据源,
    通过仿造请求可以抓取每一页的数据。很多网页的运维者通过组合以上几种手段,然后形成一套反爬策略,就像之前碰到过一个复杂网络传输+加速乐+cookies时效的反爬手段。
    7.加速乐:有些网站使用了加速乐的服务,在访问之前先判断客户端的cookie正不正确。如果不正确,返回521状态码,set-cookie并且返回一段js代码
    通过浏览器执行后又可以生成一个cookie,只有这两个cookie一起发送给服务器,才会返回正确的网页内容。
    解决办法:将浏览器返回的js代码放在一个字符串中,然后利用nodejs对这段代码进行反压缩,然后对局部的信息进行解密,得到关键信息放入下一次访问请求的头部中。
    案例:加速乐 这样的一个交互过程仅仅用python的requests库是解决不了的,经过查阅资料,有两种解决办法: 第一种将返回的set-cookie获取到之后再通过脚本执行返回的eval加密的js代码,将代码中生成的cookie与之前set-cookie联合发送给服务器就可以返回正确的内容,
    即状态码从521变成了200。直接通过这一段就可以获取返回的一段经过压缩和加密处理的js代码类似于这种:所以我们需要对代码进行处理,让其格式化输出,操作之后如下: 这里我们就需要对这段JS做下修改,假设我们先把这段JS代码存在了string sHtmlJs这个字符串变量里,我们需要把eval这里执行的结果提取出来,把eval替换成 return,
    然后把整个代码放到一个JS函数里,方式如下:解密后的代码如下: 通过观察代码发现了一段: 显而易见,这个dc就是我们想要的cookie,执行JS,让函数返回DC就OK了。我还发现了其中有一段 当服务器发现浏览器的头部是_phantom或者__phantommas就让浏览器进行死循环,即阻止用selenium操控phantomjs来访问网页。 至此两端加速乐cookie如下:这个破解方法很麻烦不建议用,所以我想出了第二种方法 第二种办法就是通过selenium的webdriver模块控制浏览器自动访问网页然后输出浏览器头部信息中的cookie,封装在一个字典中,
    将其通过requests中的jar模块转换成cookiejar放入下一次访问的request中就可以持续访问,
    因为cookie的时效大约一个小时左右。以下是处理自动生成一个新的有效cookie的代码: 切记,放在requests中访问的headers信息一定要和你操控的浏览器headers信息一致,因为服务器端也会检查cookies与headers信息是否一致 最厉害的武功是融会贯通,那么最厉害的反爬策略也就是组合目前有的各种反爬手段,当然也不是无法破解,这就需要我们对各个反爬技术及原理都很清楚,
    梳理清楚服务器的反爬逻辑,然后再见招拆招,就可以让我们的爬虫无孔不入。

    8、转换成图片 最恶心最恶心的反爬虫,把页面全部转换成图片,你抓取到的内容全部隐藏在图片里。想提取内容,休想。

       解决办法:图像识别吧,但是感觉代价很大。。。

     

     

    先写到这里吧,持续更新ing。

     

     

    【python网络爬虫】之requests相关模块

     【python 网络爬虫】之scrapy系列

     

     

    更新中。。。

    转载于:https://www.cnblogs.com/pupilheart/p/9038381.html

    展开全文
  • 没学习之前我理解字面意思就是你爬虫网站,然后该网站顺你的ip等会对你的网络电脑等造成损失 爬虫—— 使用任何技术手段批量获取网站信息的一种方式,关键在批量。 爬虫—— 使用任何技术手段,阻止别人批量...
  • 时常要为不断更新的爬虫策略而苦恼,究竟是魔高一尺还是道高一丈,从来就没有真正的分出过胜负,一个为了完成爬虫工作,一个为了保卫网站不被爬虫入侵,进行一场持久的抗战。对于Python爬虫来说,有哪些常见的...
  • 导语:互联网最激烈的对抗战场,除了安全专家与黑客之间,大概就是爬虫与爬虫领域了。据统计,爬虫流量早已超过了人类真实访问请求流量。互联网充斥形形色色的爬虫,云上、传统行业都有不同规模的用户被爬虫爱好...
  • 一.简介万维网上有着无数的网页,包含海量的信息,有些时候我们需要从某些网站提取出我们感兴趣、有价值的内容。但是不可能靠人工去点击网页复制粘贴。我们需要一种能自动获取网页...
  • 数据的重要性如今已然是大数据时代,数据正在驱动业务开发,驱动运营手段,有了数据的支撑可以对用户进行用户画像,个性化定制,数据可以指明方案设计和决策优化方向,所以互联网产品的开发都是离不开对数据的...
  • 时常要为不断更新的爬虫策略而苦恼,究竟是魔高一尺还是道高一丈,从来就没有真正的分出过胜负,一个为了完成爬虫工作,一个为了保卫网站不被爬虫入侵,进行一场持久的抗战。对于Python爬虫来说,有哪些常见的...
  • 时常要为不断更新的爬虫策略而苦恼,究竟是魔高一尺还是道高一丈,从来就没有真正的分出过胜负,一个为了完成爬虫工作,一个为了保卫网站不被爬虫入侵,进行一场持久的抗战。对于Python爬虫来说,有哪些常见的...
  • 时常要为不断更新的爬虫策略而苦恼,究竟是魔高一尺还是道高一丈,从来就没有真正的分出过胜负,一个为了完成爬虫工作,一个为了保卫网站不被爬虫入侵,进行一场持久的抗战。对于Python爬虫来说,有哪些常见的...
  • 爬虫之签名(6) ...前面介绍的爬虫策略基本上都有规律可寻,但签名很让人头疼,因为必须硬手段破解,也就是硬头皮去调试代码,找出sign生成算法,然后再模拟该算法生成合法请求进行数据
  • 文:八九寺真宵 from:SegmentFault (侵删) ...就算是一些不知名的小网站,多多少少还会检查一下headers验证一下访者的身份,大网站就更不用说了(我一次网易云的时候,忘记加headers,直接被红掉)  
  • 原标题:python爬虫反爬,你几乎可以横扫大部分 css 字体加密的网站你已经知道了对方是如何自定义字体加密的了 你要想去反爬你就要先站在对方的角度去思考问题有句话这么说来“知己知彼,才能那啥” 那么对于...
  • 时常要为不断更新的爬虫策略而苦恼,究竟是魔高一尺还是道高一丈,从来就没有真正的分出过胜负,一个为了完成爬虫工作,一个为了保卫网站不被爬虫入侵,进行一场持久的抗战。对于Python爬虫来说,有哪些常见的...
  • 有些网站是防爬虫的。其实事实是,凡是有一定规模的网站,大公司的网站,或是盈利性质比较...  就算是一些不知名的小网站,多多少少还会检查一下headers验证一下访者的身份,大网站就更不用说了(我一次网易云的...
  • 之前提到过,有些网站是防爬虫的。...  本节内容就这两种反爬策略提出一些对策。 身份伪装   就算是一些不知名的小网站,多多少少还会检查一下headers验证一下访者的身份,大网站就更不用说了(我一...
  • 网络爬虫-distil networks爬虫服务

    万次阅读 2018-08-22 18:24:42
    抓过大量数据的童鞋应该...一个是旋转图片,一个是播报语音,想想都难受,误伤率以及体验感都会很差,但是既然买了这个服务的公司,肯定也是数据十分珍贵吧,否则也不会冒丢失客户的风险去搞这么个爬虫服务。...
  • Ajax 即“Asynchronous Javascript And XML”(异步 JavaScript 和 XML),是指一种创建交互式、快速...这意味可以在不重新加载整个网页的情况下,对网页的某部分进行更新。就是很多网站都有下拉加载,这时会加载...
  • Data Base Technique • 数据库技术 Electronic Technology & Software Engineering 电子技术与软件工程 • 187 【关键词】Scrapy 爬虫 ...微博作为网民交流互动的平台,时刻产生大量的数据,对于研究具有重要...
  • 爬虫与爬虫的修罗场 哪种平台最吸引爬虫爱好者,当然是...这些都是爬虫与爬虫的修罗场,他不想叫你,你越想 对他是核心数据,对你也是核心数据 今天要分析的网站 今天我们弄一下大众点评 学习阶段,我们要抱...

空空如也

空空如也

1 2 3 4 5 ... 14
收藏数 276
精华内容 110
关键字:

反着爬