敏感词汇检测

1、今天做测试的时候抓到一个数据包,发现一个txt文件(CensorWords.b7e4bfb.txt),第一眼反应以为是系统被入侵了,被入侵者传了个txt到服务器上面,后面发现不对啊,攻击的话也不应该上传这种txt,后门把这个txt丢百度一查,原来是敏感词汇检测。

0x02;敏感词汇检测实现:

1、首先创建敏感词汇文件

    需要准备一个txt格式的文件用于存放需要过滤的敏感词汇,这个文件放到resources资源文件的根目录

2、具体代码实现如下:

package com.ccytsoft.wkc.service;

import lombok.Data;
import org.springframework.stereotype.Service;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

/**
 * 敏感词汇service
 * 
 * @author  kuangxiang(kuangxiang666@yeah.net)
 * @date 15:06 2017/12/12
 */
 @Data
 @Service
public class SensitiveWordService {
     
    private StringBuilder replaceAll;

     /**
      * 编码
      * <P>
      * 在读敏感词汇文件时需要用到
      */
    private String encoding = "UTF-8";

     /**
      * 替换字符窜
      * <P>
      * 用于替换敏感词汇的字符窜
      */
    private String replceStr = "*";

     /**
      *单次替换的敏感词汇的长度
      */
    private int replceSize = 500;

     /**
      * 敏感词汇文件
      * <P>
      * 此文件放在资源文件的根目录下
      */
    private String fileName = "censorwords.txt";

    private List<String> arrayList;

     /**
      * 包含的敏感词列表,过滤掉重复项
      */
     public Set<String> sensitiveWordSet;

     /**
      * 包含的敏感词列表,包括重复项,统计次数
      */
     public List<String> sensitiveWordList;

     /**
      * 移除敏感词汇
      *
      * @param str 需要过滤的字符窜
      *
      * @return 过滤之后的字符窜
      */
     public String removeSensitiveWord(String str){
         SensitiveWordService sw = new SensitiveWordService("censorwords.txt");
         sw.InitializationWork();
         return sw.filterInfo(str);
     }

    /**
     * 拦截信息
     * <P>
     * 过滤掉敏感词汇的方法
     *
     * @param str 将要被过滤信息
     *
     * @return 过滤后的信息 
     */  
    public String filterInfo(String str) {
        sensitiveWordSet = new HashSet<String>();
       sensitiveWordList= new ArrayList<>();
        StringBuilder buffer = new StringBuilder(str);
        HashMap<Integer, Integer> hash = new HashMap<Integer, Integer>(arrayList.size());  
        String temp;  
        for(int x = 0; x < arrayList.size();x++) {
            temp = arrayList.get(x);  
            int findIndexSize = 0;  
            for(int start = -1;(start=buffer.indexOf(temp,findIndexSize)) > -1;){
               //System.out.println("###replace="+temp);
                findIndexSize = start+temp.length();//从已找到的后面开始找  
                Integer mapStart = hash.get(start);//起始位置
                //满足1个,即可更新map
                if(mapStart == null || (mapStart != null && findIndexSize > mapStart)){
                    hash.put(start, findIndexSize); 
                    //System.out.println("###敏感词:"+buffer.substring(start, findIndexSize));
                }  
            }  
        }  
        Collection<Integer> values = hash.keySet();  
        for(Integer startIndex : values){
            Integer endIndex = hash.get(startIndex);  
            //获取敏感词,并加入列表,用来统计数量
            String sensitive = buffer.substring(startIndex, endIndex);
            //System.out.println("###敏感词:"+sensitive);
            if (!sensitive.contains("*")) {//添加敏感词到集合
               sensitiveWordSet.add(sensitive);
               sensitiveWordList.add(sensitive);
         }
            buffer.replace(startIndex, endIndex, replaceAll.substring(0,endIndex-startIndex));
        }  
        hash.clear();  
        return buffer.toString();  
    }  

     /**
      *   初始化敏感词库
      */
     private void InitializationWork() {
         replaceAll = new StringBuilder(replceSize);
         for(int x=0;x < replceSize;x++)
         {
             replaceAll.append(replceStr);
         }
         //加载词库
         arrayList = new ArrayList<String>();
         InputStreamReader read = null;
         BufferedReader bufferedReader = null;
         try {
             read = new InputStreamReader(SensitiveWordService.class.getClassLoader().getResourceAsStream(fileName),encoding);
             bufferedReader = new BufferedReader(read);
             for(String txt = null;(txt = bufferedReader.readLine()) != null;){
                 if(!arrayList.contains(txt))
                     arrayList.add(txt);
             }
         } catch (UnsupportedEncodingException e) {
             e.printStackTrace();
         } catch (IOException e) {
             e.printStackTrace();
         }finally{
             try {
                 if(null != bufferedReader)
                     bufferedReader.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
             try {
                 if(null != read)
                     read.close();
             } catch (IOException e) {
                 e.printStackTrace();
             }
         }
     }
     
     /**
      * 测试方法
      *
      * @param args 参数
      */
    public static void main(String[] args){
       long startNumer = System.currentTimeMillis();
      SensitiveWordService sw = new SensitiveWordService("censorwords.txt");
       sw.InitializationWork();  
       //System.out.println("敏感词的数量:" + arrayList.size());
       String str = "你好呀,我这里有敏感词汇,来过滤我呀";  
       System.out.println("被检测字符串长度:"+str.length());  
       str = sw.filterInfo(str);  
       long endNumber = System.currentTimeMillis();  
       //System.out.println("语句中包含敏感词的个数为:" + sensitiveWordSet.size() + "。包含:" + sensitiveWordSet);
       //System.out.println("语句中包含敏感词的个数为:" + sensitiveWordList.size() + "。包含:" + sensitiveWordList);
       System.out.println("总共耗时:"+(endNumber-startNumer)+"ms");  
       System.out.println("替换后的字符串为:\n"+str);  
       System.out.println("替换后的字符串长度为:\n"+str.length());
   }

     /**
      * 有参构造
      * <P>
      * 文件要求路径在src或resource下,默认文件名为censorwords.txt
      * @param fileName 词库文件名(含后缀)
      */
     public SensitiveWordService(String fileName) {

         this.fileName = fileName;
     }

     /**
      * 有参构造
      *
      * @param replceStr 敏感词被转换的字符
      * @param replceSize 初始转义容量
      */
     public SensitiveWordService(String replceStr, int replceSize){
         this.replceStr = fileName;
         this.replceSize = replceSize;
     }

     /**
      * 无参构造
      */
     public SensitiveWordService(){
     }
}  

复制代码3、或者使用如下service代码:

package com.ccytsoft.wkc.filters;

import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * 【匹配度可以,速度较慢】
 * Java关键字过滤:http://blog.csdn.net/linfssay/article/details/7599262
 * @author ShengDecheng
 *
 */
public class KeyWordFilter {

    private static Pattern pattern = null;
    private static int keywordsCount = 0;

    // 从words.properties初始化正则表达式字符串
    private static void initPattern() {
        StringBuffer patternBuffer = new StringBuffer();
        try {
            //words.properties
            InputStream in = KeyWordFilter.class.getClassLoader().getResourceAsStream("keywords.properties");
            Properties property = new Properties();
            property.load(in);
            Enumeration<?> enu = property.propertyNames();
            patternBuffer.append("(");
            while (enu.hasMoreElements()) {
                String scontent = (String) enu.nextElement();
                patternBuffer.append(scontent + "|");
                //System.out.println(scontent);
                keywordsCount ++;
            }
            patternBuffer.deleteCharAt(patternBuffer.length() - 1);
            patternBuffer.append(")");
            //System.out.println(patternBuffer);
            // unix换成UTF-8
            // pattern = Pattern.compile(new
            // String(patternBuf.toString().getBytes("ISO-8859-1"), "UTF-8"));
            // win下换成gb2312
            // pattern = Pattern.compile(new String(patternBuf.toString()
            // .getBytes("ISO-8859-1"), "gb2312"));
            // 装换编码
            pattern = Pattern.compile(patternBuffer.toString());
        } catch (IOException ioEx) {
            ioEx.printStackTrace();
        }
    }

    private static String doFilter(String str) {
        Matcher m = pattern.matcher(str);
//        while (m.find()) {// 查找符合pattern的字符串
//            System.out.println("The result is here :" + m.group());
//        }
        // 选择替换方式,这里以* 号代替
        str = m.replaceAll("*");
        return str;
    }

    public static void main(String[] args) {
        long startNumer = System.currentTimeMillis(); 
        initPattern();
        //String str = "我日,艹,fuck,你妹的 干啥呢";
        System.out.println("敏感词的数量:" + keywordsCount);
        String str = "你好呀,我这里有敏感词汇,来过滤我呀";  
        System.out.println("被检测字符串长度:"+str.length()); 
        str = doFilter(str);
        //高效Java敏感词、关键词过滤工具包_过滤非法词句:http://blog.csdn.net/ranjio_z/article/details/6299834
        //FilteredResult result = WordFilterUtil.filterText(str, '*');
        long endNumber = System.currentTimeMillis();  
        System.out.println("总共耗时:"+(endNumber-startNumer)+"ms"); 
        System.out.println("替换后的字符串为:\n"+str);
        //System.out.println("替换后的字符串为:\n"+result.getFilteredContent());
        //System.out.println("替换后的字符串为1:\n"+result.getOriginalContent());
        //System.out.println("替换后的字符串为2:\n"+result.getBadWords());
    }
}

4、敏感词如下,采用unicode加密

bitch
shit
falun
tianwang
cdjp
bignews
boxun
chinaliberal
chinamz
chinesenewsnet
cnd
creaders
dafa
dajiyuan
dfdz
dpp
falu
falundafa
flg
freechina
freenet
fuck
GCD
gcd
hongzhi
hrichina
huanet
hypermart
incest
jiangdongriji
lihongzhi
making
minghui
minghuinews
nacb
naive
nmis
paper
peacehall
playboy
renminbao
renmingbao
rfa
safeweb
sex
simple
svdc
taip
tibetalk
triangle
triangleboy
UltraSurf
unixbox
ustibet
voa
wangce
wstaiji
xinsheng
yuming
zhengjian
zhengjianwang
zhenshanren
zhuanfalun
xxx
anime
censor
hentai
[hz]
(hz)
[av]
(av)
[sm]
(sm)
porn
multimedia
toolbar
downloader
\u9876\u7EA7
\u5973\u512A
\u5C0F\u6CFD\u739B\u8389\u4E9A
\u5F3A\u6B7C
\u4E71\u4EA4
\u8272\u53CB
\u5A4A\u5B50
\u84B2\u56E2
\u7F8E\u5973
\u5973\u5973
\u55B7\u5C3F
\u7EDD\u7248
\u4E09\u7D1A
\u6B66\u817E\u5170
\u51CC\u8FB1
\u66B4\u5E72
\u8BF1\u60D1
\u9634\u5507
\u5C0F\u6CFD\u5706
\u63D2\u63D2
\u5750\u4EA4
\u9577\u7028\u611B
\u5DDD\u5CF6\u548C\u6D25\u5BE6
\u8349\u8393\u725B\u5976
\u5C0F\u6FA4\u5712
\u98EF\u5CF6\u611B
\u661F\u5D0E\u672A\u4F86
\u53CA\u5DDD\u5948\u592E
\u671D\u6CB3\u862D
\u5915\u6A39\u821E\u5B50
\u5927\u6FA4\u60E0
\u91D1\u6FA4\u6587\u5B50
\u4E09\u6D66\u611B\u4F73
\u4F0A\u6771
\u6170\u5B89\u5987
\u5973\u6559\u5E2B
\u6B66\u85E4\u862D
\u5B66\u751F\u59B9
\u65E0\u6BDB
\u731B\u63D2
\u62A4\u58EB
\u81EA\u62CD
A\u7247
A\u7EA7
\u55B7\u7CBE
\u5077\u7AA5
\u5C0F\u7A74
\u5927\u7247
\u88AB\u8650
\u9EC4\u8272
\u88AB\u8FEB
\u88AB\u903C
\u5F3A\u66B4
\u53E3\u6280
\u7834\u5904
\u7CBE\u6DB2
\u5E7C\u4EA4
\u72C2\u5E72
\u517D\u4EA4
\u7FA4\u4EA4
\u53F6\u5B50\u6963
\u8212\u6DC7
\u7FC1\u8679
\u5927\u9646
\u9732\u70B9
\u9732\u6BDB
\u6B66\u85E4\u5170
\u996D\u5C9B\u7231
\u6CE2\u9738
\u5C11\u513F\u4E0D\u5B9C
\u6210\u4EBA
\u5077\u60C5
\u53EB\u5E8A
\u4E0A\u5E8A
\u5236\u670D
\u4E9A\u70ED
\u63F4\u4EA4
\u8D70\u5149
\u60C5\u8272
\u8089\u6B32
\u7F8E\u817F
\u81EA\u6478
18\u7981
\u6346\u7ED1
\u4E1D\u889C
\u6F6E\u5439
\u809B\u4EA4
\u7FA4\u5C04
\u5185\u5C04
\u5C11\u5987
\u5361\u901A
\u81ED\u4F5C
\u8584\u683C
\u8ABF\u6559
\u8FD1\u89AA
\u9023\u767C
\u9650\u5236
\u4E71\u4F26
\u6BCD\u5B50
\u5077\u62CD
\u66F4\u8863
\u7121\u4FEE\u6B63
\u4E00\u672C\u9053
1Pondo
\u6AFB\u4E95
\u98A8\u82B1
\u591C\u52E4\u75C5\u680B
\u83F1\u605D
\u8650\u5F85
\u6FC0\u60C5
\u9EBB\u8863
\u4E09\u7EA7
\u5410\u8840
\u4E09\u4E2A\u4EE3\u8868
\u4E00\u515A
\u591A\u515A
\u6C11\u4E3B
\u4E13\u653F
\u884C\u623F
\u81EA\u6170
\u5439\u8427
\u8272\u72FC
\u80F8\u7F69
\u5185\u88E4
\u5E95\u88E4
\u79C1\u5904
\u723D\u6B7B
\u53D8\u6001
\u59B9\u75BC
\u59B9\u75DB
\u5F1F\u75BC
\u5F1F\u75DB
\u59D0\u75BC
\u59D0\u75DB
\u54E5\u75BC
\u54E5\u75DB
\u540C\u623F
\u6253\u70AE
\u9020\u7231
\u4F5C\u7231
\u505A\u7231
\u9E21\u5DF4
\u9634\u830E
\u9633\u5177
\u5F00\u82DE
\u809B\u95E8
\u9634\u9053
\u9634\u8482
\u8089\u68CD
\u8089\u68D2
\u8089\u6D1E
\u8361\u5987
\u9634\u56CA
\u777E\u4E38
\u6345\u4F60
\u6345\u6211
\u63D2\u6211
\u63D2\u4F60
\u63D2\u5979
\u63D2\u4ED6
\u5E72\u4F60
\u5E72\u5979
\u5E72\u4ED6
\u5C04\u7CBE
\u53E3\u4EA4
\u5C41\u773C
\u9634\u6237
\u9634\u95E8
\u4E0B\u4F53
\u9F9F\u5934
\u9634\u6BDB
\u907F\u5B55\u5957
\u4F60\u5988\u903C
\u5927\u9E21\u5DF4
\u9AD8\u6F6E
\u653F\u6CBB
\u5927\u6CD5
\u5F1F\u5B50
\u5927\u7EAA\u5143
\u771F\u5584\u5FCD
\u660E\u6167
\u6D2A\u5FD7
\u7EA2\u5FD7
\u6D2A\u667A
\u7EA2\u667A
\u6CD5\u8F6E
\u6CD5\u8BBA
\u6CD5\u6CA6
\u6CD5\u4F26
\u53D1\u8F6E
\u53D1\u8BBA
\u53D1\u6CA6
\u53D1\u4F26
\u8F6E\u529F
\u8F6E\u516C
\u8F6E\u653B
\u6CA6\u529F
\u6CA6\u516C
\u6CA6\u653B
\u8BBA\u653B
\u8BBA\u529F
\u8BBA\u516C
\u4F26\u653B
\u4F26\u529F
\u4F26\u516C
\u6253\u5012
\u6C11\u8FD0
\u516D\u56DB
\u53F0\u72EC
\u738B\u4E39
\u67F4\u73B2
\u674E\u9E4F
\u5929\u5B89\u95E8
\u6C5F\u6CFD\u6C11
\u6731\u5BB9\u57FA
\u6731\u9555\u57FA
\u674E\u957F\u6625
\u674E\u745E\u73AF
\u80E1\u9526\u6D9B
\u9B4F\u4EAC\u751F
\u53F0\u6E7E\u72EC\u7ACB
\u85CF\u72EC
\u897F\u85CF\u72EC\u7ACB
\u7586\u72EC
\u65B0\u7586\u72EC\u7ACB
\u8B66\u5BDF
\u6C11\u8B66
\u516C\u5B89
\u9093\u5C0F\u5E73
\u5927\u76D6\u5E3D
\u9769\u547D
\u6B66\u8B66
\u9ED1\u793E\u4F1A
\u4EA4\u8B66
\u6D88\u9632\u961F
\u5211\u8B66
\u591C\u603B\u4F1A
\u5988\u4E2A
\u516C\u6B3E
\u9996\u957F
\u4E66\u8BB0
\u5750\u53F0
\u8150\u8D25
\u57CE\u7BA1
\u66B4\u52A8
\u66B4\u4E71
\u674E\u8FDC\u54F2
\u53F8\u6CD5\u8B66\u5B98
\u9AD8\u5E72
\u4EBA\u5927
\u5C09\u5065\u884C
\u674E\u5C9A\u6E05
\u9EC4\u4E3D\u6EE1
\u4E8E\u5E7C\u519B
\u6587\u5B57\u72F1
\u5B8B\u7956\u82F1
\u81EA\u711A
\u9A97\u5C40
\u732B\u8089
\u5438\u50A8
\u5F20\u4E94\u5E38
\u5F20\u4E15\u6797
\u7A7A\u96BE
\u6E29\u5BB6\u5B9D
\u5434\u90A6\u56FD
\u66FE\u5E86\u7EA2
\u9EC4\u83CA
\u7F57\u5E72
\u5434\u5B98\u6B63
\u8D3E\u5E86\u6797
\u4E13\u5236
\u4E09\u500B\u4EE3\u8868
\u4E00\u9EE8
\u591A\u9EE8
\u5C08\u653F
\u5927\u7D00\u5143
\u7D05\u5FD7
\u7D05\u667A
\u6CD5\u8F2A
\u6CD5\u8AD6
\u6CD5\u6DEA
\u6CD5\u502B
\u767C\u8F2A
\u767C\u8AD6
\u767C\u6DEA
\u767C\u502B
\u8F2A\u529F
\u8F2A\u516C
\u8F2A\u653B
\u6DEA\u529F
\u6DEA\u516C
\u6DEA\u653B
\u8AD6\u653B
\u8AD6\u529F
\u8AD6\u516C
\u502B\u653B
\u502B\u529F
\u502B\u516C
\u6C11\u904B
\u53F0\u7368
\u674E\u9D6C
\u5929\u5B89\u9580
\u6C5F\u6FA4\u6C11
\u6731\u9394\u57FA
\u674E\u9577\u6625
\u674E\u745E\u74B0
\u80E1\u9326\u6FE4
\u81FA\u7063\u7368\u7ACB
\u85CF\u7368
\u897F\u85CF\u7368\u7ACB
\u7586\u7368
\u65B0\u7586\u7368\u7ACB
\u9127\u5C0F\u5E73
\u5927\u84CB\u5E3D
\u9ED1\u793E\u6703
\u6D88\u9632\u968A
\u591C\u7E3D\u6703
\u5ABD\u500B
\u9996\u9577
\u66F8\u8A18
\u8150\u6557
\u66B4\u52D5
\u66B4\u4E82
\u674E\u9060\u54F2
\u9AD8\u5E79
\u674E\u5D50\u6E05
\u9EC3\u9E97\u6EFF
\u65BC\u5E7C\u8ECD
\u6587\u5B57\u7344
\u9A19\u5C40
\u8C93\u8089
\u5438\u5132
\u5F35\u4E94\u5E38
\u5F35\u4E15\u6797
\u7A7A\u96E3
\u6EAB\u5BB6\u5BF6
\u5433\u90A6\u570B
\u66FE\u6176\u7D05
\u9EC3\u83CA
\u7F85\u5E79
\u8CC8\u6176\u6797
\u5C08\u5236
\u516B\u4E5D
\u516B\u8001
\u5DF4\u8D6B
\u767D\u7ACB\u6734
\u767D\u68A6
\u767D\u76AE\u4E66
\u4FDD\u9493
\u9C8D\u6208
\u9C8D\u5F64
\u66B4\u653F
\u5317\u5927\u4E09\u89D2\u5730\u8BBA\u575B
\u5317\u97E9
\u5317\u4EAC\u5F53\u5C40
\u5317\u4EAC\u4E4B\u6625
\u5317\u7F8E\u81EA\u7531\u8BBA\u575B
\u535A\u8BAF
\u8521\u5D07\u56FD
\u66F9\u957F\u9752
\u66F9\u521A\u5DDD
\u5E38\u52B2
\u9648\u70B3\u57FA
\u9648\u519B
\u9648\u8499
\u9648\u7834\u7A7A
\u9648\u5E0C\u540C
\u9648\u5C0F\u540C
\u9648\u5BA3\u826F
\u9648\u4E00\u8C18
\u9648\u603B\u7EDF
\u7A0B\u51EF
\u7A0B\u94C1\u519B
\u7A0B\u771F
\u8FDF\u6D69\u7530
\u6301\u4E0D\u540C\u653F\u89C1
\u8D64\u532A
\u8D64\u5316
\u6625\u590F\u81EA\u7531\u8BBA\u575B
\u8FBE\u8D56
\u5927\u53C2\u8003
\u5927\u7EAA\u5143\u65B0\u95FB\u7F51
\u5927\u7EAA\u56ED
\u5927\u5BB6\u8BBA\u575B
\u5927\u53F2
\u5927\u53F2\u8BB0
\u5927\u53F2\u7EAA
\u5927\u4E2D\u56FD\u8BBA\u575B
\u5927\u4E2D\u534E\u8BBA\u575B
\u5927\u4F17\u771F\u4EBA\u771F\u4E8B
\u6234\u76F8\u9F99
\u5F39\u52BE
\u767B\u8F89
\u9093\u7B11\u8D2B
\u8FEA\u91CC\u590F\u63D0
\u5730\u4E0B\u6559\u4F1A
\u5730\u4E0B\u520A\u7269
\u7B2C\u56DB\u4EE3
\u7535\u89C6\u6D41\u6C13
\u9493\u9C7C\u5C9B
\u4E01\u5173\u6839
\u4E01\u5143
\u4E01\u5B50\u9716
\u4E1C\u5317\u72EC\u7ACB
\u4E1C\u65B9\u7EA2\u65F6\u7A7A
\u4E1C\u65B9\u65F6\u7A7A
\u4E1C\u5357\u897F\u5317\u8BBA\u8C08
\u4E1C\u793E
\u4E1C\u571F\u8033\u5176\u65AF\u5766
\u4E1C\u897F\u5357\u5317\u8BBA\u575B
\u52A8\u4E71
\u72EC\u88C1
\u72EC\u592B
\u72EC\u7ACB\u53F0\u6E7E\u4F1A
\u675C\u667A\u5BCC
\u591A\u7EF4
\u5C59\u6C11
\u4FC4\u56FD
\u53D1\u6123
\u53D1\u6B63\u5FF5
\u53CD\u5C01\u9501\u6280\u672F
\u53CD\u8150\u8D25\u8BBA\u575B
\u53CD\u653B
\u53CD\u5171
\u53CD\u4EBA\u7C7B
\u53CD\u793E\u4F1A
\u65B9\u52B1\u4E4B
\u65B9\u821F\u5B50
\u98DE\u626C\u8BBA\u575B
\u6590\u5F97\u52D2
\u8D39\u826F\u52C7
\u5206\u5BB6\u5728
\u5206\u88C2
\u7C89\u9970\u592A\u5E73
\u98CE\u96E8\u795E\u5DDE
\u98CE\u96E8\u795E\u5DDE\u8BBA\u575B
\u5C01\u4ECE\u5FB7
\u5C01\u6740
\u51AF\u4E1C\u6D77
\u51AF\u7D20\u82F1
\u4F5B\u5C55\u5343\u624B\u6CD5
\u4ED8\u7533\u5947
\u5085\u7533\u5947
\u5085\u5FD7\u5BF0
\u9AD8\u5B98
\u9AD8\u6587\u8C26
\u9AD8\u85AA\u517B\u5EC9
\u9AD8\u77BB
\u9AD8\u81EA\u8054
\u6208\u626C
\u9E3D\u6D3E
\u6B4C\u529F\u9882\u5FB7
\u86E4\u87C6
\u4E2A\u4EBA\u5D07\u62DC
\u5DE5\u81EA\u8054
\u529F\u6CD5
\u5171\u4EA7
\u5171\u515A
\u5171\u532A
\u5171\u72D7
\u5171\u519B
\u5173\u5353\u4E2D
\u8D2F\u901A\u4E24\u6781\u6CD5
\u5E7F\u95FB
\u90ED\u4F2F\u96C4
\u90ED\u7F57\u57FA
\u90ED\u5E73
\u90ED\u5CA9\u534E
\u56FD\u5BB6\u5B89\u5168
\u56FD\u5BB6\u673A\u5BC6
\u56FD\u519B
\u56FD\u8D3C
\u97E9\u4E1C\u65B9
\u97E9\u8054\u6F6E
\u4F55\u5FB7\u666E
\u4F55\u52C7
\u6CB3\u6B87
\u7EA2\u706F\u533A
\u7EA2\u8272\u6050\u6016
\u5B8F\u6CD5
\u6D2A\u4F20
\u6D2A\u541F
\u6D2A\u54F2\u80DC
\u80E1\u7D27\u638F
\u80E1\u9526\u6ED4
\u80E1\u9526\u6DD8
\u80E1\u666F\u6D9B
\u80E1\u5E73
\u80E1\u603B\u4E66\u8BB0
\u62A4\u6CD5
\u82B1\u82B1\u516C\u5B50
\u534E\u5EFA\u654F
\u534E\u901A\u65F6\u4E8B\u8BBA\u575B
\u534E\u590F\u6587\u6458
\u534E\u8BED\u4E16\u754C\u8BBA\u575B
\u534E\u5CB3\u65F6\u4E8B\u8BBA\u575B
\u9EC4\u6148\u840D
\u9EC4\u7978
\u9EC4\u83CA\u3000
\u9EC4\u7FD4
\u56DE\u6C11\u66B4\u52A8
\u6094\u8FC7\u4E66
\u9E21\u6BDB\u4FE1\u6587\u6C47
\u59EC\u80DC\u5FB7
\u79EF\u514B\u9986
\u57FA\u7763
\u8D3E\u5EF7\u5B89
\u8D3E\u80B2\u53F0
\u5EFA\u56FD\u515A
\u6C5Fcore
\u6C5F\u516B\u70B9
\u6C5F\u6D41\u6C13
\u6C5F\u7F57
\u6C5F\u7EF5\u6052
\u6C5F\u9752
\u6C5F\u620F\u5B50
\u6C5F\u5219\u6C11
\u6C5F\u6CFD\u6167
\u6C5F\u8D3C
\u6C5F\u8D3C\u6C11
\u6C5F\u6298\u6C11
\u6C5F\u732A
\u6C5F\u732A\u5AB3
\u6C5F\u4E3B\u5E2D
\u59DC\u6625\u4E91
\u5C06\u5219\u6C11
\u50F5\u8D3C
\u50F5\u8D3C\u6C11
\u8BB2\u6CD5
\u9171\u732A\u5AB3
\u4EA4\u73ED
\u6559\u517B\u9662
\u63A5\u73ED
\u63ED\u6279\u4E66
\u91D1\u5C27\u5982
\u9526\u6D9B
\u7981\u770B
\u7ECF\u6587
\u5F00\u653E\u6742\u5FD7
\u770B\u4E2D\u56FD
\u6297\u8BAE
\u909D\u9526\u6587
\u52B3\u52A8\u6559\u517B\u6240
\u52B3\u6539
\u52B3\u6559
\u8001\u6C5F
\u8001\u6BDB
\u9ECE\u5B89\u53CB
\u674E\u5927\u5E08
\u674E\u767B\u8F89
\u674E\u7EA2\u75D4
\u674E\u5B8F\u5FD7
\u674E\u6D2A\u5BBD
\u674E\u7EE7\u8010
\u674E\u5170\u83CA
\u674E\u8001\u5E08
\u674E\u5F55
\u674E\u7984
\u674E\u5C11\u6C11
\u674E\u6DD1\u5A34
\u674E\u65FA\u9633
\u674E\u6587\u658C
\u674E\u5C0F\u670B
\u674E\u5C0F\u9E4F
\u674E\u6708\u6708\u9E1F
\u674E\u5FD7\u7EE5
\u674E\u603B\u7406
\u674E\u603B\u7EDF
\u8FDE\u80DC\u5FB7
\u8054\u603B
\u5EC9\u653F\u5927\u8BBA\u575B
\u70BC\u529F
\u6881\u5149\u70C8
\u6881\u64CE\u58A9
\u4E24\u5CB8\u5173\u7CFB
\u4E24\u5CB8\u4E09\u5730\u8BBA\u575B
\u4E24\u4E2A\u4E2D\u56FD
\u4E24\u4F1A
\u4E24\u4F1A\u62A5\u9053
\u4E24\u4F1A\u65B0\u95FB
\u5ED6\u9521\u9F99
\u6797\u4FDD\u534E
\u6797\u957F\u76DB
\u6797\u6A35\u6E05
\u6797\u614E\u7ACB
\u51CC\u950B
\u5218\u5BBE\u6DF1
\u5218\u5BBE\u96C1
\u5218\u521A
\u5218\u56FD\u51EF
\u5218\u534E\u6E05
\u5218\u4FCA\u56FD
\u5218\u51EF\u4E2D
\u5218\u5343\u77F3
\u5218\u9752
\u5218\u5C71\u9752
\u5218\u58EB\u8D24
\u5218\u6587\u80DC
\u5218\u6653\u6CE2
\u5218\u6653\u7AF9
\u5218\u6C38\u5DDD
\u6D41\u4EA1
\u9F99\u864E\u8C79
\u9646\u59D4\u4F1A
\u5415\u4EAC\u82B1
\u5415\u79C0\u83B2
\u62A1\u529F
\u8F6E\u5927
\u7F57\u793C\u8BD7
\u9A6C\u5927\u7EF4
\u9A6C\u826F\u9A8F
\u9A6C\u4E09\u5BB6
\u9A6C\u65F6\u654F
\u5356\u56FD
\u6BDB\u5395\u6D1E
\u6BDB\u8D3C\u4E1C
\u7F8E\u56FD\u53C2\u8003
\u7F8E\u56FD\u4E4B\u97F3
\u8499\u72EC
\u8499\u53E4\u72EC\u7ACB
\u5BC6\u7A74
\u7EF5\u6052
\u6C11\u56FD
\u6C11\u8FDB\u515A
\u6C11\u8054
\u6C11\u610F
\u6C11\u610F\u8BBA\u575B
\u6C11\u9635
\u6C11\u732A
\u6C11\u4E3B\u5899
\u6C11\u65CF\u77DB\u76FE
\u83AB\u4F1F\u5F3A
\u6728\u7280\u5730
\u6728\u5B50\u8BBA\u575B
\u5357\u5927\u81EA\u7531\u8BBA\u575B
\u95F9\u4E8B
\u502A\u80B2\u8D24
\u4F60\u8BF4\u6211\u8BF4\u8BBA\u575B
\u6F58\u56FD\u5E73
\u6CE1\u6CAB\u7ECF\u6D4E
\u8FEB\u5BB3
\u7941\u5EFA
\u9F50\u58A8
\u94B1\u8FBE
\u94B1\u56FD\u6881
\u94B1\u5176\u741B
\u62A2\u7CAE\u8BB0
\u4E54\u77F3
\u4EB2\u7F8E
\u94A6\u672C\u7ACB
\u79E6\u664B
\u8F7B\u821F\u5FEB\u8BAF
\u60C5\u5987
\u5E86\u7EA2
\u5168\u56FD\u4E24\u4F1A
\u70ED\u6BD4\u5A05
\u70ED\u7AD9\u653F\u8BBA\u7F51
\u4EBA\u6C11\u62A5
\u4EBA\u6C11\u5185\u60C5\u771F\u76F8
\u4EBA\u6C11\u771F\u5B9E
\u4EBA\u6C11\u4E4B\u58F0\u8BBA\u575B
\u4EBA\u6743
\u745E\u58EB\u91D1\u878D\u5927\u5B66
\u5584\u6076\u6709\u62A5
\u4E0A\u6D77\u5E2E
\u4E0A\u6D77\u5B64\u513F\u9662
\u90B5\u5BB6\u5065
\u795E\u901A\u52A0\u6301\u6CD5
\u6C88\u5F64
\u5347\u5929
\u76DB\u534E\u4EC1
\u76DB\u96EA
\u5E08\u7236
\u77F3\u6208
\u65F6\u4EE3\u8BBA\u575B
\u65F6\u4E8B\u8BBA\u575B
\u4E16\u754C\u7ECF\u6D4E\u5BFC\u62A5
\u4E8B\u5B9E\u72EC\u7ACB
\u53CC\u5341\u8282
\u6C34\u6241
\u7A0E\u529B
\u53F8\u9A6C\u664B
\u53F8\u9A6C\u7490
\u53F8\u5F92\u534E
\u65AF\u8BFA
\u56DB\u5DDD\u72EC\u7ACB
\u5B8B\u5E73
\u5B8B\u4E66\u5143
\u82CF\u7ECD\u667A
\u82CF\u6653\u5EB7
\u53F0\u76DF
\u53F0\u6E7E\u72D7
\u53F0\u6E7E\u5EFA\u56FD\u8FD0\u52A8\u7EC4\u7EC7
\u53F0\u6E7E\u9752\u5E74\u72EC\u7ACB\u8054\u76DF
\u53F0\u6E7E\u653F\u8BBA\u533A
\u53F0\u6E7E\u81EA\u7531\u8054\u76DF
\u592A\u5B50\u515A
\u6C64\u5149\u4E2D
\u5510\u67CF\u6865
\u5510\u6377
\u6ED5\u6587\u751F
\u5929\u6012
\u5929\u846C
\u7AE5\u5C79
\u7EDF\u72EC
\u7EDF\u72EC\u8BBA\u575B
\u7EDF\u6218
\u5C60\u6740
\u5916\u4EA4\u8BBA\u575B
\u5916\u4EA4\u4E0E\u65B9\u7565
\u4E07\u6DA6\u5357
\u4E07\u7EF4\u8BFB\u8005\u8BBA\u575B
\u4E07\u6653\u4E1C
\u6C6A\u5CB7
\u738B\u5B9D\u68EE
\u738B\u70B3\u7AE0
\u738B\u7B56
\u738B\u8D85\u534E
\u738B\u8F85\u81E3
\u738B\u521A
\u738B\u6DB5\u4E07
\u738B\u6CAA\u5B81
\u738B\u519B\u6D9B
\u738B\u529B\u96C4
\u738B\u745E\u6797
\u738B\u6DA6\u751F
\u738B\u82E5\u671B
\u738B\u5E0C\u54F2
\u738B\u79C0\u4E3D
\u738B\u51B6\u576A
\u7F51\u7279
\u9B4F\u65B0\u751F
\u6E29\u5143\u51EF
\u6587\u9769
\u65E0\u754C\u6D4F\u89C8\u5668
\u5434\u767E\u76CA
\u5434\u65B9\u57CE
\u5434\u5F18\u8FBE
\u5434\u5B8F\u8FBE
\u5434\u4EC1\u534E
\u5434\u5B66\u707F
\u5434\u5B66\u74A8
\u543E\u5C14\u5F00\u5E0C
\u4E94\u4E0D
\u4F0D\u51E1
\u897F\u85CF
\u6D17\u8111
\u9879\u6000\u8BDA
\u9879\u5C0F\u5409
\u5C0F\u53C2\u8003
\u8096\u5F3A
\u90AA\u6076
\u8C22\u957F\u5EF7
\u8C22\u9009\u9A8F
\u8C22\u4E2D\u4E4B
\u8F9B\u704F\u5E74
\u65B0\u89C2\u5BDF\u8BBA\u575B
\u65B0\u534E\u4E3E\u62A5
\u65B0\u534E\u5185\u60C5
\u65B0\u534E\u901A\u8BBA\u575B
\u65B0\u751F\u7F51
\u65B0\u95FB\u5C01\u9501
\u65B0\u8BED\u4E1D
\u4FE1\u7528\u5371\u673A
\u90A2\u94EE
\u718A\u708E
\u718A\u7131
\u4FEE\u70BC
\u5F90\u90A6\u79E6
\u5F90\u624D\u539A
\u5F90\u5321\u8FEA
\u5F90\u6C34\u826F
\u8BB8\u5BB6\u5C6F
\u859B\u4F1F
\u5B66\u6F6E
\u5B66\u8054
\u5B66\u4E60\u73ED
\u5B66\u8FD0
\u5B66\u81EA\u8054
\u96EA\u5C71\u72EE\u5B50
\u4E25\u5BB6\u5176
\u4E25\u5BB6\u797A
\u960E\u660E\u590D
\u989C\u5C04
\u592E\u89C6\u5185\u90E8\u665A\u4F1A
\u6768\u6000\u5B89
\u6768\u5EFA\u5229
\u6768\u5DCD
\u6768\u6708\u6E05
\u6768\u5468
\u59DA\u6708\u8C26
\u591C\u8BDD\u7D2B\u7981\u57CE
\u4E00\u4E2D\u4E00\u53F0
\u4E49\u89E3
\u4EA6\u51E1
\u5F02\u89C1\u4EBA\u58EB
\u5F02\u8BAE\u4EBA\u58EB
\u6613\u4E39\u8F69
\u6613\u5FD7\u71B9
\u5C39\u5E86\u6C11
\u7531\u559C\u8D35
\u6E38\u884C
\u5E7C\u9F7F
\u4E8E\u5927\u6D77
\u4E8E\u6D69\u6210
\u4F59\u82F1\u65F6
\u8206\u8BBA
\u8206\u8BBA\u53CD\u5236
\u5B87\u660E\u7F51
\u5706\u6EE1
\u8FDC\u5FD7\u660E
\u5CB3\u6B66
\u5728\u5341\u6708
\u5219\u6C11
\u62E9\u6C11
\u6CFD\u6C11
\u8D3C\u6C11
\u66FE\u57F9\u708E
\u5F20\u4F2F\u7B20
\u5F20\u94A2
\u5F20\u5B8F\u5821
\u5F20\u5065
\u5F20\u6797
\u5F20\u4E07\u5E74
\u5F20\u4F1F\u56FD
\u5F20\u662D\u5BCC
\u5F20\u5FD7\u6E05
\u8D75\u6D77\u9752
\u8D75\u5357
\u8D75\u54C1\u6F5E
\u8D75\u6653\u5FAE
\u8D75\u7D2B\u9633
\u54F2\u6C11
\u771F\u76F8
\u771F\u8C61
\u9547\u538B
\u4E89\u9E23\u8BBA\u575B
\u6B63\u89C1\u7F51
\u6B63\u4E49\u515A\u8BBA\u575B
\u90D1\u4E49
\u5305\u591C
\u51B0\u706B
\u63D2B
\u64CDB
\u5904\u5973
\u6253\u98DE\u673A
\u98CE\u9A9A
\u9EC4\u8272\u7535\u5F71
\u6FC0\u60C5\u89C6\u9891
\u53EB\u6625
\u72C2\u63D2
\u72C2\u64CD
\u72C2\u641E
\u9732\u4E73
\u88F8\u804A
\u88F8\u4F53
\u5C41\u80A1
\u5F3A\u5978
\u4E09\u7EA7\u7247
\u8272\u60C5
\u8131\u5149
\u8131\u8863
\u6027\u7231
\u6027\u611F
\u6027\u9AD8\u6F6E
\u6027\u4EA4
\u80F8\u90E8
\u8273\u821E
\u4E00\u591C\u60C5
\u6B32\u671B
\u64CD\u4F60
\u4F60\u4ED6\u5988
\u50BB\u903C
\u50BBB
TMD
TNND
TND
\u6CD5\u8F6E\u529F
\u6C5F\u6C0F
\u674E\u6D2A\u5FD7
\u65B0\u5510\u4EBA
\u6DEB\u9761
\u6DEB\u6C34
\u516D\u56DB\u4E8B\u4EF6
\u8FF7\u836F
\u8FF7\u660F\u836F
\u7A83\u542C\u5668
\u516D\u5408\u5F69
\u4E70\u5356\u67AA\u652F
\u9000\u515A
\u4E09\u5511\u4ED1
\u9EBB\u9189\u836F
\u9EBB\u9189\u4E59\u919A
\u77ED\u4FE1\u7FA4\u53D1\u5668
\u5E1D\u56FD\u4E4B\u68A6
\u6BDB\u4E00\u9C9C
\u9ECE\u9633\u5E73
\u8272\u60C5\u670D\u52A1
2015
\u5BF9\u65E5\u5F3A\u786C
\u51FA\u552E\u67AA\u652F
\u6447\u5934\u4E38
\u897F\u85CF\u5929\u846C
\u9B3C\u6751
\u519B\u957F\u53D1\u5A01
PK\u9ED1\u793E\u4F1A
\u6076\u641E\u665A\u4F1A
\u67AA\u51B3\u5973\u72AF
\u6295\u6BD2\u6740\u4EBA
\u5F3A\u786C\u53D1\u8A00
\u51FA\u552E\u5047\u5E01
\u76D1\u542C\u738B
\u660F\u836F
\u4FA6\u63A2\u8BBE\u5907
\u9EBB\u9189\u94A2\u67AA
\u53CD\u534E
\u5B98\u5546\u52FE\u7ED3
\u5347\u8FBE\u6BD5\u4E1A\u8BC1
\u624B\u673A\u590D\u5236
\u6234\u6D77\u9759
\u81EA\u6740\u6307\u5357
\u81EA\u6740\u624B\u518C
\u5F20\u5C0F\u5E73
\u4F73\u9759\u5B89\u5B9A\u7247
\u8499\u6C57\u836F\u7C89
\u53E4\u65B9\u8FF7\u9999
\u5F3A\u6548\u5931\u610F\u836F
\u8FF7\u5978\u836F
\u900F\u89C6\u773C\u955C
\u8FDC\u7A0B\u5077\u62CD
\u81EA\u5236\u624B\u67AA
\u5B50\u5973\u4EFB\u804C\u540D\u5355
\u6FC0\u60C5\u5C0F\u7535\u5F71
\u9EC4\u8272\u5C0F\u7535\u5F71
\u8272\u60C5\u5C0F\u7535\u5F71
\u5929\u9E45\u4E4B\u65C5
\u76D8\u53E4\u4E50\u961F
\u9AD8\u6821\u66B4\u4E71
\u9AD8\u6821\u7FA4\u4F53\u4E8B\u4EF6
\u5927\u5B66\u9A9A\u4E71
\u9AD8\u6821\u9A9A\u4E71
\u50AC\u60C5\u836F
\u62CD\u80A9\u795E\u836F
\u6625\u836F
\u7A83\u542C\u5668\u6750
\u8EAB\u4EFD\u8BC1\u751F\u6210\u5668
\u67AA\u51B3\u73B0\u573A
\u51FA\u552E\u624B\u67AA
\u9EBB\u9189\u67AA
\u529E\u7406\u8BC1\u4EF6
\u529E\u7406\u6587\u51ED
\u7586\u72EC\u85CF\u72EC
\u9AD8\u5E72\u5B50\u5F1F
\u9AD8\u5E72\u5B50\u5973
\u67AA\u652F\u5F39\u836F
\u8840\u8165\u56FE\u7247
\u53CD\u653F\u5E9C
\u7981\u4E66
\u7279\u7801
\u6210\u4EBA\u7247
\u6210\u4EBA\u7535\u5F71
\u6362\u59BB
\u53D1\u7968
\u589E\u503C\u7A0E
\u8FF7\u5E7B\u836F
\u9690\u5F62
\u8033\u673A

 

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值