php写的仿爱帮网电话号码字符串处理(防采集)。
前几天qq群里面有一个朋友要做一个电话防采集功能。常见的如 赶集网是把电话号码写在了图片上(暂时想不出好的办法而且估计服务器也负担大)。他说了爱帮网就是在电话号码里加随机乱码(例如 http://www.aibang.com/detail/285818146-420076936)增加采集的难度。
爱帮网页面里
在火狐firebug里查看 源码 发现很多 隐藏的随机乱码。如果采集的话不处理肯定会采集到随机乱码,增加采集的难度。
他们把每2个数字写到一个span标签里。
我看了一下爱帮网的处理于是我想起了时光网的电影剧情 也是采用类似的方法在 电影剧情里添加随机汉字。采集它的剧情让我花了差不多一个礼拜。于是反推一下想到了一个思路 。那些显示的数字的class 肯定是display ='block';而那些隐藏的 数字的class肯定是 display='none'。
爱帮网肯定有 这样2种样式随机从里面取出再重组于是就成了我们看到的那样了。
当然爱帮网也是 如此。
好了可以开工了。以下代码。我无耻的山寨了一下。
css文件。style.css
@charset "utf-8"; .m_0, .m_1, .m_2, .m_4, .m_5, .m_7, .m_9, .m_14, .m_16, .m_20, .m_21, .m_22, .m_23, .m_28, .m_29, .m_31, .m_32, .m_33, .m_34, .m_35, .m_37, .m_38, .m_39, .m_42, .m_44, .m_45, .m_47, .m_48 { display: inline !important; } .m_3, .m_6, .m_8, .m_10, .m_11, .m_12, .m_13, .m_15, .m_17, .m_18, .m_19, .m_24, .m_25, .m_26, .m_27, .m_30, .m_36, .m_40, .m_41, .m_43, .m_46, .m_49 { display: none !important; } .m_0, .m_1, .m_2, .m_3, .m_8, .m_9, .m_10, .m_16, .m_19, .m_20, .m_22, .m_33, .m_34, .m_37, .m_38, .m_40, .m_44, .m_45, .m_46, .m_48 { display: inline !important; } .m_4, .m_5, .m_6, .m_7, .m_11, .m_12, .m_13, .m_14, .m_15, .m_17, .m_18, .m_21, .m_23, .m_24, .m_25, .m_26, .m_27, .m_28, .m_29, .m_30, .m_31, .m_32, .m_35, .m_36, .m_39, .m_41, .m_42, .m_43, .m_47, .m_49 { display: none !important; }
php文件。
<?php /** * @author: keygle * @date : 2012-05-28 13:52:23Z * @desc : DealString * 说明山寨苏demo的 仿爱帮网电话号码字符串处理代码 */ header("Content-Type:text/html;charset=utf-8"); class Randstyle { /** * function Dealsting * 处理字符串 */ public function Dealstring($string) { if(empty($string)){ return false; } $telString = ''; //样式数组。 $show = array('m_0', 'm_1', 'm_2', 'm_3', 'm_8', 'm_9', 'm_10', 'm_16', 'm_19', 'm_20', 'm_22', 'm_33', 'm_34', 'm_37', 'm_38', 'm_40', 'm_44', 'm_45', 'm_46', 'm_48'); $hide = array('m_4', 'm_5', 'm_6', 'm_7', 'm_11', 'm_12', 'm_13', 'm_14', 'm_15', 'm_17', 'm_18', 'm_21', 'm_23', 'm_24', 'm_25', 'm_26', 'm_27', 'm_28', 'm_29', 'm_30', 'm_31', 'm_32', 'm_35', 'm_36', 'm_39', 'm_41', 'm_42', 'm_43', 'm_47', 'm_49'); for($i=0;$i<strlen($string);$i++){ //随机获得0或1。 $flag = mt_rand(0,1); if($flag){ $showStyle = array_rand($show); $telString .="<span class='".$show[$showStyle]."'>".$string[$i]."</span>"; }else{ $hideStyle = array_rand($hide); $telString .="<span class='".$hide[$hideStyle]."'>".mt_rand(0,1000)."</span>"; $i--; } } return $telString; } } $deal = new Randstyle(); $data = $deal->Dealstring('1370170170'); ?> <html> <head> <title>随机字符串样式</title> <link type="text/css" rel="stylesheet" href="style.css"/> </head> <body> <?php echo '手机号码:1370170170'; echo '<br/>'; echo '处理后的手机号码显示为:'; echo $data; ?> </body> </html>
效果如下。
firebug 下的效果。
ok 好了。转载请注明出处。。。。keygle