You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用JavaScript伪装SMF论坛中PHP生成的打印页面链接?

阻止爬虫访问SMF论坛打印页面的方法

方案一:将打印链接改为JavaScript生成

你可以修改Display.template.php里的打印按钮配置,把静态URL替换为JS触发的跳转,具体代码调整如下:

// Build the normal button array.
.....
'print' => array(
    'text' => 'print',
    'image' => 'print.gif',
    'lang' => true,
    'custom' => 'rel="new_win nofollow" onclick="window.location=\'' . $scripturl . '?action=printpage;topic=' . $context['current_topic'] . '.0\';return false;"',
    'url' => '#', // 用#占位,避免默认跳转行为
),

原理是:绝大多数爬虫不会执行JavaScript,爬取到的链接只是#,无法直接跳转至打印页面;而正常用户点击按钮时,浏览器会触发onclick事件完成跳转,不影响使用。

方案二:给打印页面加访问限制

在Sources/Printpage.php的最上方添加验证逻辑,过滤非正常访问:

// 验证会话和来源,阻挡无会话/无来源的请求
if (!isset($_SESSION['session_id']) || empty($_SERVER['HTTP_REFERER'])) {
    header('HTTP/1.1 403 Forbidden');
    exit('Access Denied');
}

这种方式能直接拦截没有正常会话或来源的爬虫请求,进一步提升防护效果。

方案三:添加爬虫禁止索引标签

在Printpage.php的HTML头部添加robots元标签,即使爬虫侥幸进入页面,也不会索引该页面:

<meta name="robots" content="noindex, nofollow">

内容的提问来源于stack exchange,提问作者greektranslator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 03:43:10