网页防采集有哪几种方式
2025-07-06
1
参考资料
网页防采集有哪几种方式
User-Agent检测
原理:检查请求头中的User-Agent是否合法
代码示例(PHP):
if (!strpos($_SERVER['HTTP_USER_AGENT'], 'Mozilla')) { header('HTTP/1.1 403 Forbidden'); exit; }
IP频率限制
原理:限制单个IP的访问频率
代码示例(Python Flask):
from flask import Flask, request from flask_limiter import Limiter app = Flask(__name__) limiter = Limiter(app, key_func=lambda: request.remote_addr) @app.route('/') @limiter.limit("10 per minute") def index(): return "Hello World"
验证码验证
原理:要求用户输入验证码
代码示例(HTML+PHP):
<!-- HTML表单 --> <form action="submit.php" method="post"> <img src="captcha.php"> <input type="text" name="captcha"> </form>
// captcha.php session_start(); $code = rand(1000,9999); $_SESSION['captcha'] = $code; // 生成图片代码...
动态加载数据
原理:通过AJAX动态加载内容
代码示例(JavaScript):
window.onload = function() { fetch('/api/data').then(response => { document.getElementById('content').innerHTML = response; }); }
蜜罐技术
原理:设置隐藏的陷阱链接
代码示例(HTML):
<a href="/anti-spider" style="display:none"></a>
Cookie检测
原理:检查客户端是否支持Cookie
代码示例(JavaScript):
if(!navigator.cookieEnabled) { window.location = '/blocked'; }
行为分析
原理:检测异常浏览行为
代码示例(JavaScript):
let lastClickTime = 0; document.addEventListener('click', function(e) { const now = Date.now(); if (now - lastClickTime < 100) { // 100ms内连续点击 reportBot(); } lastClickTime = now; });
Token验证
原理:每次请求需要携带动态Token
代码示例(PHP):
session_start(); if ($_POST['token'] !== $_SESSION['token']) { die('Invalid token'); }