使用PHP插入联系信息是否能避免被Web Crawlers抓取?
核心疑问解答
首先给你两个明确的结论:
- Web 爬虫永远无法获取到服务器上的PHP原始代码,它们请求页面时拿到的内容和普通用户浏览器看到的完全一致,都是PHP代码在服务端执行完成后输出的最终HTML、CSS、JS等前端渲染内容。只有当服务器配置出现严重错误,没有把PHP文件交给PHP解析器处理、直接作为文本返回时才会泄露源码,正常线上环境不会出现这种情况。
- 单纯用PHP直接输出明文联系信息并不能避免被爬虫抓取。如果你的PHP逻辑只是把邮箱字符串直接拼接输出到HTML中,那么最终返回的页面源码里还是会包含完整的明文邮箱,和你直接把邮箱写死在静态HTML文件里没有任何区别,普通的邮箱爬取爬虫照样可以识别抓取。
可落地的PHP防邮箱抓取方案
如果不想用图片展示邮箱,又要避免被爬虫抓取,可以用下面几种PHP实现的方案,兼顾防爬和用户体验(用户可以正常复制邮箱):
- HTML实体转义:把邮箱的每个字符转成HTML实体编码,浏览器可以正常解析显示,大多数低阶爬虫不会做实体解码,无法匹配到邮箱格式
实现代码示例:<?php $email = 'contact@yourdomain.com'; $encoded_email = ''; for ($i = 0; $i < strlen($email); $i++) { $encoded_email .= '&#' . ord($email[$i]) . ';'; } // 输出的内容浏览器可正常显示,源码里没有明文邮箱 echo '<a href="mailto:' . $encoded_email . '">' . $encoded_email . '</a>'; ?> - 拆分动态拼接:把邮箱拆成多个片段存在PHP变量里,输出时再动态拼接,避免完整的邮箱字符串出现在你的项目源码中,也能绕开部分静态扫描的爬虫
- 配合前端JS组合:PHP只输出拆分后的邮箱片段,页面加载完成后用JS把片段拼接成完整邮箱再插入页面,绝大多数爬取邮箱的爬虫不会执行JS逻辑,无法拿到完整的邮箱地址
内容的提问来源于stack exchange,提问作者bbProg
相关产品推荐
相关产品推荐

