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异步回调的优雅处理方法
Sep 25 NodeJs
nodejs中实现路由功能
Dec 29 NodeJs
iPhone手机上搭建nodejs服务器步骤方法
Jul 06 NodeJs
NodeJS创建基础应用并应用模板引擎
Apr 12 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
Express+Nodejs 下的登录拦截实现代码
Jul 01 NodeJs
在Debian(Raspberry Pi)树莓派上安装NodeJS的教程详解
Sep 19 NodeJs
nodejs 日志模块winston的使用方法
May 02 NodeJs
Nodejs异步回调之异常处理实例分析
Jun 22 NodeJs
详解NodeJS Https HSM双向认证实现
Mar 12 NodeJs
nodejs通过钉钉群机器人推送消息的实现代码
May 05 NodeJs
用Nodejs实现在终端中炒股的实现
Oct 18 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学习之字符串比较和查找
2011/04/17 PHP
PHP学习笔记(一):基本语法之标记、空白、和注释
2015/04/17 PHP
wordpress安装过程中遇到中文乱码的处理方法
2015/04/21 PHP
thinkPHP5.0框架命名空间详解
2017/03/18 PHP
Yii2.0实现生成二维码功能实例
2017/10/24 PHP
自写的利用PDO对mysql数据库增删改查操作类
2018/02/19 PHP
不一样的文字闪烁 轮番闪烁
2009/11/11 Javascript
jquery滚动组件(vticker.js)实现页面动态数据的滚动效果
2013/07/03 Javascript
js获取页面传来参数的方法
2014/09/06 Javascript
jquery结婚电子请柬特效源码分享
2015/08/21 Javascript
jquery实现模拟百分比进度条渐变效果代码
2015/10/29 Javascript
SWFUpload多文件上传及文件个数限制的方法
2016/05/31 Javascript
layui table 表格上添加日期控件的两种方法
2019/09/28 Javascript
JS数组方法slice()用法实例分析
2020/01/18 Javascript
vue中配置scss全局变量的步骤
2020/12/28 Vue.js
element-ui封装一个Table模板组件的示例
2021/01/04 Javascript
python UNIX_TIMESTAMP时间处理方法分析
2016/04/18 Python
python数字图像处理之高级滤波代码详解
2017/11/23 Python
Python基于回溯法解决01背包问题实例
2017/12/06 Python
Python中的pygal安装和绘制直方图代码分享
2017/12/08 Python
djang常用查询SQL语句的使用代码
2019/02/15 Python
元组列表字典(莫烦python基础)
2019/04/03 Python
Python程序包的构建和发布过程示例详解
2019/06/09 Python
python中列表的切片与修改知识点总结
2019/07/23 Python
python列表返回重复数据的下标
2020/02/10 Python
深度学习入门之Pytorch 数据增强的实现
2020/02/26 Python
Python 将 QQ 好友头像生成祝福语的实现代码
2020/05/03 Python
python 将html转换为pdf的几种方法
2020/12/29 Python
CSS3悬停效果案例应用
2012/11/21 HTML / CSS
canvas粒子动画背景的实现示例
2018/09/03 HTML / CSS
html5教你做炫酷的碎片式图片切换 (canvas)
2017/07/28 HTML / CSS
Omio俄罗斯:一次搜索公共汽车、火车和飞机的机票
2018/11/17 全球购物
Ref与out有什么不同
2012/11/24 面试题
反对邪教标语
2014/06/30 职场文书
乔布斯辞职信(中英文对照)
2015/05/12 职场文书
Mysql 用户权限管理实现
2021/05/25 MySQL