防止网站被采集的理论分析以及十条方法对策

以下是“防止网站被采集的理论分析以及十条方法对策”的完整攻略。

1、理论分析

1.1 采集方式

网站被采集的方式非常多,常见的有以下几种:

  • 爬虫程序通过 URLs 或者搜索关键字进行遍历,抓取网站上的资源。
  • 通过采集插件,自动化脚本等方式,将网站上的信息通过 API 进行采集。
  • 通过监控网站 API 接口,抓取网站上的数据和内容。

1.2 采集特征

根据网站的特点和资源类型,一般采集特征有:

  • URL 特征。一些典型的 URL 参数、路径或者查询方式等,可能被爬虫所采集。
  • Cookie 特征。一些网站的登录状态、身份认证、网页缓存等信息,可能被爬虫程序所利用。
  • 频率特征。短时间内大量访问同一页面的用户,可能为爬虫程序。
  • 请求特征。一些网络请求的头部信息、请求参数等特征,可能被用于检测和拦截爬虫。

1.3 防护策略

为了提高网站的安全性和防止被采集,一般采用以下策略:

  • 限制爬虫。可以通过 robots.txt、User-Agent 和反爬机制等方式,限制或者防御爬虫访问。
  • 加密内容。可以通过 HTTPS、SSL 和加密算法等方式,保护数据的安全性。
  • 动态页面。可以通过 AJAX 等技术,实现动态页面,增加对爬虫的防御,提高极客门登录界面的安全性。
  • 频率和行为监测。可以通过 IP 的访问频率、行为分析等技术,检测和控制爬虫的采集。

2、十条方法对策

结合以上理论分析,我们具体了解下“防止网站被采集”的十条方法对策。

2.1 隐藏网站真实路径

为了防止爬虫利用 URL 的路径系统,这里我们充分利用 rewrite 和 htaccess 等功能来隐蔽真实路径。

# 将网站根目录的所有请求重定向到index.php文件中
RewriteEngine on
RewriteBase /
RewriteRule ^(.*)$ index.php/$1 [L]

2.2 防浏览器批量获取

可以通过设置 Cookie 和 IP 等方式,防止恶意浏览器进行请求。

$user_agent = empty($_SERVER['HTTP_USER_AGENT']) ? '' : strtolower($_SERVER['HTTP_USER_AGENT']);

if($user_agent && !in_array($user_agent, ['chrome','firefox','safari'])){
  if(count($_COOKIE) == 0){
    // 如果 cookie 为空,并且没有被禁止,则生成一个 cookie,把其值存在 session 中
    // 禁止访问index.php页面
    setcookie('cookie_check', '1', time() + 3600, '/');
    $_SESSION['cookie_check'] = true;
  }
}

if (count($_COOKIE) > 0 || ($_COOKIE['cookie_check'] ?? '') != 1) {
  die(pageBadRequest());
}

2.3 预防 XSS 攻击

XSS 攻击是最为常见的攻击方式,可以通过过滤用户输入和转义输出两个层面来进行防御。

// 对一些敏感的字符进行转义,例如 ' " < > / \
function convertXSS($string) {
  return str_replace(['"', "'", '<', '>', '/'], ['&quot;', '&#39;', '&lt;', '&gt;', '&#x2F;'], $string);
}

// 过滤输入字符
$uname = trim(preg_replace('/[^-a-zA-Z0-9_]+/', '', $_POST['user_name']));
$pwd = convertXSS(trim($_POST['password']));

// 在页面输出时,对一些敏感字符进行转义
echo convertXSS($user_info);

2.4 防 SQL 注入

为了防止不良分子利用 SQL 注入漏洞,我们需要进行防御。

$user_id = addslashes($_GET['user_id']);
$query_user = "SELECT * FROM `user_info` WHERE `user_id` = '$user_id'";

2.5 防止 CSRF 攻击

为了防止 CSRF 攻击,我们需要在页面中添加防护代码。

token_get();
<!-- 防止 CSRF 攻击 -->
<?php if (isset($_SESSION['token'])): ?>
  <input type="hidden" name="token" value="<?php echo $_SESSION['token']; ?>">
<?php endif; ?>

2.6 用户注册

用户注册时,应该采取以下措施:

  • 及时发送邮件过来让用户进行验证
  • 发送短信验证码确认是否真实手机号
  • 要求用户限制密码长度和复杂度
  • 限制同一个 IP 注册次数

2.7 设置热链和下载限制

为了防止热链和不良下载,可以在 nginx 中设置防止盗链的配置。

location ~* \.(jpg|jpeg|gif|png)$ {
  valid_referers none blocked http://127.0.0.1;
  if ($invalid_referer) {
    return 403;
  }
}

2.8 HTTP 响应头设置

HTTP 响应头的设置也是一个比较好的防范手段,可以通过设置 X-Frame-Options、X-XSS-Protection、X-Content-Type-Options 等字段来增加对可控内容的安全防护。

add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Frame-Options "SAMEORIGIN";

2.9 安全检测

对网站整体安全检测,常见的有网站安全监控、云 WAF、安全组等解决方案。

2.10 更新网站系统

最后,建议及时更新网站系统和插件,保证系统的稳定性和安全性。

示例说明

  • 示例1:网站开放数据 API 接口,遭爬虫攻击采集

可以通过限制 HTTP 请求头部信息,检测网站 IP 访问频率,以及通过 Captcha 强制校验,增加网站被采集的难度。

  • 示例2:网站出于商业目的,发布了部分限制区域访问的文章,遭到爬虫采集

可以通过网站后台配置 IP 白名单限制区域,HTTP 响应头中添加关于限制区域的信息,以及在网站防灌水工具中添加首次访问验证码等防范措施。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:防止网站被采集的理论分析以及十条方法对策 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • javascript中的altKey 和 Event属性大全

    让我来给您详细解释一下”JavaScript中的altKey和Event属性大全”的内容。 什么是JavaScript中的altKey属性? 在JavaScript中,altKey属性指的是用户在触发事件时,是否按下了ALT键,它是Event对象的一个布尔值属性。当用户按下ALT键并且同时触发了相应的事件,那么altKey属性的值就会变为true,如果没有按…

    css 2023年6月9日
    00
  • css sprites技术将多个背景集成到一个png图片上css定位

    CSS Sprites是将多个小图标或小背景图组合成一个大的图像文件,然后使用CSS background进行定位显示的技术,它可以减少网页中图片的http请求次数,提高网站的加载速度,提升用户体验。下面是CSS Sprites的完整攻略: 步骤一:准备小图标或小背景图 首先,准备多个小背景图或小图标,大小最好控制在30×30像素以内。比如我们将准备三个Tw…

    css 2023年6月9日
    00
  • css之display属性之inline-block布局实现详解

    CSS之display属性之inline-block布局实现详解 在网页布局的过程中,有时候我们需要把元素放在一行中并且保持元素间的间距,而且元素的大小不确定,这个时候使用inline-block布局可以很好的解决这个问题。 1. inline-block的基本概念 inline-block是指内联块级元素,这个属性可以让元素以块级元素的方式显示,同时保持元…

    css 2023年6月9日
    00
  • 基于CSS制作创意端午节专属加载特效

    下面是基于CSS制作创意端午节专属加载特效的完整攻略: 一、准备工作 在开始制作之前,我们需要先准备好一些基本的工具与环境: 编辑器:例如 Visual Studio Code、Sublime Text 等。 浏览器:建议使用 Google Chrome 浏览器,因为其中包含了强大的开发者工具,可以更方便地调试CSS。 图片素材:下载几张端午节相关的图片,例…

    css 2023年6月11日
    00
  • 用javascript修复浏览器中头痛问题的方法整理篇[译]

    作为网站的作者,我很高兴为大家分享这篇名为“用JavaScript修复浏览器中头痛问题的方法整理篇[译]”的文章,下面是一个详细的攻略,希望对你有所帮助。 章节解读 该文章分为以下八个章节,分别介绍了在浏览器端遇到的头痛问题以及解决方案。 解决IE 6-8的min-height问题 让表格滚动起来 让placeholder属性兼容IE9以下 改进润滑滚动 当…

    css 2023年6月10日
    00
  • CSS3实现王者荣耀匹配人员加载页面的方法

    以下是“CSS3实现王者荣耀匹配人员加载页面的方法”的完整攻略。 什么是王者荣耀匹配人员加载页面 王者荣耀匹配人员加载页面是一个现代化的网页程序,它会根据指定的条件,展示在线等待匹配的战队或个人,提供给用户一个便捷的玩家匹配体验。在该页面中,用户可以查看匹配时的核心信息,如队伍成员、英雄选择、所处段位等,并可以进行交流、挑选匹配或观看等一系列操作。 采用CS…

    css 2023年6月10日
    00
  • BootStrap前端框架使用方法详解

    Bootstrap前端框架使用方法详解 Bootstrap是一个流行的前端框架,它可以快速地创建响应式和移动设备友好的Web页面。在这份攻略中,我们将介绍Bootstrap的主要特性和如何使用它来创建各种类型的Web页面。 引入Bootstrap 首先,我们需要在我们的HTML文件中引入Bootstrap样式表和Javascript库。我们可以在Bootst…

    css 2023年6月11日
    00
  • 详解CSS外边距折叠引发的问题

    下面是详解CSS外边距折叠引发的问题的完整攻略。 什么是外边距折叠? 首先,我们需要了解什么是外边距折叠。外边距折叠,指的是当两个或多个相邻的盒子的外边距(margin)相遇时,会合并成一个外边距,即折叠掉多余的外边距,这种现象也被称为外边距合并。 什么情况下会出现外边距折叠? 外边距折叠只会在一定的情况下出现,主要有以下两种情况: 1. 相邻的兄弟元素之间…

    css 2023年6月9日
    00
合作推广
合作推广
分享本页
返回顶部