如何用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
相关产品推荐
相关产品推荐

