nodejs语言实现验证码生成功能的示例代码
验证码已经是非常常用的反作弊、反攻击手段了,其实要实现这个功能对技术水平好的人也不难,但是并不是每个人,每种语言都天然适合搞某个功能...不过我们可以通过封装接口,来屏蔽差异化,把问题简单化,现在就用一个简单的nodejs脚本来实现验证生成功能,例子如下:
varhttp=require('http'); varqs=require('querystring'); //配置您申请的appKey和openId app_key="***"; open_id="***"; functionrequest_content(request_url,port,params,method){ varpath=request_url; if(!!params){ varcontent=qs.stringify(params); path=request_url+'?'+content; } varoptions={ port:port, path:path, method:method }; if(method.toLowerCase()=='post'){ options['headers']="Content-Type':'application/x-www-form-urlencoded;charset=UTF-8"; } varreq=http.request(options,function(res){ res.setEncoding('utf8'); res.on('data',function(chunk){ console.log(chunk); }); }); req.on('error',function(e){ console.log('problemwithrequest:'+e.message); }); req.end(); } functionmain(){ vardomain="http://api.xiaocongjisuan.com/"; varport=8080;//http对应80端口,https对应443端口,请使用者自己改正 varservlet="develop/verificationcode/get"; varmethod="get"; varrequest_url=domain+servlet; varparams={}; params['appKey']=app_key; params['openId']=open_id; //变动部分 params["w"]=200; params["h"]=50; params["len"]=7; params["fontSize"]=40; request_content(request_url,port,params,method); } main();
其他语言的实现方式比如php,java,python等可以 点这里查看,这里暂且附上比较小众的GO语言的实现方式:
packagemain import( "io/ioutil" "net/http" "net/url" "fmt" "strings" ) //配置您申请的appKey和openId constAPP_KEY="yours"; constOPEN_ID="yours"; funcrequestContent(requestUrlstring,paramsurl.Values,methodstring)(rs[]byte,errerror){ ifstrings.ToUpper(method)=="GET"{ returnget(requestUrl,params) } returnpost(requestUrl,params) } //get网络请求 funcget(requestUrlstring,paramsurl.Values)(rs[]byte,errerror){ varUrl*url.URL Url,err=url.Parse(requestUrl) iferr!=nil{ fmt.Printf("解析url错误:\r\n%v",err) returnnil,err } //如果参数中有中文参数,这个方法会进行URLEncode Url.RawQuery=params.Encode() resp,err:=http.Get(Url.String()) iferr!=nil{ fmt.Println("err:",err) returnnil,err } deferresp.Body.Close() returnioutil.ReadAll(resp.Body) } //post网络请求,params是url.Values类型 funcpost(requestUrlstring,paramsurl.Values)(rs[]byte,errerror){ resp,err:=http.PostForm(requestUrl,params) iferr!=nil{ returnnil,err } deferresp.Body.Close() returnioutil.ReadAll(resp.Body) } funcmain(){ domain:="http://api.xiaocongjisuan.com/" servlet:="develop/verificationcode/get" method:="get" requestUrl:=domain+servlet //初始化参数 params:=url.Values{} params.Set("appKey",APP_KEY) params.Set("openId",OPEN_ID) //变动部分 params.Set("w","200") params.Set("h","50") params.Set("len","7") params.Set("fontSize","40") //发送请求 data,err:=requestContent(requestUrl,params,method) fmt.Println(string(data)) iferr!=nil{ fmt.Printf("解析url错误:\r\n%v",err) } }
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。