精华内容
下载资源
问答
  • Python 3反爬虫原理与绕过实战

    千次阅读 2020-12-03 16:58:28
    89 3.1 动态网页网页源代码 89 3.2 爬虫知识回顾 90 3.3 反爬虫的概念与定义 95 本章总结 96 第4章 信息校验型反爬虫 97 4.1 User-Agent 反爬虫 97 4.1.1 User-Agent 反爬虫绕过实战 97 4.1.2 User-Agent ...

    第 1章 开发环境配置 1

    1.1 操作系统的选择 1

    1.1.1 Ubuntu 简介 1

    1.1.2 VirtualBox 的安装 2

    1.1.3 安装 Ubuntu 3

    1.1.4 全屏设置 8

    1.1.5 Python 设置 9

    1.2 练习平台 Steamboat 10

    1.2.1 安装 Docker 11

    1.2.2 安装 Steamboat 12

    1.2.3 Steamboat 使用说明 14

    1.3 第三方库的安装 15

    1.3.1 Requests 15

    1.3.2 Selenium 15

    1.3.3 浏览器驱动 16

    1.3.4 Splash 18

    1.3.5 Puppeteer 18

    1.3.6 PyTesseract 20

    1.4 常用软件的安装 21

    1.4.1 nginx 21

    1.4.2 Charles 22

    1.4.3 PC端 SSL 证书 23

    1.4.4 iOS 系统的证书设置 26

    1.4.5 Andriod 模拟器的安装与证书设置 27

    1.4.6 Postman 29

    1.4.7 Google Chrome 32

    1.4.8 JADX 33

    1.5 深度学习环境配置 35

    1.5.1 NVIDIA显卡驱动安装 35

    1.5.2 CUDA Toolkit 的安装 38

    1.5.3 cuDNN 的安装 40

    1.5.4 深度学习库 PyTorch 41

    1.5.5 深度学习框架 Darknet 42

    1.5.6 图片标注工具 LabelImg 43

    1.6 Node.js 环境配置 44

    1.6.1 Node.js 的安装 44

    1.6.2 UglifyJS 的安装 45

    第 2章 Web网站的构成和页面渲染 47

    2.1 nginx服务器 47

    2.1.1 nginx的信号 48

    2.1.2 nginx配置文件 49

    2.1.3 简单的代理服务 50

    2.1.4 nginx模块与指令 52

    2.1.5 nginx日志 57

    2.1.6 小结 58

    2.2 浏览器 58

    2.2.1 浏览器的主要结构 59

    2.2.2 页面渲染 60

    2.2.3 HTML DOM 62

    2.2.4 浏览器对象BOM 65

    2.2.5 小结 70

    2.3 网络协议 71

    2.3.1 认识HTTP 71

    2.3.2 资源与资源标识符 72

    2.3.3 HTTP请求与响应 74

    2.3.4 Cookie 77

    2.3.5 了解HTTPS 80

    2.3.6 认识WebSocket 81

    2.3.7 WebSocket握手 81

    2.3.8 数据传输与数据帧 83

    2.3.9 WebSocket连接 85

    2.3.10 连接保持 87

    2.3.11 小结 88

    本章总结 88

    第3章 爬虫与反爬虫 89

    3.1 动态网页与网页源代码 89

    3.2 爬虫知识回顾 90

    3.3 反爬虫的概念与定义 95

    本章总结 96

    第4章 信息校验型反爬虫 97

    4.1 User-Agent 反爬虫 97

    4.1.1 User-Agent 反爬虫绕过实战 97

    4.1.2 User-Agent 反爬虫的原理与实现 100

    4.1.3 小结 103

    4.2 Cookie 反爬虫 103

    4.2.1 Cookie 反爬虫绕过实战 103

    4.2.2 Cookie 反爬虫原理与实现 109

    4.2.3 Cookie 与 JavaScript 结合 110

    4.2.4 用户过滤 112

    4.2.5 小结 113

    4.3 签名验证反爬虫 114

    4.3.1 签名验证反爬虫绕过实战 114

    4.3.2 签名验证反爬虫原理与实现 121

    4.3.3 有道翻译反爬虫案例 123

    4.3.4 小结 125

    4.4 WebSocket 握手验证反爬虫 125

    4.5 WebSocket 消息校验反爬虫 129

    4.5.1 WebSocket 消息校验反爬虫示例 130

    4.5.2 乐鱼体育反爬虫案例 132

    4.6 WebSocket Ping反爬虫 133

    本章总结 134

    第5章 动态渲染反爬虫 135

    5.1 常见的动态渲染反爬虫案例 135

    5.1.1 自动执行的异步请求案例 135

    5.1.2 点击事件和计算 138

    5.1.3 下拉加载和异步请求 142

    5.1.4 小结 144

    5.2 动态渲染的通用解决办法 144

    5.2.1 Selenium 套件 144

    5.2.2 异步渲染库 Puppeteer 148

    5.2.3 异步渲染服务 Splash 150

    5.2.4 通用不一定适用 154

    5.2.5 渲染工具知识扩展 156

    5.2.6 小结 160

    本章总结 160

    第6章 文本混淆反爬虫 161

    6.1 图片伪装反爬虫 161

    6.1.1 图片伪装反爬虫绕过实战 161

    6.1.2 广西人才网反爬虫案例 164

    6.1.3 小结 165

    6.2 CSS 偏移反爬虫 165

    6.2.1 CSS 偏移反爬虫绕过实战 166

    6.2.2 去哪儿网反爬虫案例 172

    6.2.3 小结 174

    6.3 SVG 映射反爬虫 174

    6.3.1 SVG 映射反爬虫绕过实战 174

    6.3.2 大众点评反爬虫案例 177

    6.3.3 SVG 反爬虫原理 179

    6.3.4 小结 186

    6.4 字体反爬虫 186

    6.4.1 字体反爬虫示例 186

    6.4.2 字体文件 WOFF 189

    6.4.3 字体反爬虫绕过实战 196

    6.4.4 小结 198

    6.5 文本混淆反爬虫通用解决办法 199

    6.5.1 光学字符识别 OCR 199

    6.5.2 PyTesseract 的缺点 201

    6.5.3 文字识别 API 202

    6.5.4 小结 206

    本章总结 206

    第7章 特征识别反爬虫 207

    7.1 WebDriver 识别 207

    7.1.1 WebDriver 识别示例 207

    7.1.2 WebDriver 识别原理 210

    7.1.3 WebDriver 识别的绕过方法 211

    7.1.4 淘宝网 WebDriver 案例 214

    7.1.5 小结 215

    7.2 浏览器特征 215

    7.3 爬虫特征 219

    7.3.1 访问频率限制绕过实战 219

    7.3.2 访问频率限制的原理与实现 222

    7.3.3 浏览器指纹知识扩展 223

    7.3.4 淘宝网浏览器指纹案例 227

    7.3.5 小结 228

    7.4 隐藏链接反爬虫 228

    7.4.1 隐藏链接反爬虫示例 228

    7.4.2 隐藏链接反爬虫原理与实现 231

    7.4.3 小结 233

    本章总结 234

    第8章 App反爬虫 235

    8.1 App 抓包 235

    8.1.1 HTTP 抓包示例 235

    8.1.2 掌上英雄联盟抓包案例(HTTP) 240

    8.1.3 京东商城抓包案例(HTTPS) 243

    8.1.4 小结 246

    8.2 APK文件反编译 246

    8.2.1 App 签名验证反爬虫示例 246

    8.2.2 APK文件反编译实战 248

    8.2.3 小结 251

    8.3 代码混淆反爬虫 251

    8.3.1 Android 代码混淆原理 252

    8.3.2 掘金社区 App 代码混淆案例 255

    8.3.3 小结 257

    8.4 App 应用加固知识扩展 257

    8.5 了解应用程序自动化测试工具 260

    8.5.1 了解 Appium 260

    8.5.2 了解 Airtest Project 260

    8.5.3 小结 262

    本章总结 262

    第9章 验证码 263

    9.1 字符验证码 263

    9.1.1 字符验证码示例 263

    9.1.2 实现字符验证码 266

    9.1.3 深度学习的概念 269

    9.1.4 卷积神经网络的概念 272

    9.1.5 使用卷积神经网络预测验证码 276

    9.1.6 小结 286

    9.2 计算型验证码 286

    9.2.1 计算型验证码示例 286

    9.2.2 实现计算型验证码 288

    9.2.3 小结 291

    9.3 滑动验证码 291

    9.3.1 滑动验证码示例 291

    9.3.2 实现滑动验证码 295

    9.3.3 小结 298

    9.4 滑动拼图验证码 298

    9.4.1 滑动拼图验证码示例 299

    9.4.2 实现滑动拼图验证码 302

    9.4.3 难度升级 307

    9.4.4 图片中的缺口位置识别 308

    9.4.5 小结 310

    9.5 文字点选验证码 310

    9.5.1 文字点选验证码示例 310

    9.5.2 实现文字点选验证码 312

    9.5.3 目标检测的概念 316

    9.5.4 深度学习实现文字定位 317

    9.5.5 批量检测与坐标输出 323

    9.5.6 小结 330

    9.6 鼠标轨迹的检测和原理 330

    9.7 验证码产品赏析 336

    9.7.1 滑动验证码 336

    9.7.2 图标验证码 337

    9.7.3 空间推理验证码 338

    9.7.4 小结 338

    本章总结 338

    第 10章 综合知识 339

    10.1 编码与加密 339

    10.1.1 ASCII 编码 339

    10.1.2 详解 Base64 342

    10.1.3 基于编码的反爬虫设计 344

    10.1.4  MD5消息摘要算法 347

    10.1.5 对称加密与 AES 352

    10.1.6 非对称加密与 RSA 357

    10.1.7 小结 360

    10.2 JavaScript 代码混淆 360

    10.2.1 常见的混淆方法 361

    10.2.2 混淆代码的还原 363

    10.2.3 混淆原理 365

    10.2.4 实现一个简单的混淆器 366

    10.2.5 小结 369

    10.3 前端禁止事件 369

    10.3.1 禁止鼠标事件 370

    10.3.2 禁止键盘事件 371

    10.3.3 小结 372

    10.4 法律法规 372

    10.4.1 数据安全管理办法征求意见稿 374

    10.4.2 爬虫协议 Robots 375

    10.4.3 与爬虫相关的法律法规 376

    10.4.4 小结 377

    本章总结 377

    展开全文
  • 主要介绍了selenium 反爬虫之跳淘宝滑块验证功能,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
  • 企业或为了保证服务的正常运转或为了降低压力与成本,不得不使出各种各样的技术手段来阻止爬虫工程师们毫无节制的向服务器索取资源,我们将这种行为称为『反爬虫』。 『反爬虫技术』是互联网技术中为了限制爬虫...

    随着 Python 和大数据的火热,大量的工程师蜂拥而上,爬虫技术由于易学、效果显著首当其冲的成为了大家追捧的对象,爬虫的发展进入了高峰期,因此给服务器带来的压力则是成倍的增加。企业或为了保证服务的正常运转或为了降低压力与成本,不得不使出各种各样的技术手段来阻止爬虫工程师们毫无节制的向服务器索取资源,我们将这种行为称为『反爬虫』。

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    『反爬虫技术』是互联网技术中为了限制爬虫而产生的技术总称,而反爬虫的绕过则是所有爬虫工程师要面对的问题,也是中高级爬虫工程师面试中最关注的方面。

    更多Python视频、源码、资料加群531509025免费获取

    问题所在

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    但是在平时的交流中,笔者发现大多数的初级爬虫工程师只会拿着网上别人写的技术文章唾沫横飞,除了知道在请求的时候伪造浏览器请求头信息中的 User-Agent 以外,对于:

    • 为什么要这么做?
    • 这么做有什么好处?
    • 我可以用别的方法实现么?
    • 它的原理是怎么样的?
    • 它是如何识别我的爬虫的?
    • 我应该用什么方式绕过它?

    一无所知。如果你既不知道原理又不知道实现方式,那么当目标网站稍微调整一下反爬虫策略的时候,你还是一脸懵逼

    对,就是一脸懵逼。

    作者心声

    我也在尝试着,能够将这样的知识分享出来,让大家在闲暇之余能够通过这篇文章学习到反爬虫知识中比较简单的反爬虫原理和实现方法,再熟悉他的绕过操作。比如 User-Agent 反爬手段,了解它的原理并且亲手实现反爬虫,再亲手绕过它。或许通过这个小小的案例,就可以打开你思维的大门、撬开你思路的下水道。

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    正文

    上面是空谈,下面是实践。一位伟人曾经表达过这么一个意思:

    管你黑猫白猫,抓不到老鼠的猫,它就不是个好猫

    什么是 User-Agent

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

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

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

    Firefox 的 User-Agent:

    Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:63.0) Gecko/20100101 Firefox/63.0
    

    Chrome 的 User-Agent:

    Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_3) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.77 Safari/537.36
    

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

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

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

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

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

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

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

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

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    回到正题,为什么会选择 User-Agent 这个参数呢?

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

    反爬虫的黑名单策略

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

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

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

    现实生活中,浏览器类型繁多(火狐浏览器、谷歌浏览器、360 浏览器、傲游浏览器、欧普拉浏览器、世界之窗浏览器、QQ 浏览器等),

    想要将所有的浏览器品牌、类型以及对应的标识收集并放到名单中,那是不实际的,假如漏掉了哪一种,那么对网站来说是一种损失。

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

    以上就是不能使用白名单策略的原因。

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

    通过 Nginx 服务日志来查看请求头中的 User-Agent

    Nginx 是一款轻量级的 Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器。其特点是占有内存少,并发能力强,事实上 Nginx 的并发能力确实在同类型的网页服务器中表现较好,使用 Nginx 企业有:百度、京东、新浪、网易、腾讯、淘宝等。

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    Nginx 的安装与启动

    通常可以使用系统本身的安装工具(Centos 的 yum、Debian 系的 apt-get 以及 MacOS 的 brew)安装 Nginx,以 linux 系统为例,在终端中输入:

    sudo apt-get install nginx
    

    接下来根据提示选择,即可完成 Nginx 的安装。

    接着在终端通过命令:

    sudo systemctl start nginx
    

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    即可启动 Nginx 服务。

    备注:由于各个系统差别以及版本差异,安装和启动命令略有差别,解决办法自行搜索

    Nginx 的日志

    Nginx 为用户提供了日志功能,其中记录了每次服务器被请求的状态和其他信息,包括 User-Agent。 Nginx 的默认日志存放路径为:

    /var/log/nginx/
    

    在终端通过命令

    cd /var/log/nginx && ls
    

    可以进入到日志存放目录并列出目录下的文件,可以看到其中有两个主要的文件,为 access.log 和 error.log

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    它们分别记录着成功的请求信息和错误信息。我们通过 Nginx 的访问日志来查看每次请求的信息。

    发起请求的几种办法

    浏览器

    Nginx 启动后,默认监听 80 端口,你只需要访问 IP 地址或者域名即可。假设 IP 地址为 127.0.0.1,那么可以在浏览器输入:

    http://127.0.0.1
    

    回车后,浏览器就会向服务器发起请求,和你平时上网是一样的。

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    Postman

    Postman是一款功能强大的网页调试与发送网页HTTP请求的工具(Postman下载地址),它可以模拟浏览器,访问指定的 Url 并输出返回内容,实际使用如下图所示:

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    Curl

    这是一个利用URL语法在命令行下工作的传输工具,它不仅支持 url 地址访问还支持文件上传和下载,所以可以称它为综合传输工具。他也可以模拟浏览器,访问指定的 Url,实际使用如下图所示:

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    Nginx 日志记录结果

    上面使用了 4 种方法来向服务器发起请求,那么我们看看 Nginx 的日志中,记录了什么样的信息。在终端通过命令:

    sudo cat access.log
    

    来查看日志文件。可以看到这几次的请求记录:

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    无论是 Python 还是 Curl 或者浏览器以及 Postman 的请求,都被记录在日志文件中,说明 Nginx 可以识别发起请求的终端类型。

    实现反爬虫

    之前的理论和逻辑,在实验中都得到了验证,那么接下来我们就通过黑名单策略将 Python 和 Curl 发起的请求过滤掉,只允许 Firefox 和 Postman 的请求通过,并且对被过滤的请求返回 403 错误提示。

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    反爬虫的过程如上图所示,相当于在服务器和资源之间建立了一道防火墙,在黑名单中的请求将会被当成垃圾丢弃掉。

    配置 Nginx 规则

    Nginx 提供了配置文件以及对应的规则,允许我们过滤掉不允许通过的请求,本次反爬虫我们使用的就是它。Nginx 的配置文件通常放在/etc/nginx/目录下,名为nginx.conf,我们通过查看配置文件来看一看,站点的配置文件在什么地方。再通过系统自带的编辑器(笔者所用系统自带 Nano,其他系统可能自带 Vim)来编辑配置文件。在配置文件中找到站点配置文件地址(笔者所用电脑存放路径为/etc/nginx/sites-enable),再到站点配置文件中找到local级别的配置,并在其中加上一下内容:

    if ($http_user_agent ~* (Python|Curl)) {
     return 403;
     }
    

    这段配置的释义是判断请求中请求头字符串中是否包含有 Python或者 Curl,如果包含则直接返回 403 错误,否则返回正常的资源。完成配置后保存,再通过命令:

    sudo nginx -s reload
    

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    整个操作过程如上图所示,让 Nginx 服务器重新载入配置文件,使得刚才的配置生效。

    反爬虫效果测试

    重复上面访问的步骤,通过浏览器、Python 代码、Postman 工具和 Curl发起请求。从返回的结果就可以看到,与刚才是有所区别的。

    • 浏览器返回的是正常的页面,说明没有收到影响;
    • Python 代码的状态码变成了 403,而不是之前的 200
    • Postman 跟之前一样,返回了正确的内容;
    • Curl 跟 Python 一样,无法正确的访问资源,因为它们发起的请求都被过滤掉了。

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    提示:你可以继续修改 Nginx 的配置来进行测试,最终会发现结果会跟现在的一样:只要在黑名单中,请求就会被过滤掉并且返回 403 错误。

    提示:这就是你平时编写爬虫代码时,需要在请求头中伪造浏览器的原因。

    绕过 User-Agent 方式的反爬虫

    通过上面的学习,我们知道了 User-Agent 反爬虫这种手段的原理,并且通过 Nginx 来实现了反爬虫,接下来我们一起学习如何绕过这种反爬虫措施。

    Python 绕过反爬虫

    在 Requests 库中,允许用户自定义请求头信息,所以我们可以在请求头信息中将 User-Agent 的值改为浏览器的请求头标识,这样就能够欺骗 Nginx 服务器,达到绕过反爬虫的目的。将之前的 Python 代码改为:

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    代码中我们用到的是 Firefox 浏览器的请求头信息,而且为了更好的观察效果,我们可以更改浏览器的版本号(改成9527)以区分真实浏览器(这不会影响请求结果)。运行这个文件,看看得到的返回结果:

    200
    

    不是 403 了,说明已经绕过了这种类型的反爬虫(你看,这就是网上那些文章所写的,需要修改请求头信息才能绕过反爬虫,现在你明白是怎么回事了吧)。

    练习:使用 Postman 再测试一下

    一个测试也许不准确,你还可以通过 Postman 再来测试一下,还记得怎么做吗?

    • 将需要过滤的标识(Postman)添加到 Nginx 的配置文件中
    • 重载配置文件,使其生效
    • 通过 Postman 发起请求看看是否会被过滤
    • 再次使用 Postman 工具,并且携带上浏览器的标识再发起请求,看看是否会被过滤
    小提示:这个练习如果你自己来做的话,会更容易理解其中的原理,并且可以加深你的映像。

    总结

    回顾一下,整篇文章的过程:

    只会爬虫不会反爬虫?详解用User-Agent进行反爬虫的原理和绕过

    我们从遇到的反爬虫现象开始入手,接着学习了 User-Agent 这种反爬虫策略的原理,并且通过 Nginx 实现了反爬虫,最后通过 Python 代码示例和 Postman 示例来验证我们的想法,最终清清楚楚、明明白白的了解到其中的缘由,待目标改变了它的策略时,我们也可以清楚的知道可以使用哪些方法来绕过。

    结尾给大家推荐一个非常好的学习教程,希望对你学习Python有帮助!

    Python基础入门教程推荐:更多Python视频教程-关注B站:Python学习者
     

    【Python教程】全网最容易听懂的1000集python系统学习教程(答疑在最后四期,满满干货)

    Python爬虫案例教程推荐:更多Python视频教程-关注B站:Python学习者
     

    2021年Python最新最全100个爬虫完整案例教程,数据分析,数据可视化,记得收藏哦

    展开全文
  • 反爬虫方式千千万,绕过的方式万万千,很多反爬虫机制是无法绕过的,比如人家给你加个复杂验证码,你的爬虫就GG了,方法是各种各样的,下面来简单介绍一下。 1.请求频率限制。其实是基于用户行为的,有的站点有...

    反爬虫方式千千万,绕过的方式万万千,很多反爬虫机制是无法绕过的,比如人家给你加个复杂验证码,你的爬虫就GG了,方法是各种各样的,下面来简单介绍一下。

    1.请求频率限制。其实是基于用户行为的,有的站点有防火墙或者程序有设置,单位时间内请求过多给你禁IP。绕过方式:使用sleep等待随机时间,这招比较狠,你可以在一个时间段内生成个随机时间,然后传递给sleep,但是这种方式会拉长爬虫周期,最好的方法就是从IP入手,多找一些代理IP去访问就可以了。

    2.user-agent限制。这个绕过也很简单,设置个user-agent列表,使用随机函数,从列表里随机抽出一个user-agent,封装到http请求里,比如你从网上找30个user-agent,做成一个list列表名字叫user-agents,然后使用user-agents[random.randint(0,30)]就可以从列表随机提取一个user-agent,然后封装到http里

    3.JavaScript限制。这种是使用JavaScript产生请求,有两种绕过思路,

    一种是使用burpsuite,拦截到js发送的请求,然后分析其规律,如果你只需要一个请求,那么把拦截的请求用urllib2或者类似的库封装个一样的请求就可以了,然后多的话,找一下请求的规律,按照规律封装请求,也能实现目的,

    第二种呢,是使用selenium+webdriver,就是使用浏览器解析JavaScript的方式,这种环境配置起来比较麻烦,网上也有大把大把的教程,你可以自行搜索一下资料

    4.远端IP限制。目标网站会根据客户端IP进行限制,比如防火墙或者程序里,这边说一下,如果防火墙在TCP/UDP层或者它们以下的层做限制是无法绕过的,所以建议使用正规渠道提供的代理IP试试。

    5.frame限制。比较典型的是在页面里插入好几层frame,链接到另外一个页面,然后再插入层层frame,链接到另外页面,这种你在第一个页面是无法提取到有效url的,这种绕过方式是查看页面源代码,抽丝剥茧,找到有效的页面所在的目录,然后直接请求有效的页面

    6.cookie限制。这种是以cnvd为代表,每次请求以后,它会给你一个cookie,然后下次请求你要带上这个cookie才行,这种绕过方式就是使用selenium+webdriver,获取每次需要的cookie,下次再带上,当然你也可以用urllib2的cookie机制,使用什么方式不限制,关键是绕过

    7.xpath的迷惑。这边介绍有的网页HTML代码编写并不标准,你使用火狐的firebug点击元素并右键,然后再copy(复制)的子选项里有copy xpath这种获取xpath的方式,它是标准的,会自动补全缺少的HTML元素比如tr元素,所以这种xpath无法解析到需要的内容,绕过这种的方式是查看页面源代码,然后手工编写或者修改从火狐里复制出来的xpath

    8.事件限制。有的内容是需要触发相关的事件才能发送请求,这种的绕过方法是利用selenium+webdriver也就是加个浏览器内核去模拟事件即可

    上面几种绕过反爬虫的方式可以单独使用也可以综合使用,建了议几种结合使用,当然可能也有其他绕过反爬虫的方式,这边只想起那么多了,大家都是做安全的,可以从安全的角度做一些,比如上面使用burpsuite抓包的方式,就可以绕过ajax。

    代理云可为您提供海量IP资源,官网可领取免费试用时长,我们保证资源的稳定性和可用性,给您带来更好的“互联网+”时代的体验,我们还可以针对您的要求为您提供高质量的定制服务,助您不间断获取行业数据,赢在大数据时代,更多问题官网咨询客服。

    独家资源适合长期爬虫业务,IP并发大,API不限调用频率,海量提取,产品安全稳定,支持http,https,sk5三大协议,适合爬虫(舆情、电商、短视频),抢购,seo等多种业务
    PC:
    注册即送一万代理IPicon-default.png?t=LBL2http://console.v4.dailiyun.com/user/?channel=xy-wt
    移动
    国内短效动态IPicon-default.png?t=LBL2http://console.v4.dailiyun.com/user/mobile/?channel=xy-wt

    展开全文
  • 常见反爬虫方法及绕过策略

    千次阅读 2020-06-19 13:07:38
    常见反爬虫策略及绕过方法 一般来说,爬虫工程师在爬取稍微正规一点的网站,都会受到反爬虫的制约。反爬虫主要有以下几种方式: 1. 通过UA判断。这是最低级的判断方法,因为只要在爬虫时采用随机UA就可以了。 2....

    爬虫简介

    网络蜘蛛(又称为王爷蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动地抓取万维网信息的程序和脚本。另外一些不常用的名字还有蚂蚁、自动索引、模拟程序或者蠕虫。

    常见反爬虫策略及绕过方法

    一般来说,爬虫工程师在爬取稍微正规一点的网站,都会受到反爬虫的制约。反爬虫主要有以下几种方式:

    1. 通过UA判断。这是最低级的判断方法,因为只要在爬虫时采用随机UA就可以了。

    2.通过单IP访问频率判断。这个判断简单,而且反反爬虫比较费力,反爬虫绝佳方案。需采用多IP抓取。

    3.通过Cookie判断。例如通过会员制账号密码登录,判断单账号短时间抓取次数判断。这个反反爬虫也很费力。需采取多账号抓取。

    4.动态页面加载。这个就考验前端工程师的功底,如果前端写的好,各种JS判断,各种逻辑,post登录很难。方法较好,但是对于大牛,还是防不胜防。反反爬虫多采用渲染浏览器抓取,效率低下。

    5.采用验证码。这里要么是登录的时候有验证码,要么是判断爬虫时,不封而是采用验证码验证。验证码是反爬虫性价比比较高的一种方案。反反爬虫一般接入OCR验证码识别平台或者人工打码平台,亦或者利用Tesseract OCR识别,亦或者采用神经网络训练识别验证码等。

    展开全文
  • 利用python怎么实现绕过反爬虫

    千次阅读 2021-02-10 22:46:23
    利用python怎么实现绕过反爬虫发布时间:2020-11-26 14:59:48来源:亿速云阅读:71作者:Leah利用python怎么实现绕过反爬虫?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题...
  • (原创)使用爬虫爬取js生成的网页 前日同组的同事联系我帮他查看一个网站,该网站的数据保护相对严格,难以直接使用scrapy或者requests等爬虫工具直接进行爬取。 待爬取的网站和内容 待爬取的网站:...
  • Scrapy绕过反爬虫策略汇总

    千次阅读 2020-03-27 19:35:32
    一、Scrapy无法返回爬取内容的几种可能原因 1,ip封锁爬取 2,xpath路径不对 3,xpath路径出现font,tbody标签 4,xpath路径不够明确 ...三、网站常见反爬虫策略? 四、常见反反爬虫策略? 五、实战演练
  • 1、使用session对象session = requests.session()strhtml = session.get(url) #与当前网站的首次会话2、设置headersheaders = {"User-Agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML...
  • 新版的 python 把 urllib2 改成了 urllib.request,所以直接导入 urllib2 会报错。 这是我通过 chrome92 版本的浏览器发送请求的时候抓到的头部信息,只要我在发送请求时引用一个 User-Agent 信息就可以了。...
  • 15行代码轻松绕过淘宝反爬虫机制

    万次阅读 2019-04-18 16:09:44
    最近学习网络爬虫关注了不少技术大牛,前两天看见崔庆才老师公众号发了一个绕过淘宝验证的新方法,今天我就按照那篇文章进行实践 之前大牛们写的文章进行淘宝抓取都是使用selenium 但我自己使用的时候经常出错封IP,...
  • 爬虫的最基本就是get一个网页的源代码数据,如果更深入一些,就会出现和网页进行POST交互,获取服务器接收POST请求后返回的数据。一句话,爬虫用来自动获取源数据,至于更多的数据处理等等是后续的工作,这篇文章...
  • 爬虫绕过无限debugger

    2021-11-07 22:13:15
    这个就是反爬虫的一个重要手段:无限debugger。 一、无限debugger的原因: debugger关键字是用于浏览器调试的,这个关键字在控制台没有打开的时候是不会起到任何暂停作用,但是一旦控制台被打开了,代码将停在...
  • 爬虫,反爬虫和反反爬虫

    千次阅读 2018-11-02 16:22:01
    随之大数据的火热,网络上各种网页抓取/爬虫工具蜂拥而来,因而,网页数据成了大家竞争掠夺的资源,但网站运营者却要开始保护...下面总结一下反爬虫策略及其应对方法。 一、什么是爬虫和反爬虫 一张图说明一切:...
  • 为了寻求一些更好的发展机会,很多人选择去一些大城市工作,租...接下来我们就一起看看绕过python反爬虫获取租房信息的方法吧。在有的页面后面会出现一段代码,通过禁用浏览器JavaScript发现每页其实初始界面是一...
  • 网络爬虫-绕过debugger反爬(Paused in debugger)

    万次阅读 热门讨论 2018-10-15 17:10:32
    最近发现很多网站出现了前端调试debugger来反爬,防止数据被抓取,实际上是很简单的原理,其实也就是js搞的鬼,看来作为一名合格的爬虫工程师,在js的道路上也会越走越远–!废话不多说,看图→ Paused in ...
  • 爬虫 selenium 绕过检测机制

    千次阅读 2019-01-16 09:38:16
    使用selenium模拟浏览器进行数据抓取无疑是当下最通用的数据采集方案,它通吃各种数据加载方式,能够绕过客户JS加密,绕过爬虫检测,绕过签名机制。它的应用,使得许多网站的采集策略形同虚设。由于selenium不会在...
  • 随着越来越多的网站开始用cookie存储状态变量来管理用户状态,在找到另一个最佳用途之前,隐含字段主要用于阻止爬虫自动提交表单。 下图显示的例子就是Facebook登录页面上的隐含字段。虽然表单里只有三个可见字段...
  • 你可能已经了解到了无头浏览器的作用以及使用的方法,那么本篇文章...root.mainloop() 标签:__,浏览器,无头,python,driver,爬虫,人机,time,id 来源: https://blog.csdn.net/weixin_44138053/article/details/88854660
  • 原标题:使用Python以及C++简单绕过反爬虫机制* 本文作者:我的gtr弹射起步,本文属FreeBuf原创奖励计划,未经许可禁止转载0×00 某些网站有反爬虫的机制对于刚学习了几天python的我,对爬虫颇有兴趣,但是某些“想...
  • 爬虫练习,通过添加http header来模拟浏览器访问,绕过网站反爬策略,文中也介绍了gzip解压的实现。
  • 企业或为了保证服务的正常运转或为了降低压力与成本,不得不使出各种各样的技术手段来阻止爬虫工程师们毫无节制的向服务器索取资源,我们将这种行为称为『反爬虫』。   『反爬虫技术』是互...
  • 原标题:反爬虫,到底是怎么回事儿? 有位被爬虫摧残的读者留言问:「网站经常被外面的爬虫程序骚扰怎么办,有什么方法可以阻止爬虫吗? 」这是个好问题,自从 Python 火了起来,编写爬虫程序的门口越来越低,爬取...
  • ​SVG反爬虫不同于字体反爬虫,它巧妙的利用css 与 svg的关系,将字符映射到网页中,看起来虽然正常,但是却抓取不到有效内容。本文带你深入浅出,破了SVG反爬虫的套路,学会之后,可应用于某点评网。 一、初识SVG...
  • 爬虫原理及反爬虫机制以及反爬虫方法的应对策略

    千次阅读 多人点赞 2019-04-27 23:00:04
    爬虫原理及反爬虫机制关于爬虫爬虫原理反爬虫机制1.检验数据头User-Agent反爬虫机制解析:2.访问频率限制或检验3.蜜罐技术反爬虫机制的应对方法1.设定Request Headers中的User-Agent2.设定随机访问频率3.代理IP或者...
  • 本文详细介绍了网站的反爬虫策略,在这里把我写爬虫以来遇到的各种反爬虫策略和应对的方法总结一下。从功能上来讲,爬虫一般分为数据采集,处理,储存三个部分。这里我们只讨论数据采集部分。一般网站从三个方面...
  • Python破解反爬虫的两种方法

    万次阅读 2018-10-22 21:01:28
    目前只会两种方法绕过反爬虫机制,本文也就只列出这两种方法。 1.伪装浏览器 由于爬虫多直接由python脚本直接访问网页,部分企业也就由此建立了识别来访者是否为Python脚本访问,所以,我们可以使用伪装浏览器的...
  • 爬虫完美绕过服务器反爬检查

    千次阅读 2017-08-15 14:43:55
    HostnameVerifier hv = new HostnameVerifier() { public boolean verify(String urlHostName, SSLSession session) { System.out.println("Warning: URL Host: " + urlHostName + " vs. " + se

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,719
精华内容 687
关键字:

网页反爬虫绕过

爬虫 订阅
友情链接: raw.rar