国内流行的内容管理系统(CMS)多端全媒体解决方案 https://www.dedebiz.com
25'ten fazla konu seçemezsiniz Konular bir harf veya rakamla başlamalı, kısa çizgiler ('-') içerebilir ve en fazla 35 karakter uzunluğunda olabilir.

117 satır
3.9KB

  1. <?php
  2. /**
  3. * 防采集混淆字符串
  4. *
  5. * @version $Id: downmix.inc.php 1 9:14 2010年7月6日Z tianya $
  6. * @package DedeCMS.Libraries
  7. * @copyright Copyright (c) 2007 - 2020, DesDev, Inc.
  8. * @license http://help.dedecms.com/usersguide/license.html
  9. * @link http://www.dedecms.com
  10. */
  11. /**
  12. * 混淆字符串内容
  13. *
  14. * @access public
  15. * @param string $body 内容
  16. * @return string
  17. */
  18. if ( ! function_exists('RndString'))
  19. {
  20. function RndString(&$body)
  21. {
  22. //最大间隔距离(如果在检测不到p标记的情况下,加入混淆字串的最大间隔距离)
  23. $maxpos = 1024;
  24. //font 的字体颜色
  25. $fontColor = "#FFFFFF";
  26. //div span p 标记的随机样式
  27. $st1 = chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).chr(mt_rand(ord('a'),ord('z'))).mt_rand(100,999);
  28. $st2 = chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).chr(mt_rand(ord('a'),ord('z'))).mt_rand(100,999);
  29. $st3 = chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).chr(mt_rand(ord('a'),ord('z'))).mt_rand(100,999);
  30. $st4 = chr(mt_rand(ord('A'),ord('Z'))).chr(mt_rand(ord('a'),ord('z'))).chr(mt_rand(ord('a'),ord('z'))).mt_rand(100,999);
  31. $rndstyle[1]['value'] = ".{$st1} { display:none; }";
  32. $rndstyle[1]['name'] = $st1;
  33. $rndstyle[2]['value'] = ".{$st2} { display:none; }";
  34. $rndstyle[2]['name'] = $st2;
  35. $rndstyle[3]['value'] = ".{$st3} { display:none; }";
  36. $rndstyle[3]['name'] = $st3;
  37. $rndstyle[4]['value'] = ".{$st4} { display:none; }";
  38. $rndstyle[4]['name'] = $st4;
  39. $mdd = mt_rand(1,4);
  40. $rndstyleValue = $rndstyle[$mdd]['value'];
  41. $rndstyleName = $rndstyle[$mdd]['name'];
  42. $reString = "<style> $rndstyleValue </style>\r\n";
  43. //附机标记
  44. $rndem[1] = 'font';
  45. $rndem[2] = 'div';
  46. $rndem[3] = 'span';
  47. $rndem[4] = 'p';
  48. //读取字符串数据
  49. $fp = fopen(DEDEDATA.'/downmix.data.php','r');
  50. $start = 0;
  51. $totalitem = 0;
  52. while(!feof($fp))
  53. {
  54. $v = trim(fgets($fp,128));
  55. if($start==1)
  56. {
  57. if(preg_match("/#end#/i", $v))
  58. {
  59. break;
  60. }
  61. if($v!='')
  62. {
  63. $totalitem++; $rndstring[$totalitem] = preg_replace("/#,/", "", $v);
  64. }
  65. }
  66. if(preg_match("/#start#/i", $v))
  67. {
  68. $start = 1;
  69. }
  70. }
  71. fclose($fp);
  72. //处理要防采集的字段
  73. $bodylen = strlen($body) - 1;
  74. $prepos = 0;
  75. for($i=0;$i<=$bodylen;$i++)
  76. {
  77. if($i+2 >= $bodylen || $i<50)
  78. {
  79. $reString .= $body[$i];
  80. }
  81. else
  82. {
  83. $ntag = @strtolower($body[$i].$body[$i+1].$body[$i+2]);
  84. if($ntag=='</p' || ($ntag=='<br' && $i-$prepos>$maxpos) )
  85. {
  86. $dd = mt_rand(1,4);
  87. $emname = $rndem[$dd];
  88. $dd = mt_rand(1,$totalitem);
  89. $rnstr = $rndstring[$dd];
  90. if($emname!='font')
  91. {
  92. $rnstr = " <$emname class='$rndstyleName'>$rnstr</$emname> ";
  93. }
  94. else
  95. {
  96. $rnstr = " <font color='$fontColor'>$rnstr</font> ";
  97. }
  98. $reString .= $rnstr.$body[$i];
  99. $prepos = $i;
  100. }
  101. else
  102. {
  103. $reString .= $body[$i];
  104. }
  105. }
  106. }
  107. return $reString;
  108. }//函数结束
  109. }