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)
}
}
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持毛票票。