
<?php
// 获取引导用户访问当前页面的页面的 URL
$referer = isset($_SERVER[‘HTTP_REFERER’]) ? $_SERVER[‘HTTP_REFERER’] : ”;
// 检查 referer 是否来自百度
$baidu_domains = [‘baidu.com’, ‘www.baidu.com’, ‘m.baidu.com’];
$is_from_baidu = false;
foreach ($baidu_domains as $domain) {
if (strpos($referer, $domain) !== false) {
$is_from_baidu = true;
break;
}
}
// 如果来自百度,则进行屏蔽处理
if ($is_from_baidu) {
// 可选择输出一条消息并终止脚本执行
header(‘HTTP/1.1 403 Forbidden’);
echo ‘访问被禁止:您来自百度的跳转访问不被允许。’;
exit();
// 或者重定向到其他页面
// header(‘Location: http://example.com/some-other-page’);
// exit();
}
// 如果不是来自百度,继续正常执行你的脚本
echo ‘欢迎访问!’;
?>
代码说明
-
获取 Referer:
- 使用
$_SERVER['HTTP_REFERER']获取引导用户访问当前页面的页面的 URL。
- 使用
-
检查 Referer:
- 定义一个包含百度域名的数组
$baidu_domains。 - 使用
strpos函数检查 Referer 是否包含百度域名。
- 定义一个包含百度域名的数组
-
处理屏蔽逻辑:
- 如果检测到 Referer 来自百度,则设置 HTTP 状态码为 403 并输出一条禁止访问的消息,然后终止脚本执行。
- 你也可以选择重定向到其他页面,而不是直接终止访问。
-
正常访问:
- 如果 Referer 不是来自百度,则继续执行后续脚本。
注意事项
HTTP_REFERER字段可能不会被所有浏览器或代理发送,或被用户或代理修改,因此不能完全依靠它来做安全相关的决策。- 此代码只是基本的屏蔽实现,对于更复杂的场景,可能需要更高级的访问控制策略。
使用京策盾高防CDN可以完美杜绝这个问题,免去修改代码的烦恼








