常见的反爬手段、原理以及应对思路

2023-11-10

应对反爬的主要思路就是:尽可能的去模拟浏览器,浏览器在如何操作,代码中就如何去实现。

1.通过User-Agent反爬

爬虫发送请求时,请求头中默认没有User-Agent,或者提供非正常的UA。

应对思路:在请求时添加UA

具体应对:

       requests模块发送请求时在headers参数中UA键值对

        selenium默认自带被控制浏览器的UA,也可以替换UA

随机User-Agent

2.通过Referer来反爬

Referer是header的一部分,当浏览器向web服务器发送请求的时候,会带上Refer,告诉服务器是从哪个页面链接过来的。

爬虫发送请求时,请求头中默认情况下不会带上Referer字段。

应对思路:在请求时添加Referer

具体应对:

       requests模块发送请求时在headers参数中添加Referer键值对,从抓包信息中复制Referer信息

       selenium默认自带Referer

3.通过Cookie来反爬

无论是否需要登陆,web服务器都可以在用户的浏览器中设置Cookie;Cookie是header的一部分,当浏览器向web服务器发送请求的时候,如果存在Cookie就一定会携带。

web服务器检查请求头中cookie是否是之前设置的cookie

应对思路:

       携带cookie发送请求

具体应对:

       requests模块发送请求时,使用requests.session自动处理cookie

       用requests模块发送请求时,在cookie参数或者headers参数中,使用selenium获取的cookie;注意cookie的过期时间。

       构建cookie池(根据cookie的过期时间,定期批量获取的cookie,放到数据库中),requests模块发送请求时,使用从cookie池中获取的cookie

4.通过js加密请求参数、解密加密的数据来反爬

利用用户的浏览器执行web服务器返回的js代码来对加密的响应内容进行解密(不常见)

利用用户的浏览器执行web服务器返回的js代码来对请求参数进行加密,之后再发送请求(常见)

应对思路:python重写js代码的功能或者执行js代码拿到结果

具体应对:

       完全看不懂js代码:selenium

       完全看懂js代码:python重写js代码的功能

       能够看懂js代码执行的大致过程:使用js2py模块运行相关的js代码,获取运行结果

5.通过行为验证来反爬

对方服务器通过弹出验证码强制验证用户浏览行为

应对思路:使用打码平台或深度学习的方式破解验证码

具体应对:

        打码平台

       人工输入

      深度学习

6.通过ip地址来反爬

正常用户很难在很短的时间内打开需要点击才能访问的链接,那么网站就可以根据ip地址和cookie以及user-agent等能区分不同用户身份的信息进行反爬

检测同一个ip在单位时间内是否发送了大量请求

经常和cookie以及user-agent配合检查

应对思路:

       网上获取免费的代理ip

       购买代理ip

       使用代理ip池

具体应对:

构建代理ip池

          把免费以及收费的代理ip放到数据库中

          使用是随机获取一个代理ip

          向目标url发送请求,并设置超时

          如果超时或无法使用就在数据库中标记该代理ip对具体访问的url不可用

requests模块发送请求使用proxies参数

selenium可以通过配置对象来使用代理ip

7.通过自定义字体来反爬

利用浏览器能够加载渲染并正确显示自定义字体的功能,使用自定义字体不影响正常用户浏览

应对思路:

      从移动端页面获取数据

      处理并解析自定义字体

具体应对:

       切换到移动端的页面,如用浏览器移动端模式访问

 

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

常见的反爬手段、原理以及应对思路 的相关文章

  • 【面试题】1、总结面试题1

    1 Java语言有哪些特点 1 面向对象 Java是一种面向对象的语言 支持封装 继承和多态等面向对象的特性 Java特别强调类和对象的关系 要求所有代码都必须位于类中 和Java一样很流行的Python也是面向对象的语言 但它对面向对象的
  • 当用户在浏览器上输入url后发生了什么

    进行DNS域名解析 进行tcp连接 发起三次握手 发送一个http请求 服务器处理相关的请求 并且返回对应的结果 关闭tcp连接 浏览器将浏览器处理后的结果进行解析 浏览器将解析后的资源进行请求 并且渲染页面
  • ORACLE DBA面试题集

    Oracle笔试题 oracle DBA 面试题及答案 国外公司 oracle数据库笔试题 DBA 国际大公司Oracle 面试笔试题oracle Database DBA Interview Questions 1 How many me
  • 网络常见面试题

    1 OSI Open System Interconnect 开放系统互联 是一个七层的计算机网络模型 分别为 物理层 数据链路层 网络层 传输层 会话层 表示层和应用层 TCP IP Transmission Control Protoc
  • 面试题,说说你对spring IOC和AOP的理解

    在面试中 经常会问 说说你对spring IOC和AOP的理解 问题很宽泛 似乎不知道从何说起 回答思路 1 先用通俗易懂的话解释下何为IOC和AOP 2 各自的实现原理 3 自己的项目中如何使用 以下是个人的一些总结 仅供参考 1 IOC
  • 线程间通信方式

    参考视频 实现一个场景 三个线程分别交替打印A B C 打印100次 基于synchronized 锁的实现方式 public class test private static Integer num 0 public static vo
  • Computed 和 Watch 的区别

    1 computed计算属性 作用 1 解决模板中放入过多的逻辑会让模板过重且难以维护的问题 例如两个数据的拼接或字体颜色的判断 2 它支持缓存 只有依赖的数据发生了变化 才会重新计算 例如模板中多次用到数据拼接可以用计算属性 只执行一次计
  • Linux面试题

    1 解释下什么是GPL GNU 自由软件 GPL 通用公共许可证 一种授权 任何人有权取得 修改 重新发布自由软件的权力 GNU 革奴计划 目标是创建一套完全自由 开放的的操作系统 自由软件 是一种可以不受限制地自由使用 复制 研究 修改和
  • uniapp部分面试题汇总

    1 谈谈你对uni app的理解 uni app是一个使用Vue js开发所有前端应用的框架 开发者编写一套代码 可以发布到IOS Android Web 响应式 以及各种小程序 快应用等多个平台 uniapp真正做到一套代码多端发行 支持
  • 为什么db是先写日志,而redis是后写日志

    预写式日志 Write Ahead Logging WAL 基本上所有的数据库都实现了这个WAL技术 来保证原子性和持久性 WAL的核心思想是 在数据写入到数据库之前 先写入到日志 这一定程度上也可以提高效率 因为不需要每次都和磁盘交互 可
  • 简历制作-技术栈和项目经历如何写?

    1 一 技术栈写法 1 把所有的技术要点全部梳理出来 然后再根据简历去复习 不熟悉或者怕问到的 再做减法 2 不要复制 可以借鉴 结合自己的情况梳理出来属于自己的技术栈 3 分文别类 4 关键字使用 熟练 熟悉 掌握 了解 怎么去写 第一阶
  • 【软件测试】备战秋招,数家公司的面经合集整理,总有一家你愿意去的,还不来赶紧学点经验。

    面经 前言 华为测试工程师 笔经 技术一面 技术二面 主管面 结果 大华测试 一面 二面 过了一两个小时就接到了 三面 下午3点接到hr电话 结果 中科创达 笔试 一面 技术面 二面 hr面 结果 恒生测试 安硕测试 恒生 安硕测试 深信服
  • 2024年java面试--mysql(4)

    系列文章目录 2024年java面试 一 spring篇 2024年java面试 二 spring篇 2024年java面试 三 spring篇 2024年java面试 四 spring篇 2024年java面试 集合篇 2024年java
  • 初级java工程师笔试题

    最近面试很头疼 因为满以为自己工作了1年多了 实际coding经验却压缩到不到1年 每每被面试官 痛扁 心里特别不痛快 总以为我能给你交活不就完了吗有必要在基础上为难我吗 相信大多数不会总结 在面试中屡屡受挫的小伙伴你也是差不多的吧 因为没
  • 集合在多线程下 不安全的代码案例,以及解决方法

    package thread import java util import java util concurrent ConcurrentHashMap import java util concurrent CopyOnWriteArr
  • 这份4577页的Java面试PDF,让我成功斩获阿里、字节等大厂offer

    我为大家准备了一份超级全面的Java 学习面试笔记 这份电子版笔记涵盖了诸多后端技术栈的面试题和答案 相信可以帮助大家在最短的时间内复习Java后端的大多数技术点和面试题 从而拿到自己心仪的offer 共4577页 整体还是比较清爽的 大家
  • Go面试必会基础题

    文章目录 1 请指出下面代码的错误 2 下面代码输出什么 3 下面代码输出什么 4 下面的代码有什么问题 5 下面代码输出什么 6 下面代码有几处错误的地方 请说明原因 1 请指出下面代码的错误 package main var gvar
  • FPGA硬件工程师Verilog面试题(基础篇二)

    作者简介 大家好我是 嵌入式基地 是一名嵌入式工程师 希望一起努力 一起进步 个人主页 嵌入式基地 系列专栏 FPGA Verilog 习题专栏 微信公众号 嵌入式基地 FPGA硬件工程师Verilog面试题 二 习题一 多功能数据处理器
  • 面试题:偏向锁的十连问,你能接住几个?

    文章目录 前言 名词解释 问题解析 问题1 如何判断当前锁对象为偏向锁 问题2 偏向锁如何判断锁重入 问题3 符合什么条件才会尝试获取偏向锁 问题4 线程进入偏向锁后 会不会创建lock record 问题5 偏向锁膨胀后
  • 面试题:重量级锁的8连问,你能接住几个?

    文章目录 前言 名词解释 问题解析 问题1 ObjectMonitor和AQS有什么异同 问题2 为什么ObjectMonitor需要cxq和entryList两个等待队列 问题3 cxq队列中等待线程 什么时候会进到EntryList 问

随机推荐

  • Ubuntu18.04上安装RTX 2080Ti显卡驱动

    文章目录 1 安装Linux系统 1 1下载Linux镜像文件 1 2 制作系统盘 1 3 安装Linux系统 1 4 配置linux系统 2 安装英伟达显卡驱动 2 1 预备工作 2 2 安装显卡驱动 3 安装cuda 4 安装cudnn
  • 代数余子式的几何意义,点积和叉乘的几何意义

    1 点乘的几何意义 a b c d e f ad be cf 结果是一个标量 也可以写为 a b a b cos 以下说明点乘的几何意义 就是一个向量在另一个单位向量 如果另一个向量是单位向量 上的投影长度 a b b a cos a b
  • thinkphp5.1开发app接口版本控制(路由设置)

    使用thinkphp5 1开发app接口进行版本控制 在index controller下创建v1和v2目录 v1下创建版本1的文件 如下图 在route route php中 如下图 v获取版本例如 v1 v2 下面第一个路由其实是 接口
  • 如何为服务网格选择入口网关_如果使用服务网格,是否需要API网关?

    如何为服务网格选择入口网关 这篇文章可能无法突破API网关和Service Mesh周围的噪音 但是 这是2020年 围绕这些主题仍然存在很多困惑 我选择编写此内容是为了帮助带来真正的具体解释 以帮助阐明差异 重叠之处以及何时使用它们 如果
  • 前缀树(字典树)应用——实现 Trie (前缀树)、添加与搜索单词

    目录 1 前缀树原理简介 2 实现前缀树 2 1 题目描述 2 2 题目分析 2 3 代码实现 3 添加与搜索单词 3 1 题目描述 3 2 题目分析 3 3 代码实现 4 总结 1 前缀树原理简介 先来简单介绍一下前缀树是什么 前缀树也叫
  • python--爬虫 爬取html和txt文件

    一 python爬取html文件 使用python爬取某网站首页并下载html文件 下面介绍两种方式 一种是urllib 另一种是requests 1 使用urllib import urllib request url http www
  • (十) web自动化测试-PO设计模式

    十 web自动化测试 PO设计模式 文章目录 十 web自动化测试 PO设计模式 前言 一 PageObject原则 1 使用方法代替页面的功能点 2 case中不要过多暴露页面的细节 3 po本身不进行断言 4 一个方法返回另一个页面 P
  • Python运算符中/和//的区别

    首先先看单斜杆的用法 举几个栗子 gt gt gt print 5 3 type 5 3 1
  • node-sass npm安装详解

    node sass npm安装详解 npm 安装 node sass 依赖时 会从 github com 上下载 node 文件 由于国内网络环境的问题 这个下载时间可能会很长 甚至导致超时失败 解决方案就是使用其他源 或者使用工具下载 然
  • 5分钟掌握接口自动化测试,4个知识点简单易学!

    一 什么是接口测试 接口测试是一种软件测试方法 用于验证不同软件组件之间的通信接口是否按预期工作 在接口测试中 测试人员会发送请求并检查接收到的响应 以确保接口在不同场景下都能正常工作 就工具而言 常见的测试工具有Jmeter Postma
  • 一张900w的数据表,16s执行的SQL优化到300ms?

    大家好 我是磊哥 有一张财务流水表 未分库分表 目前的数据量为9555695 分页查询使用到了limit 优化之前的查询耗时16 s 938 ms execution 16 s 831 ms fetching 107 ms 按照下文的方式调
  • 【每日一具3】推荐一个4K、蓝光、3D高清影视下载站,影视资源丰富 发烧友必备

    我猜测大家收藏都是有些能看片源比较丰富能看最新电影的网站 这些网站往往都是采集最大资源网的片源 最新的电影收录后的画质不敢恭维 对于那些真正的影视爱好者来说这不是最好的选择 今天博谈天下给你们推荐一个4K 蓝光 3D高清影视下载站 这个网站
  • C++多态

    C 中的多态分为静态多态和动态多态两种 其中 静态多态在编译阶段实现 其原理是由函数重载实现 通过不同的实参调用其相应的同名函数 动态多态通过虚函数实现 以下着重介绍 动态多态的两个必要条件 必须通过基类的指针或者引用调用 被调用的必须是虚
  • TamperMonkey油猴脚本弹出系统通知

    TamperMonkey油猴脚本弹出系统通知 通知问题 解决方法 删除通知 修改通知内容 通知问题 安装某些TamperMonkey油猴脚本后偶尔弹出如下系统通知 通知标题显示为Microsoft Edge或Chrome 正在使用的浏览器
  • laravel模型中数据批量加入

    laravel模型中数据批量加入 控制器 关联新增批量加入 user User find 19 user gt book gt saveMany new Book title gt 哈利波特1 new Book title gt 哈利波特2
  • Java课题笔记~ SpringMVC概述

    1 1 SpringMVC简介 SpringMVC 也叫Spring web mvc 是Spring 框架的一部分 在Spring3 0 后发布的 1 2 SpringMVC的优点 基于MVC 架构 基于 MVC 架构 功能分工明确 解耦合
  • 性能测试指标全解

    最近在公司做压测时 对于各个监控工具的监控指标一脸蒙 有时候不清晰 有时候理解错误 于是 恶补基础知识 希望对广大网友有所帮助 一 性能测试指标 1 在线用户数 此指标指的是某个时间段内 在服务器上保持登录状态的用户数 在线用户数不等同于并
  • 【Go】字符串拼接

    在 Go 语言中 常见的字符串拼接方式包括 拼接 fmt Sprintf拼接 strings Join拼接 buffer Builderbuffer WriteString拼接和strings Builder WriteString拼接 1
  • 什么是to B 业务

    引言 To B or Not to B there is not a question 对于企业而言 数据分析的作用主要体现在三大领域 1 是对业务的改进优化 2 是帮助业务发现机会 3 是创造新的商业价值 数据分析最重要的是基于对业务的理
  • 常见的反爬手段、原理以及应对思路

    应对反爬的主要思路就是 尽可能的去模拟浏览器 浏览器在如何操作 代码中就如何去实现 1 通过User Agent反爬 爬虫发送请求时 请求头中默认没有User Agent 或者提供非正常的UA 应对思路 在请求时添加UA 具体应对 requ