Questions et réponses
Comment protéger le bouton Click to Chat Whatsapp du scraping Web des robots ?
Comment protéger le bouton Click to Chat Whatsapp du scraping Web des robots ?
<p>Je gère un site Web de petites annonces sur lequel les gens peuvent publier leurs articles et d'autres peuvent les contacter via Whatsapp pour plus de détails. Aujourd'hui, mon site Web a été attaqué et je constate une énorme quantité de clics sur les liens sur le bouton Whatsapp dans Google Analytics, cela ne peut pas être artificiel. Je pense que c'est un robot qui récupère le numéro de téléphone à partir du lien du bouton. </p>
<pre class="brush:php;toolbar:false;">$phone= $row_posts['phone'];
// par exemple $phone="+212612345678"
<div class="contact">
<a class="btn btn-success" target="_blank" rel="noopener noreferrer" href="https://wa.me/212$phone?text=TextMessage">
Plus de détails
≪/a>
</div></pre>
<p>Je l'utilise pour les boutons Whatsapp. Comme vous pouvez le constater, le numéro de téléphone s'affiche facilement dans le lien href. J'ai vu certains sites Web comme "www.mubawab.ma" utilisant le bouton Whatsapp mais vous ne pouvez pas voir ce numéro la première fois en inspectant le code. Je souhaite implémenter des fonctionnalités similaires afin de pouvoir protéger mes numéros de téléphone d'utilisateur contre le scraping Web des robots. </p>
Your Answer
1 réponse
Il existe de nombreuses façons de procéder. L'utilisation d'un intercepteur de style reCaptcha est probablement la meilleure option. Cependant, voici une implémentation simple qui arrêtera la plupart des robots non ciblés.
En PHP, j'ai encodé le numéro de téléphone via base64_encode puis je l'ai décodé en JavaScript en utilisant 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>
Le code génère ce contenu en 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>
Outils chauds Tags
Hot Questions
function_exists() ne peut pas déterminer la fonction personnalisée
2024-04-29 11:01:01
Comment afficher la version mobile de Google Chrome
2024-04-23 00:22:19
La fenêtre enfant exploite la fenêtre parent, mais la sortie ne répond pas.
2024-04-19 15:37:47
Il n'y a aucune sortie dans la fenêtre parent
2024-04-18 23:52:34
Où sont les didacticiels sur la cartographie mentale CSS ?
2024-04-16 10:10:18
Hot Tools
Collection de bibliothèques d'exécution vc9-vc14 (32 + 64 bits) (lien ci-dessous)
Téléchargez la collection de bibliothèques d'exécution requises pour l'installation de phpStudy
VC9 32 bits
Bibliothèque d'exécution de l'environnement d'installation intégré VC9 32 bits phpstudy
Version complète de la boîte à outils du programmeur PHP
Programmer Toolbox v1.0 Environnement intégré PHP
VC11 32 bits
Bibliothèque d'exécution de l'environnement d'installation intégré VC11 phpstudy 32 bits
SublimeText3 version chinoise
Version chinoise, très simple à utiliser
Sujets chauds
Article chaud
Prédiction des dix principales tendances du marché des cryptomonnaies en 2025 : où est la prochaine tendance ?
2025-11-07
By DDD
Comment identifier les projets de chiens autochtones dans le cercle monétaire ? Évitez les pièges et les avertissements de risque du Zerocoin
2025-11-07
By DDD
Tutoriel sur la résolution des problèmes de priorité des requêtes CSS @media et de couverture des règles
2025-11-07
By DDD





