关于反反爬

 

 

前言

对于Python基础的爬虫,看一遍基本上都会了,爬虫的流程套路也是一个样子的,但是对于某一些网站上面的数据,很多人还是没有办法,只要你一步一步解决这三个问题,就能轻松进阶爬虫。

不要以为写好一个爬虫程序就可以出师了,此时还有更多的问题在前面等着你,你要含情脉脉地看着你的爬虫程序,问自己三个问题:

    爬虫抓取数据后是正当用途么?

    爬虫会把目标网站干掉么?

    爬虫会被反爬虫干掉么?

关于反爬虫的问题才是你爬虫程序强壮与否的关键因素,什么是反爬虫?

当越来越多的爬虫在互联网上横冲直撞后,网页资源维护者为了防止自身数据被抓取,开始进行一系列的措施来使得自身数据不易被别的程序爬取,这些措施就是反爬虫

比如:

    检测IP访问频率

    资源访问速度

    链接是否带有关键参数

    验证码检测机器人

    ajax混淆

    js加密

等等

对于目前市场上的反爬虫,爬虫工程师常有的反反爬虫方案是下面这样的:

    不断试探目标底线,试出单IP下最优的访问频率

    构建自己的IP代理池

    维护一份自己常用的UA库

    针对目标网页的Cookie池

    需要JS渲染的网页使用无头浏览器进行代码渲染再抓取

    一套破解验证码程序

    扎实的JS知识来破解混淆函数

爬虫工程师的进阶之路其实就是不断反反爬虫,可谓艰辛,但换个角度想也是乐趣所在
关于框架

爬虫有自己的编写流程和标准,有了标准,自然就有了框架,像Python这种生态强大的语言,框架自然是多不胜数,目前世面上用的比较多的有:

    Scrapy

    PySpider

    Portia

这里不过多介绍,框架只是工具,是一种提升效率的方式,看你选择。
反爬策略

一: User-Agent +Referer检测

解决方案: 伪装浏览器的User-Agent,因为每个浏览器的User-Agent不一样,并且所有

的用户都能使用浏览器。所有每次请求的时候条件浏览器的User-Agent,就能解决UA检测

在检测referer的请求中,携带符合的referer值。

二: js混淆和渲染

js渲染其实就是对HTML页面的修改。比如有一些网页本身没有返回数据,数据是经过js加载之后添加到HTML当中的。当遇到这种情况的时候,我们要知道爬虫是不会执行JavaScript操作。所以需要用其他的方法处理。

解决方案:

1.通过阅读网站js源码,找到关键的代码,并用python实现。

2.通过阅读网站js源码,找到关键的代码,用PyV8,execjs等库直接执行js代码。

3.通过selenium库直接模拟浏览器环境

三:IP限制频次

解决方案:

1.自行设计ip代理池,通过轮换的方式,每次请求携带不同的代理地址。

2.ADSL动态拨号他有个独有的特点,每拨一次号,就获取一个新的IP。也就是它的IP是不固定的。

四:验证码

解决方案:

1.手动识别验证码

2.pytesseract识别简单的验证码

3.对接打码平台

4.机器学习

以上这就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小编 !

关于此文,也可学习;关于反爬虫,看这一篇就够了 (转) 

posted on 2023-09-24 23:38  小码果  阅读(19)  评论(0编辑  收藏  举报

导航

Live2D