nodejs语言实现验证码生成功能的示例代码


Posted in NodeJs onOctober 13, 2019

验证码已经是非常常用的反作弊、反攻击手段了,其实要实现这个功能对技术水平好的人也不难,但是并不是每个人,每种语言都天然适合搞某个功能...不过我们可以通过封装接口,来屏蔽差异化,把问题简单化,现在就用一个简单的nodejs脚本来实现验证生成功能,例子如下:

var http = require('http'); 
var qs = require('querystring'); 

//配置您申请的appKey和openId
app_key = "***";
open_id = "***";
 
function request_content(request_url,port,params,method){
  
  var path=request_url;
  if(!!params){
    var content = qs.stringify(params); 
    path=request_url+'?' + content;
  }
  
  var options = { 
    port: port,
    path: path,
    method: method
  }; 
  
  if(method.toLowerCase()=='post'){
    options['headers']="Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8";
  }

  var req = http.request(options, function (res) { 
    res.setEncoding('utf8'); 
    res.on('data', function (chunk) { 
      console.log(chunk); 
    }); 
  }); 
  
  req.on('error', function (e) { 
    console.log('problem with request: ' + e.message); 
  }); 
  
  req.end();
}

function main(){

  var domain="http://api.xiaocongjisuan.com/";
  var port=8080;//http对应80端口,https 对应443端口,请使用者自己改正
  var servlet="develop/verificationcode/get";
  var method="get";
  var request_url=domain+servlet;

  var params = {}; 
  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语言的实现方式:

package main

import (
  "io/ioutil"
  "net/http"
  "net/url"
  "fmt"
  "strings"
)
 
//配置您申请的appKey和openId
const APP_KEY ="yours";
const OPEN_ID ="yours";

func requestContent(requestUrl string,params url.Values,method string)(rs[]byte ,err error){
  
  if strings.ToUpper(method)=="GET"{
    return get(requestUrl,params)
  }
  return post(requestUrl,params)
}

// get 网络请求
func get(requestUrl string,params url.Values)(rs[]byte ,err error){
  var Url *url.URL
  Url,err=url.Parse(requestUrl)
  if err!=nil{
    fmt.Printf("解析url错误:\r\n%v",err)
    return nil,err
  }
  //如果参数中有中文参数,这个方法会进行URLEncode
  Url.RawQuery=params.Encode()
  resp,err:=http.Get(Url.String())
  if err!=nil{
    fmt.Println("err:",err)
    return nil,err
  }
  defer resp.Body.Close()
  return ioutil.ReadAll(resp.Body)
}
 
// post 网络请求 ,params 是url.Values类型
func post(requestUrl string, params url.Values)(rs[]byte,err error){
  resp,err:=http.PostForm(requestUrl, params)
  if err!=nil{
    return nil ,err
  }
  defer resp.Body.Close()
  return ioutil.ReadAll(resp.Body)
}

func main(){

  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))
  if err!=nil{
    fmt.Printf("解析url错误:\r\n%v",err)
  }
}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

NodeJs 相关文章推荐
Nodejs爬虫进阶教程之异步并发控制
Feb 15 NodeJs
NodeJS与HTML5相结合实现拖拽多个文件上传到服务器的实现方法
Jul 26 NodeJs
Nodejs实现短信验证码功能
Feb 09 NodeJs
NodeJS 实现手机短信验证模块阿里大于功能
Jun 19 NodeJs
nodejs 子进程正确的打开方式
Jul 03 NodeJs
nodejs前端自动化构建环境的搭建
Jul 26 NodeJs
Mac下通过brew安装指定版本的nodejs教程
May 17 NodeJs
nodejs(officegen)+vue(axios)在客户端导出word文档的方法
Jul 31 NodeJs
nodejs 使用http进行post或get请求的实例(携带cookie)
Jan 03 NodeJs
nodejs实现UDP组播示例方法
Nov 04 NodeJs
Nodejs技巧之Exceljs表格操作用法示例
Nov 06 NodeJs
nodejs处理tcp连接的核心流程
Feb 26 NodeJs
NodeJS有难度的面试题(能答对几个)
Oct 09 #NodeJs
Nodejs监控事件循环异常示例详解
Sep 22 #NodeJs
详解利用nodejs对本地json文件进行增删改查
Sep 20 #NodeJs
nodejs实现聊天机器人功能
Sep 19 #NodeJs
图解NodeJS实现登录注册功能
Sep 16 #NodeJs
详解NodeJs项目 CentOs linux服务器线上部署
Sep 16 #NodeJs
nodejs一个简单的文件服务器的创建方法
Sep 13 #NodeJs
You might like
php中unlink()、mkdir()、rmdir()等方法的使用介绍
2012/12/21 PHP
PHP计算2点经纬度之间的距离代码
2013/08/12 PHP
一个严格的PHP Session会话超时时间设置方法
2014/06/10 PHP
PHP+MySQL修改记录的方法
2015/01/21 PHP
Laravel框架实现的rbac权限管理操作示例
2019/01/16 PHP
PHP获取访问设备信息的方法示例
2019/02/20 PHP
解决laravel5.4下的group by报错的问题
2019/10/16 PHP
PHP的HTTP客户端Guzzle简单使用方法分析
2019/10/30 PHP
jquery radio 操作代码
2011/03/16 Javascript
给页面渲染时间加速 干掉Dom Level 0 Event
2012/12/19 Javascript
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
在js文件中如何获取basePath处理js路径问题
2013/07/10 Javascript
textarea焦点的用法实现获取焦点清空失去焦点提示效果
2014/05/19 Javascript
js动态往表格的td中添加图片并注册事件
2014/06/12 Javascript
js获取ip和地区
2017/03/10 Javascript
webpack 静态资源集中输出的方法示例
2018/11/09 Javascript
vue.js实现的幻灯片功能示例
2019/01/18 Javascript
使用Angular自定义字段校验指令的方法示例
2019/02/01 Javascript
使用RxJS更优雅地进行定时请求详析
2019/06/02 Javascript
vue.js实现只能输入数字的输入框
2019/10/19 Javascript
微信小程序批量上传图片到七牛(推荐)
2019/12/19 Javascript
在vue中使用echarts(折线图的demo,markline用法)
2020/07/20 Javascript
python正则表达式的使用
2017/06/12 Python
python+mysql实现教务管理系统
2019/02/20 Python
python 计算数据偏差和峰度的方法
2019/06/29 Python
Python实现12306火车票抢票系统
2019/07/04 Python
python使用paramiko实现ssh的功能详解
2020/03/06 Python
PyCharm MySQL可视化Database配置过程图解
2020/06/09 Python
解决TensorFlow调用Keras库函数存在的问题
2020/07/06 Python
阿玛尼美国官方网站:Armani.com
2016/11/25 全球购物
全球知名的珠宝首饰品牌:Kay Jewelers
2018/02/11 全球购物
体育专业学生自我评价范文
2014/01/17 职场文书
《学会合作》教学反思
2014/04/12 职场文书
2014年电话销售工作总结
2014/12/01 职场文书
毕业证明书
2015/06/19 职场文书
2016党校学习心得体会
2016/01/07 职场文书