zoukankan      html  css  js  c++  java
  • 爬虫之暴力字典生成器


    class AutoStr {
    constructor(str){
    var the=this
    the.data=[]
    the.lendata=[]
    the.str=str
    str.replace(/[(.-.*?)]/g,function(m,item){
    var itemarr=[]
    var itemlen=0
    item.replace(/(.)-(.)/g,function(m,p1,p2){
    itemarr.push(p1.charCodeAt(0))
    itemarr.push(p2.charCodeAt(0))
    itemlen=itemlen+p2.charCodeAt(0)-p1.charCodeAt(0)+1
    })
    the.data.push(itemarr)
    the.lendata.push(itemlen)
    })
    //记录长度
    var len=1
    for(var i=0;i<the.lendata.length;i++){
    len=len*the.lendata[i]
    }
    the.length=len
    }
    eq(n){
    var back=this._sync(n,this.lendata,this.length)
    var strArr=this.getStrArr(back)
    var num=-1
    var str=this.str.replace(/[.-.*?]/g,function(){
    num=num+1
    return String.fromCharCode(strArr[num])
    })
    return str
    }
    //多进制转换 demo:把16转成110
    _sync(n,arr,len){
    var back=[]
    for(var i=0;i<arr.length;i++){
    len=len/arr[i]
    back.push(parseInt(n/len))
    n=n%len
    }
    return back
    }
    //获取返回的字符
    getStrArr(back){
    var arr=[]
    for(var i=0;i<this.data.length;i++){
    arr.push(this.getM(this.data[i],back[i]))
    }
    return arr
    }
    //获取区间范围
    getM(arr,n){
    for(var i=0;i<arr.length;i=i+2){
    var len=arr[i+1]-arr[i]+1
    if(n>=len){
    n=n-len
    }else{
    return arr[i]+n
    }
    }
    }
    }
    var d=new AutoStr("http://www.baidu.com/[1-2A-Z][0-2].html")
    console.log(d.length)
    for(var i=0;i< d.length;i++){
    console.log(d.eq(i))
    }

      可以生成中文、英文、数字字典,暴力破解密码,暴力爬虫

  • 相关阅读:
    ISO 学习笔记 2015-03-15
    IOS 学习笔记 20150314
    IOS 学习日志 2015-3-13
    Letter Combinations of a Phone Number
    anagrams
    Pow(x, n)
    Distinct Subsequences
    Excel Sheet Column Number
    MIT 三课程
    c++ 重载,覆盖,重定义
  • 原文地址:https://www.cnblogs.com/caoke/p/5438957.html
Copyright © 2011-2022 走看看