收藏 400-998-9776 转2 服务时间 周一至周日 9:00-23:00 注意:本站不提供境外服务
您的位置:首页 >文章内容
爬虫用User-Agent可以绕过反爬虫
来源:互联网 作者:admin 时间:2019-02-21 16:35:10

    要想使用爬虫来获取数据,免不了要了解反爬虫的,如果不能绕过网站的反爬虫,这样无法爬取到大量的数据。那么爬虫要如何才能够绕过网站的反爬虫呢?


    网站设置的反爬虫比较多,就不一一详说了,这里以User-Agent为例,详细介绍下关于爬虫用User-Agent可以绕过反爬虫的知识点。


    我们首先要了解下User-Agent,中文名为用户代理,简称UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。一些网站常常通过判断UA来给不同的操作系统、不同的浏览器发送不同的页面,因此可能造成某些页面无法在某个浏览器中正常显示,但通过伪装UA可以绕过检测。浏览器向服务器发起请求的流程图,可以用下图表示:


爬虫用User-Agent可以绕过反爬虫


    这里以火狐浏览器和谷歌浏览器为例,UA的格式或者说表现形式是这样的:


爬虫用User-Agent可以绕过反爬虫


    User-Agent在网络请求中充当什么角色?


    在网络请求当中,User-Agent是标明身份的一种标识,服务器可以通过请求头参数中的User-Agent来判断请求方是否是浏览器、客户端程序或者其他的终端(当然,User-Agent的值为空也是允许的,因为它不是必要参数)。


爬虫用User-Agent可以绕过反爬虫


    浏览器的角色,如上图方框中所示,那么User-Agent的角色,就是表明身份。


    为什么反爬虫会选择User-Agent这个参数呢?


    从上面的介绍中,可以看出它是终端的身份标识。意味着服务器可以清楚的知道,这一次的请求是通过火狐浏览器发起的,还是通过IE浏览器发起的,甚至说是否是应用程序(比如Python)发起的。


    网站的页面、动效和图片等内容的呈现是借助于浏览器的渲染功能实现的,浏览器是一个相对封闭的程序,因为它要确保数据的成功渲染,所以用户无法从浏览器中大规模的、自动化的获取内容数据。


    而爬虫却不是这样的,爬虫生来就是为了获取网络上的内容并将其转化为数据。这是两种截然不同的方式,你也可以理解为通过编写代码来大规模的、自动化的获取内容数据,这是一种骚操作。


    选择User-Agent这个参数,是因为编程语言都有默认的标识,在发起网络请求的时候,这个标识在你毫不知情的情况下,作为请求头参数中的User-Agent值一并发送到服务器。比如Python语言通过代码发起网络请求时,User-Agent的值中就包含Python。同样的,Java和PHP这些语言也都有默认的标识。


    既然知道编程语言的这个特点,再结合实际的需求,那么反爬虫的思路就出来了。这是一中黑名单策略,只要出现在黑名单中的请求,都视为爬虫,对于此类请求可以不予处理或者返回相应的错误提示。

爬虫用User-Agent可以绕过反爬虫

    为什么用黑名单策略不用白名单策略?


    现实生活中,浏览器类型繁多(火狐浏览器、谷歌浏览器、360浏览器、傲游浏览器、欧普拉浏览器、世界之窗浏览器、QQ浏览器等),想要将所有的浏览器品牌、类型以及对应的标识收集并放到名单中,那是不实际的,假如漏掉了哪一种,那么对网站来说是一种损失。


    再者说来,很多的服务并不仅仅开放给浏览器,有些时候这些服务以API的形式向应用程序提供服务,比如安卓软件的后端API,为安卓软件程序提供数据服务,而软件本身只承担界面和结构的任务,而数据则从后端API获取。这个时候,发起的请求中,User-Agent就会变成Android。这就是不能使用白名单策略的原因。


    而黑名单在于简单,当你希望屏蔽来自于Python代码的请求或者来自于Java代码的请求时,只需要将其加入黑名单中即可。


    了解到这里,大家可以知道了为什么爬虫用User-Agent可以绕过反爬虫了。我们是使用User-Agent时,最好可以轮流使用不同的浏览器User-Agent,这样可以降低被发现的几率,否则全是同一种User-Agent肯定是由问题的。


推荐阅读
  • 10 2019-07
    动态IP和静态IP线路的区别

    动态IP和静态IP线路的区别,估计许多人都不太清楚的。其实静态IP一般应用于服务器专线,动态IP一般应用于家庭宽带,那么我们使用什么样的ip线路好呢?这可以看我们的项目需要的,比如挂

  • 30 2019-04
    爬虫代理找高匿名好还是不匿名好呢?

    爬虫代理找高匿名好还是不匿名好呢?什么是高匿名爬虫代理、匿名爬虫代理和透明爬虫代理?它们有什么区别?我们选择爬虫代理时,到底选择哪个比较好?

  • 05 2018-12
    使用免费代理IP有什么隐患?安全能保障吗?

    现在用到代理IP的人越来越多,但是谁都不想花钱,于是其中一部分人还是使用免费的代理IP,虽然是免费,但是也有一些不好的方面。那么使用免费代理IP有什么隐患?安全能保障吗?

  • 15 2018-11
    用静态IP好还是动态IP好?价格、定位、稳定性大比拼

    IP有静态IP与动态IP之分,通常家庭使用的通常是动态IP,但是很多都觉都家庭网络并不好用,而家庭使用的是自动获取的动态IP,是不是使用静态IP会更好呢?

  • 19 2019-01
    常见的反网络爬虫以及突破方法

    大家可能不知道,互联网中超过一半的流量是网络爬虫贡献的,若是网站不设置反爬虫机制,可能根本没法运营,于是都设置了各种各样的反爬虫机制,即使如此,网络爬虫还是有办法去突破。

  • 19 2019-10
    代理ip​能提高直播人气吗?

    代理ip​能提高直播人气吗?直播没有人气咋办呢?最闹心得方法就是亲戚朋友关注关注,捧捧场,再一个就是发点小礼品来吸引点人。找亲戚朋友看,说白了,那能有多少人。买礼品,谁有多少