Cloudflare 有一项功能挺不错的,就是将页面上所有的邮箱地址都加密起来,防止机器人抓到然后干坏事。
这项功能要在后台开启 email address obfuscation
之后就可以在页面上加入一个邮箱地址,比如说 abc@abc.com
查看源代码就能发现类似如下的代码
<a class="__cf_email__" data-cfemail="30515253705152531e535f5d" href="/cdn-cgi/l/email-protection" rel="external nofollow" > [email protected] </a> <script data-cfhash="f9e31" type="text/javascript"> /* <![CDATA[ */!function(t,e,r,n,c,a,p){try{t=document.currentScript||function(){for(t=document.getElementsByTagName('script'),e=t.length;e--;)if(t[e].getAttribute('data-cfhash'))return t[e]}();if(t&&(c=t.previousSibling)){p=t.parentNode;if(a=c.getAttribute('data-cfemail')){for(e='',r='0x'+a.substr(0,2)|0,n=2;a.length-n;n+=2)e+='%'+('0'+('0x'+a.substr(n,2)^r).toString(16)).slice(-2);p.replaceChild(document.createTextNode(decodeURIComponent(e)),c)}p.removeChild(t)}}catch(u){}}()/* ]]> */ </script>
我们可以使用 PHP 的方式将这个邮箱地址解密出来
function deCFEmail($encode){ $k = hexdec(substr($encode,0,2)); for($i=2, $m=''; $i < strlen($encode) - 1; $i += 2){ $m.=chr(hexdec(substr($encode, $i, 2))^$k); } return $m; } echo deCFEmail("30515253705152531e535f5d")."\n";
得到的结果就是上面所说的 abc@abc.com
但是我们不想用 Cloudflare 的相关服务,就是单纯想用他这种加密技术,所以我们就得将加密的算法也找出来
我们可以利用上面解密的代码反向执行,就可以得到一个加密的算法了
function encodeEmail($email, $key=0) { $chars = str_split($email); $string = ''; $key = $key ? $key : rand(10, 99); foreach ($chars as $value) { $string .= sprintf("%02s", dechex(ord($value)^$key)); } return dechex($key).$string; }
我们就能利用这个加密算法,将手机号、邮箱地址、身份证等各种敏感的信息都加密起来,防止别人能轻易的抓取到数据
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持站长技术。
MFC项目在vs2017编译正常无报错,但是升级vs2019后一打开项目就报如下错误。 项...
本文实例为大家分享了vue实现按钮切换图片的具体代码,供大家参考,具体内容如下...
在大三的时候,一直就想搭建属于自己的一个博客,但由于各种原因,最终都不了了...
这5个PHP编程中的不良习惯,一定要改掉 PHP世界上最好的语言! 测试循环前数组是...
今天看到个不错的网页播放器,感觉不错,大家可以测试 我写的一个播放器网页: ...
由于固态驱动器(SSD)的速度比传统的硬盘驱动器(HDD)快得多,并且价格越来越便宜...
目录 读者基础 ?微服务架构梳理 https://www.coder4.com/homs_online/ ? ? 读者...
首先到这里下载其源码。里面东西挺多的,我们基本上可以把它放到两个文件夹就是...
目录 1. C语言文件接口(库函数) 1.1 fopen 1.2 fclose 1.3 fread 1.4 fwrite 1.5...
本文实例为大家分享了javascript实现倒计时提示框的具体代码,供大家参考,具体...