如何实现谷歌等爬虫无法点击的JavaScript链接以避免广告主余额消耗
防爬虫点击广告链接实现方案
核心原理
绝大多数通用爬虫不会执行页面JavaScript逻辑,也不会主动识别非标准链接元素的点击跳转逻辑,因此将广告跳转逻辑绑定为动态DOM事件即可过滤90%以上的爬虫异常点击。
实现示例
方案1:无href属性a标签绑定跳转(兼顾用户点击交互体验)
<!-- 广告链接结构 --> <a class="ad-item" data-target="广告主落地页地址" rel="nofollow"> 广告素材/文案内容 </a> <script> // 页面加载完成后绑定点击事件 document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('.ad-item').forEach(ad => { ad.addEventListener('click', () => { // 可先执行广告点击上报、反作弊校验等逻辑 window.open(ad.dataset.target, '_blank', 'noopener noreferrer'); }); }); }); </script>
补充说明:rel="nofollow"可额外提醒遵守爬虫协议的蜘蛛不要追踪该链接,进一步降低被爬风险。
方案2:普通元素绑定跳转(完全不暴露链接特征)
如果要完全避免爬虫识别为链接,直接用div/span等非链接元素作为广告载体即可:
<!-- 广告卡片结构 --> <div class="ad-card" data-target="广告主落地页地址" style="cursor: pointer;"> <img src="广告图片地址" alt="推广内容"> <p>广告推广文案</p> </div> <script> document.addEventListener('DOMContentLoaded', () => { document.querySelectorAll('.ad-card').forEach(card => { card.addEventListener('click', () => { // 点击上报逻辑 window.location.href = card.dataset.target; }); }); }); </script>
额外优化建议
- 不要使用
javascript:伪协议写跳转逻辑,部分爬虫会识别这类内容为链接 - 可以配合服务端UA校验,拦截已知爬虫UA的广告资源访问请求,实现双层防护
- 广告跳转链接不要直接写在静态HTML的属性里,可以通过接口动态获取后再执行跳转,防护等级更高
内容的提问来源于stack exchange,提问作者ricard0
相关产品推荐
相关产品推荐

