HTML防数据采集

news2024/12/22 18:33:09

什么是防采集

就是我们想利用爬虫工具采集某个网站的数据(前提当然是公开合法数据),但网站不想给你采集而设置的技术阻挡措施。

常见的防止采集方案

  • 利用输入验证码框验证,在采集某些网站过程中,要求你输入验证码,否则就卡住进行不下去。这是网站最常用且最基础的防采措施之一,它要求你必须你手动输入验证码里的数字和字母,才能继续看到更多信息或者进行下一步,以此来判断你是机器人还是真人。
  • 滑动图片进行拼图验证,它要求你必须滑动拼图到它指定的位置,才能通过验证进行下一步操作。
  • 登录验证,这类网站通常需要登录才能看到更丰富的信息,否则只会展现非常有限的内容。
  • 数据加密防采集,我们在网页上看到的内容是真实的,但我们打开源代码看,这段文字被已经被加密分离,这样当我们用爬虫工具进行数据采集时,所采集下来的数据就是各种乱码,法整合成一段完整的文字。
  • 反馈虚假数据,这种防止采集的方案是把虚假的数据传递给爬虫工具,从而防止数据被采集。
  • 禁止访问网页,主要还是看网站的防采机制设计,如果触发了,通常的结果就是全面封锁和禁止。比如封你的账号、封你的IP地址。一旦被封锁,网站会自动给你错误页面或无法让你正常浏览。

如何利用HTML和自定义字体(web-font)来实现数据防采集

web-font是CSS3中的一种标记 @font-face,在@font-face声明里,你可以声明一种字体,指定这种字体字体库文件从网络某个地址下载或直接引用本地的自定义字体文件。例如在css中做如下声明:

@font-face {
	font-family: "icomoon";
	src: url("fonts/icomoon.woff") format("woff"),
	url("fonts/icomoon.ttf") format("truetype"),
	url("fonts/icomoon.eot") format("embedded-opentype"),
	url("fonts/icomoon.svg") format("svg");
} 

这样就成功引入了icomoon这个自定义字体。

防采集原理:

使用web-font可以从网络加载字体,因此我们可以自己创建一套字体,设置自定义的字符映射关系表。 例如设置1f345是映射字符9,1f371是映射字符2,以此类推。 当需要显示字符9时,网页的源码只会是1f345,被采集的也只会是1f345,并不是9,使采集者采集不到正确的数据。而对于正常访问的用户则没有影响。对于中文的防采集不适合使用web-font这种方法,因为中文的字体库太大。而对于数字,英文则适合使用此方法实现防采集。

实例流程:

1.创建指定字符的自定义字体 首先选择一款字体(免费且不受版权影响的字体),下载好字体可以去FONTEK这个网站快捷转格式上传ttf文件,点击下方的生成,将字体文件转为svg格式。 <img src=“https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/066ca714bae94e02b4744af70a13e98e~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image) 2.选择需要使用的字符及设置字体映射关系 打开网址:icomoon,选择左上角“import icons”上传刚刚生成的svg字体,然后选择要加密的字符进行加密,这里我选择0-9数字进行加密,选择完成后点击右下角Generate Font按钮。 选择加密字符.png ![修改映射.png](https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/afca268d165f4c818315574583cc38ed~tplv-k3u1fbpfcp-zoom-in-crop-mark:4536:0:0:0.image” style=“margin: auto” />

把名字也按映射关系修改,设置映射关系后,点击右下角download下载字体。然后将字体文件放到项目中,并在css中声明引入的字体。

@font-face {
	font-family: "icomoon";
	src: url("fonts/icomoon.woff") format("woff"),
			 url("fonts/icomoon.ttf") format("truetype"),
			 url("fonts/icomoon.eot") format("embedded-opentype"),
			 url("fonts/icomoon.svg") format("svg");
} 

然后需要定义一个css的class,font-family使用这个web-font

.number{
	font-family: icomoon;
} 

然后根据之前修改的映射表在HTML中使用各自数字对应的映射如下

<div class="number">
	&#x1f345 &#x1f371 &#x1f30f &#x1f3c6
</div> 

完整HTML代码如下:

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title></title>
	<style type="text/css"> @font-face {font-family: "icomoon";src: url("fonts/icomoon.woff") format("woff"),url("fonts/icomoon.ttf") format("truetype"),url("fonts/icomoon.eot") format("embedded-opentype"),url("fonts/icomoon.svg") format("svg");}.number{font-family: icomoon !important;} </style>
	</head>
	<body>
		<div class="number">
			&#x1f345 &#x1f371 &#x1f30f &#x1f3c6
		</div>
	</body>
</html> 

number">
&#x1f345 &#x1f371 &#x1f30f &#x1f3c6

```

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141173.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

电源特性测试测试哪些方面?电源特性自动测试系统NSAT-8000介绍

假设电源适配器厂家对电源适配器进行了很合理的测试验证工作&#xff0c;那么电源适配器输出的电压应该是个稳定的电源输出。那么对于一些小型设备而言&#xff0c;电源测试就主要测试设备电源端的测试工作。下面纳米软件Namisoft小编将带大家一起看看&#xff0c;关于电源特性…

Android Jetpack Compose——一个简单的笔记APP

一个简单的笔记APP简述效果视频Hilt提供依赖对象Room CRUD接口实现类内容封装查询所有查询删除插入笔记内容效果图ViewModel依赖注入数据初始化数据处理View标题栏排序组件笔记列表新建&编辑笔记效果图ViewModel依赖注入初始化数据处理View背景颜色条标题保存笔记路由导航建…

动态规划 0-1背包问题(滚动数组思想优化)

目录 125 背包问题&#xff08;二&#xff09;LintCode 炼码 0-1背包滚动数组优化 0-1背包问题&#xff08;一&#xff09;LintCode 炼码 【解法一】二维数组 【解法二】滚动数组 125 背包问题&#xff08;二&#xff09;LintCode 炼码 class Solution { public:/*** para…

HADOOP-3.2.2安装

HADOOP-3.2.2安装一. 准备工作二.安装阶段1. 创建安装目录并安装解压包2.修改配置文件core-site.xml3. 修改hdfs-site.xml4. 修改修改yarn-site.xml5.修改workers文件6.修改hadoop-env.sh7.修改mapred-site.xml8.递归创建目录9.分发文件三.运行阶段1.启动hdfs2.启动yarn3.启动j…

F280049C Crossbar X-BAR

文章目录X-BAR9.1 输入X-BAR9.2 ePWM、CLB和GPIO输出X-BAR9.2.1 ePWM X-BAR9.2.1.1 ePWM X-BAR架构9.2.2 CLB X-BAR9.2.2.1 CLB X-BAR架构9.2.3 GPIO输出X-BAR9.2.3.1 GPIO输出X-BAR架构9.2.4 X-BAR标志总结X-BAR 交叉开关&#xff08;在本章中称为X-BAR&#xff09;提供了以各…

一年风雨几度寒,一杯浊酒敬虎年

我是谁大家好&#xff0c;我是凡夫贩夫&#xff0c;真实姓名不值一提&#xff0c;我的履历也很不值一提&#xff0c;非名校非大厂非专家&#xff0c;一名三非野生java开发者&#xff0c;现居住地河南郑州&#xff0c;就职于一家外包公司。的确&#xff0c;我是一个普通人&#…

(02)Cartographer源码无死角解析-(46) 2D栅格地图→CastRay()函数与贝汉明(Bresenham)算法

讲解关于slam一系列文章汇总链接:史上最全slam从零开始&#xff0c;针对于本栏目讲解(02)Cartographer源码无死角解析-链接如下: (02)Cartographer源码无死角解析- (00)目录_最新无死角讲解&#xff1a;https://blog.csdn.net/weixin_43013761/article/details/127350885 文末…

PCB设计完成后,为什么经常要拼版及拼版注意事项

通常我们在完成PCB设计的时候&#xff0c;有一些板子我们通常是需要进行拼版的&#xff0c;那么我们为什么要拼版&#xff0c;哪种情况下需要拼版呢&#xff1f;不拼是否可以呢&#xff1f;1、PCB生产制作尺寸要求 一般来说面积比较小的板子我们是需要进行拼版&#xff0c;一般…

MATLAB APP 设计实践(一)UART通信(下篇)

引言上篇介绍了 MATLAB App 的基本内容&#xff0c;本篇就结合UART发送数据的具体案例介绍开发过程。文末给出设计源文件、设计的可执行文件的下载链接&#xff0c;以及App的实际使用视频&#xff08;与FPGA开发板进行调试验证&#xff09;。前文链接&#xff1a;MATLAB APP 设…

MySQL 分区(innode引擎的讲解)

目录 一.InnoDB逻辑存储结构 段 区 页 二.分区概述 分区 三.分区类型 一.InnoDB逻辑存储结构 首先要先介绍一下InnoDB逻辑存储结构和区的概念&#xff0c;它的所有数据都被逻辑地存放在表空间&#xff0c;表空间又由段&#xff0c;区&#xff0c;页组成。 段 段就是…

【Python】sklearn机器学习之层次聚类算法AgglomerativeClustering

文章目录基本原理绘图层次定义距离基本原理 和Birch聚类相似&#xff0c;层次聚类也是一种依赖树结构实现的聚类方法&#xff0c;其核心概念是相似度。根据相似度&#xff0c;可以将所有样本组织起来&#xff0c;从而构建一棵层次聚类树。 其中Birch算法的核心&#xff0c;叫…

MyBatis【多表查询与动态SQL使用】

MyBatis【多表查询与动态SQL使用】&#x1f34e;一.MyBatis多表查询&#x1f352;1.1 一对一查询&#x1f352;1.2 一对多查询&#x1f34e;二.动态SQL使用&#x1f352;2.1 if 标签使用&#x1f352;2.2 trim 标签使用&#x1f352;2.3 where 标签使用&#x1f352;2.4 set 标…

ARX测试_绘制道路横断面

本文迁移自本人网易博客&#xff0c;写于2011年1月12日&#xff0c;ARX测试_绘制道路横断面 - lysygyy的日志 - 网易博客 (163.com)1、已提供道路的图形&#xff0c;获取用户输入的两点&#xff0c;并在两点间画一条虚线。计算这条直线与多少条直线相交&#xff0c;若数量不等于…

振弦采集模块多通道专用寄存器

振弦采集模块多通道专用寄存器 多通道频率、温度值寄存器 51~58&#xff08; 0x33~0x3A&#xff09; 位 符号 值 描述 默认值 bit15:0 频率/温度值 0 单通道模块时&#xff0c;寄存器 51 内为频率值&#xff0c;寄存器 55 内为温度值 4 通道模块时&#xff0c;寄存器 51~54 内…

如何去学习PMP考试的《PMBOK》

首先&#xff0c;是PMP考试的核心教材&#xff1a;《PMBOK指南》&#xff0c;目前已经出道第七版了&#xff0c;大家如果有备考的需要要赶紧买一本来学习。 其次&#xff0c;是《汪博士解读PMP》&#xff0c;目前出到第6版&#xff0c;这本书是对PMBOK中各领域知识点的深入浅出…

机械臂速成小指南(二十一):几何雅可比矩阵

&#x1f468;‍&#x1f3eb;&#x1f970;&#x1f973;需要机械臂相关资源的同学可以在评论区中留言哦&#x1f916;&#x1f63d;&#x1f984;指南目录&#x1f4d6;&#xff1a;&#x1f389;&#x1f389;机械臂速成小指南&#xff08;零点五&#xff09;&#xff1a;机…

煤矿皮带跑偏撕裂智能检测算法 opencv

煤矿皮带跑偏撕裂智能检测算法能够通过pythonopencv深度学习技术实时监测运输皮带的状况&#xff0c;当监测到皮带出现撕裂跑偏时&#xff0c;立刻抓拍告警并中止皮带的运输。OpenCV基于C实现&#xff0c;同时提供python, Ruby, Matlab等语言的接口。OpenCV-Python是OpenCV的Py…

动态博客系统

Halo 是我折腾过的众多博客系统里面&#xff0c;最好、最容易上手的动态博客系统之一&#xff08; solo 也是&#xff09;&#xff0c;轻快&#xff0c;简洁&#xff0c;功能强大。 正文 上周末正在募集团队一起写算法题&#xff0c;群里讨论需要一个网站来存放文章&#xff…

C++ 语法基础课 习题6 —— 函数

文章目录例题1. 804.n的阶乘2. 805.x和y的最大值3. 808.最大公约数4. 811.交换数值5. 812.打印数字6. 813.打印矩阵7. 819.递归求阶乘8. 820.递归求斐波那契数列例题 1. 804.n的阶乘 Acwing 804.n的阶乘 #include<iostream> using namespace std;int fact(int n) {if(…

MFC高级控件RichEdit2.0的使用

MFC高级控件RichEdit的使用MFC高级控件RichEdit的使用MFC控件设置焦点&#xff0c;实现回车后编辑框内容清空&#xff0c;焦点停留在该编辑框内MFC高级控件RichEdit的使用 RichEdit控件&#xff0c;可以设置编辑框内不同的行、不同的段落有不同的字体、颜色。 效果如下&#xf…