如何保护点击聊天 Whatsapp 按钮免受机器人网络抓取?
P粉786800174
P粉786800174 2023-09-03 12:52:21
0
1
497
<p>我正在运营一个分类网站,人们可以在其中发布他们的物品,其他人可以通过 Whatsapp 与他们联系以获取更多详细信息。今天我的网站受到了攻击,我在谷歌分析中的 Whatsapp 按钮上看到了大量的链接点击,这不可能是人为的。我认为这是一些机器人从按钮链接中抓取电话号码。</p> <pre class="brush:php;toolbar:false;">$phone= $row_posts['phone']; // for example $phone="+212612345678" <div class="contact"> <a class="btn btn-success" target="_blank" rel="noopener noreferrer" href="https://wa.me/212$phone?text=TextMessage"> More Details </a> </div></pre> <p>我将其用于 Whatsapp 按钮。如您所见,电话号码很容易显示在链接 href 中。我看到一些网站,如“www.mubawab.ma”,使用 Whatsapp 按钮,但您无法在检查代码中第一次看到该数字。我想实现类似的功能,这样我就可以保护我的用户电话号码免遭机器人网络抓取。</p>
P粉786800174
P粉786800174

全部回复(1)
P粉331849987

有很多方法可以做到这一点。使用 reCaptcha 风格的拦截器可能是最好的选择。不过,这里有一个简单的实施方法,可以阻止大多数非针对性攻击的机器人。

在 PHP 中,我通过 base64_encode 对电话号码进行编码,然后在 JavaScript 中使用 atob 对其进行解码。

<?php
    function obfuscatePhone($phone){
        return base64_encode($phone);
    }
?>

<div class="contact">
  <a class="btn btn-success" data-wakey="<?php echo obfuscatePhone("+212612345678");?>" target="_blank" rel="noopener noreferrer" href="#!">
More Details
 </a>   
</div>

<script>
    const wa = document.querySelectorAll("[data-wakey]");
    wa.forEach((e) => {
        const p = atob(e.dataset.wakey);
        e.href = "https://wa.me/212" + p + "?text=TextMessage";
    });
</script>

该代码在 HTML 中生成此内容:

const wa = document.querySelectorAll("[data-wakey]");
wa.forEach((e) => {
  const p = atob(e.dataset.wakey);
  e.href = "https://wa.me/212" + p + "?text=TextMessage";
});
<div class="contact">
  <a class="btn btn-success" data-wakey="KzIxMjYxMjM0NTY3OA==" target="_blank" rel="noopener noreferrer" href="#!">
More Details
 </a>
</div>
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!