精华内容
下载资源
问答
  • 解决反爬虫四个基本策略## 标题  因为准备测试数据,我们要爬一个网站的很多内容。为了防止被屏蔽,爬虫特意设计成单线程同步爬虫。结果在爬取约3万页的时候,对方发回了AccessDenied。请等待一段时间后再启动爬网...

    解决反爬虫四个基本策略## 标题
      因为准备测试数据,我们要爬一个网站的很多内容。为了防止被屏蔽,爬虫特意设计成单线程同步爬虫。结果在爬取约3万页的时候,对方发回了AccessDenied。请等待一段时间后再启动爬网程序,但结果仍然是拒绝访问。这时候我才知道,这个想法太幼稚了,我应该找到别的办法来避免。本文介绍了这些其他方法。
    1.伪装用户代理。
    Useragent是HTTP协议中的一个字段,它的作用是描述发送HTTP请求的终端的一些信息。通过这个字段,服务器可以知道谁将访问该网站。每个浏览器,每个正规爬虫都有自己固定的用户代理,所以只要把这个字段改成这些知名的用户代理,就可以成功伪装。但是不建议伪装知名爬虫,因为这些爬虫很可能有固定IP,比如百度爬虫。相反,伪装浏览器的useragent是个好主意,因为浏览器可以被任何人使用。换句话说,没有固定的IP。建议准备几个浏览器用户代理,每次发送请求时随机选择其中一个用户代理填写。
    IE的几个用户代理如下:
    Mozilla/4.0(兼容;MSIE8.0WindowsNT6.0)
    Mozilla/4.0(兼容;MSIE7.0WindowsNT5.2)
    Mozilla/4.0(兼容;MSIE6.0WindowsNT5.1)
    设置代码如下(假设使用了JAVA+HttpClient4.1.2)
    httpgetmethod=Newhttpget(“URL”);
    getmethod.setheader(“user-agent”,“useragentcontent”);
    2.登录.
    虽然有些网站可以不登录就访问,但一旦检测到一个IP的流量异常,就会立即请求登录。如果没有验证码,果断登录。但是,在登录之前要做一些准备——找出开机自检登录请求应该附加哪些参数。我的方法是用badboy记录登录过程,然后将过程导出到jmeter文件,最后检查用jmeter登录所需的参数。
    由于httpClient会自动管理cookie,直接获取或发布就够了。
    3.使用代理。
    如果对方以某一段时间内某个IP的访问次数来判断爬虫,然后屏蔽这些爬虫的IP,那么上述伪装就无效了。
    对方的思维隐含着一个假设:爬虫的访问量一定比正常用户大很多,所以就让这个假设站不住脚吧。这时候,就该代理了。所谓代理,就是用户和网站之间的第三方:用户先把请求发送给代理,然后代理再发送给服务器,看起来好像是代理在访问网站。此时,服务器将对代理的访问进行计数。
    另外,如果是ADSL拨号,也不用担心IP被屏蔽,因为一般来说,重拨的时候会得到不同的IP。
    4.降低访问频率。
    找不到自由稳定的代理怎么办?那是最后的手段——减少探视次数。这样做可以达到与使用代理相同的效果——防止从流量中看到它。当然抓效率会差很多。另外,减少访问次数只是一个指导思想。在这个思路下,可以得到很多具体的做法,比如:每页随机取一秒(个人感觉比固定时间好);限制每天捕获的页数。
    防止被屏蔽的“原理”就是冒充正常用户,只要遵循这个“原理”,总能找到具体的“方法”。
    文章部分内容源于网络,联系侵删*
    文章参考源于http://h.zhimaruanjian.com/news/2191.html

    展开全文
  • 爬虫最讨厌的就是反爬虫,但是如果没有反爬虫的存在的,那么大家都可以随随便便就进行爬虫,那么服务器又怎么支撑得起来呢? 所以说反爬虫是一个门槛,跨过这一个门槛就可以轻松掌握爬虫的技术了,跨不过那么你就...

    爬虫最讨厌的就是反爬虫,但是如果没有反爬虫的存在的,那么大家都可以随随便便就进行网络爬虫,那么服务器又怎么支撑得起来呢?那么又怎么彰显我们的能力呢?

    所以说反爬虫是一个门槛,跨过这一个门槛就可以轻松掌握爬虫的技术了,跨不过那么你就一直都在起点而已。

    目前常见的反爬虫无非也就是那几种(检查爬虫的请求头、检查发起请求的频率、添加验证码……)


    第一种处理请求头

    对于请求头进行处理就是一个非常简单的事情了,可以直接使用浏览器的请求头;

    headers = {"User-Agent":'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.122 Safari/537.36'}
    # 直接从浏览器获取一个请求头放置在程序中调用即可
    

    也可以使用python中的第三方库fake-useragent 进行设置,使用python中的第三方库还有一个好处就是:该模块中已经集成了所有的浏览器的请求头,可以直接进行导入,同时还可以随意切换请求头信息。

    from fake_useragent import UserAgent
    
    ua = UserAgent()        # 获取所有整合之后的浏览器请求头信息
    
    headers = {'User-Agent':ua.random}       # 随机获取一个请求头
    

    第二种请求频率的处理

    对于服务器对IP地址进行请求次数的限制,当同一个IP在一定的时间内请求的次数过快的时候,就会采取一定的措施进行限制,甚至于会封了该IP地址。

    对于这种情况呢?最简单直接的就是添加延时函数,使得请求的频率下降,但同时也会减低了爬虫的效率,这就不是我们想要的效果了。

    另外一个办法就是更换代理IP地址,使用代理IP地址,每发起一定次数的请求之后就更换一个IP地址,这样子就是一个非常完美的爬虫了。对于如何更换代理IP以及建立一个属于自己的代理IP池,在我的上几个文章已经有了详细的介绍了,这里就不加以讲解了。
    介绍几个免费高匿代理网站:(西祠代理、快代理、云代理……)


    第三种验证码的处理

    对于验证码如今网络上存在着多种不同的形式的验证码,首先介绍几种简单的验证码形式吧。
    字符验证码:在图片上随机产生数字、英文字母或者汉字,一般是4位或者6位的验证码字符。

    图形验证码:这类验证码大多是计算机随机产生一个字符串,在把字符串增加噪点、干扰线、变形、重叠、不同颜色、扭曲组成一张图片来增加识别难度。

    (上面两类验证码的解决方法:使用orc模块进行二值化图片,提取图片验证码)

    如今网络上添加到图片中噪点技术已经相当的成熟,一般使用简单的orc模块进行处理,已经难以识别出验证码内容了。一般都需要结合到机器学习,使用训练好的模型进行识别图片,获取图片验证码内容;或者把图片上传到一些打码平台,使用打码平台的返回结果进行操作。

    滑动验证码:也叫行为验证码,比较流行的一种验证码,通过用户的操作行为来完成验证,其中最出名的就是极验。

    (解决方案:通过开发者工具,获取原图片以及需要滑动的图片,使用程序对比两张图片的RGB,得出需要活动的距离,之后使用自动化工具(selenium)进行滑动登录,注意滑动的使用需要添加一定的延时或者加速度,使得滑动过程没有那么的平滑,模拟人的行为)

    滑动验证码的原理就是使用机器学习中的深度学习技术,根据一些特征来区分是否为正常用户。通过记录用户的滑动速度,还有每一小段时间的瞬时速度,用户鼠标点击情况,以及滑动后的匹配程度来识别。而且,不是说滑动到正确位置就是验证通过,而是根据特征识别来区分是否为真用户,滑到正确位置只是一个必要条件。

    点触验证码:点击类验证码都是给出一张包含文字的图片,通过文字提醒用户点击图中相同字的位置进行验证。(解决方案:获取验证码图片,以及需要点击的验证字的顺序,之后对图片进行识别,获取每个验证字的内容,之后组成正确的顺序,获取每个验证字的位置,使用自动化工具进行点击对应的位置)

    这种相对于上面的几种验证码而言才是最难解决的。

    第四种JavaScript前端渲染数据,对网页进行渲染

    1、尝试在开发者工具中查找数据的来源,找到数据的接口,使用数据接口进行调用,获取数据,简单直接;如果使用开发者工具无法抓到数据包,可以使用第三方的抓包软件进行抓包(fiddler等等)。
    2、对于一些复杂的网页,在找不到数据接口的情况下,可以使用selenium模块,使用内置浏览器模拟网页正常打开,获取源代码数据,但是效率不高。
    3.对于一些大型的网站,在PC端的网页版难以寻找到突破口的时候,可以尝试使用网页版的手机端网站,进行获取数据(前提:存在手机端的网页版)。

    展开全文
  • 1.伪装成浏览器,控制爬取速度

    1.伪装成浏览器,控制爬取速度

    展开全文
  • 解决反爬虫fake-useragent 的用法

    千次阅读 2018-12-27 22:51:20
    在利用爬虫爬取网站数据时,频繁更换它可以避免触发相应的反爬机制 ** 安装 pip install fake-useragent 用法 引入,生成实例: from fake_useragent import UserAgent ua = UserAgent() 如果报错 fake_useragent...

    **

    UserAgent 就是用户代理,又叫报头,是一串字符串,相当于浏览器的身份证号
    在利用爬虫爬取网站数据时,频繁更换它可以避免触发相应的反爬机制

    **
    安装

    pip install fake-useragent
    

    用法
    引入,生成实例:

    from fake_useragent import UserAgent
    ua = UserAgent()
    

    如果报错 fake_useragent.errors.FakeUserAgentError: Maximum amount of retries reached
    首先检查网络,然后:
    如果不希望缓存数据库或不需要可写文件系统:

    ua = UserAgent(cache=False)
    

    如果不想使用宿主缓存服务器,可以禁用服务器缓存:

    ua = UserAgent(use_cache_server=False)
    

    如果以上方法均报错,执行:

    ua = UserAgent(verify_ssl=False)
    

    由于 fake-useragent 库维护的 user-agent 列表存放在在线网页上
    过低版本依赖的列表网页可能就会报 403
    随手更新:

    ua.update()
    

    查看全部 user-agent :

    ua.data_browsers
    
    In [20]: len(reduce(lambda a, b: a+b, ua.data_browsers.values()))
    Out[20]: 250
    

    获取随机值:

    In [26]: ua.random
    Out[26]: 'Mozilla/5.0 (Windows NT 5.1) AppleWebKit/537.36 (KHTML, like Gecko) 
    Chrome/31.0.1650.16 Safari/537.36'
    

    卸载

    pip install -U fake-useragent
    

    源码下载
    https://github.com/hellysmile/fake-useragent

    展开全文
  • 滑动验证是网站反爬虫、反作弊的升级,滑动验证也是机器学习在反爬虫、反作弊领域的应用;此前停止了每日一更的专题分享,进入了不定期的项目分享,本项目就是分享的第一个。 image 本项目也是一个简单的全栈...
  • 本文将描述一种尽量简单的反爬虫方案,可以在十几分钟内解决部分简单的爬虫问题,缓解恶意攻击或者是系统超负荷运行的状况;至于复杂的爬虫以及更精准的防御,需要另外讨论。爬虫和反爬虫日益成为每家公司的标配系统...
  • Python爬虫、反爬虫和反反爬虫

    千次阅读 多人点赞 2018-05-03 20:02:31
    我主要对反爬虫和反反爬虫做一个简单的总结我想补充一下关于爬虫和反爬虫,以及为什么要爬虫,为什么要反爬虫,也就是从技术和技术带来的影响的角度来看待爬虫。发现一个很有意思的链接,爬虫、反爬虫、反反爬虫 1 ...
  • 网站做了很多反爬虫工作,爬起来有些艰难,本文详细介绍了python解决网站的反爬虫策略,有需要的小伙伴可以参考下。
  • 主要介绍了Python常见反爬虫机制解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • 爬虫与反爬虫

    万次阅读 2018-01-29 12:57:52
    爬虫反爬虫运行现状 真实世界的爬虫比例 哭笑不得的决策思路 爬虫反爬虫技术现状 为python平反 无法绕开的误伤率 前端工程师的逆袭 误伤,还是误伤 爬虫反爬虫套路...
  • 现如今,很多网站为了防止网站信息流失,都会制定一些反爬虫机制,那么对于爬虫工作者来说应该怎么解决这个问题呢?下面就给大家详细介绍下相关解决办法。 一般来说,真实用户在正常访问浏览网站会很慢,但是如果一...
  • 不同类型的网站都有不一样的反爬虫机制,判断一个网站是否有反爬虫机制需要根据网站设计架构、数据传输方式和请求方式等各个方面评估。下面是常用的反爬虫机制。 用户请求的Headers。 用户操作网站行为。 网站目录...
  • 反爬虫措施: 常见的反爬措通常来说有三种: 通过分析用户请求的Headers信息进行反爬虫。 通过判断同一个IP在短时间内是否频繁访问对应网站 通过动态页面增加爬取的难度,达到反爬虫的目的。 解决方案: 如果遇到...
  • 爬虫原理及反爬虫机制以及反爬虫方法的应对策略

    千次阅读 多人点赞 2019-04-27 23:00:04
    爬虫原理及反爬虫机制关于爬虫爬虫原理反爬虫机制1.检验数据头User-Agent反爬虫机制解析:2.访问频率限制或检验3.蜜罐技术反爬虫机制的应对方法1.设定Request Headers中的User-Agent2.设定随机访问频率3.代理IP或者...
  • 本人是python新手,目前在看中国大学MOOC的嵩天老师的爬虫课程,其中一个实例是讲如何爬取淘宝商品信息 以下是代码: import requests import re def getHTMLText(url): try: r = requests.get(url, timeout=30)...
  • 爬虫之简单反爬虫措施和解决方法

    千次阅读 2018-07-18 10:21:15
    0x01 常见的反爬虫  这几天在爬一个网站,网站做了很多反爬虫工作,爬起来有些艰难,花了一些时间才绕过反爬虫。在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。  从功能上来讲,爬虫一般分为...
  • 爬虫:通过使用代理池来解决部分反爬虫的方法 对《Python3网络爬虫开发实战》部分内容的总结。 本文目录爬虫:通过使用代理池来解决部分反爬虫的方法1.所遇到的问题2.使用代理可以解决反爬虫合理的创建标题,有助...
  • 反爬虫文件

    2018-09-18 20:05:40
    在爬取网站时,网站可能会有反爬虫机制,使得你的权限不够,返回的值为400,加入我的这个反爬虫文件就可以完美解决与爬取的网站链接不上的问题
  • 反爬虫

    2018-11-19 10:45:29
    通过Headers反爬虫 从用户请求的Headers反爬虫是最常见的反爬虫策略。很多网站都会对Headers的User-Agent进行检测,还有一部分网站会对Referer进行检测(一些资源网站的防盗链就是检测Referer)。 如果遇到了这类...
  • 常见的反爬虫措施以及解决方法

    千次阅读 2019-09-24 11:22:11
    一、通过 Headers 反爬虫 从用户请求的 Headers 反爬虫是最常见的反爬虫策略。很多网站都会对 Headers 的 User-Agent 进行检测,还有一部分网站会对 Referer 进行检测(一些资源网站的防盗链就是检测 Referer)。...
  • 知乎使用selenium反爬虫解决方案
  • python3爬虫(7)反反爬虫解决方案

    千次阅读 2019-03-05 15:51:26
    越来越多的网站具有反爬虫特性,有的用图片隐藏关键数据,有的使用反人类的验证码,建立反反爬虫的代码仓库,通过与不同特性的网站做斗争(无恶意)提高技术。(欢迎提交难以采集的网站)(因工作原因,项目暂停)...
  • 4 文本混淆反爬虫 4.1 图片伪装为文字反爬虫 有些文字内容实际是图片伪装的 提取图片的内容(图片请求响应结果res.content就是图片的字节数据,可以直接write为图片对象,也可以打开为图片对象,看案例) 图片对象...
  • 最近酒店公司需要对接第三方订单数据,但由于没有对应的接口所以只能使用爬虫的方式进行订单数据的爬取,但是部分第三方页面做了反爬虫处理,这里记录下java - chromdriver处理方法 问题描述: 这里使用淘宝...
  • Python_反爬虫解决办法

    2019-02-18 21:10:16
    反爬虫模拟浏览器 有的时候,我们爬取网页的时候,会出现403错误,因为这些网页为了防止别人恶意采集信息,所以进行了一些反爬虫的设置。 那我们就没办法了吗?当然不会! 我们先来做个测试,访问国内银行业金融机构...
  • 本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。 从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。这里我们只讨论数据采集部分。 一般网站从三个方面...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,746
精华内容 6,298
关键字:

怎么解决反爬虫

爬虫 订阅