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 相关文章推荐
使用upstart把nodejs应用封装为系统服务实例
Jun 01 NodeJs
基于NodeJS的前后端分离的思考与实践(六)Nginx + Node.js + Java 的软件栈部署实践
Sep 26 NodeJs
轻松创建nodejs服务器(4):路由
Dec 18 NodeJs
Nodejs的express使用教程
Nov 23 NodeJs
NodeJS中的MongoDB快速入门详细教程
Nov 11 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
nodeJS实现简单网页爬虫功能的实例(分享)
Jun 08 NodeJs
NodeJS简单实现WebSocket功能示例
Feb 10 NodeJs
nodejs中express入门和基础知识点学习
Sep 13 NodeJs
用Electron写个带界面的nodejs爬虫的实现方法
Jan 29 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 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微信订阅号开发之token验证后自动发送消息给订阅号但是没有消息返回的问题
2015/12/21 PHP
php高清晰度无损图片压缩功能的实现代码
2018/12/09 PHP
asp批量修改记录的代码
2008/06/25 Javascript
Js操作Select大全(取值、设置选中等等)
2013/10/29 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
jQuery中阻止冒泡事件的方法介绍
2014/04/12 Javascript
jQuery实现表格颜色交替显示的方法
2015/03/09 Javascript
angularjs学习笔记之三大模块(modal,controller,view)
2015/09/26 Javascript
在React框架中实现一些AngularJS中ng指令的例子
2016/03/06 Javascript
BootStrap中Datetimepicker和uploadify插件应用实例小结
2016/05/26 Javascript
深入理解JS继承和原型链的问题
2016/12/17 Javascript
vue动态组件实现选项卡切换效果
2017/03/08 Javascript
js随机生成一个验证码
2017/06/01 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
JQuery 选择器、DOM节点操作练习实例
2017/09/28 jQuery
记一次vue-webpack项目优化实践详解
2019/02/17 Javascript
vue-cli4项目开启eslint保存时自动格式问题
2020/07/13 Javascript
angular8.5集成TinyMce5的使用和详细配置(推荐)
2020/11/16 Javascript
基于JavaScript实现简单的轮播图
2021/03/03 Javascript
Python修改Excel数据的实例代码
2013/11/01 Python
Python os模块介绍
2014/11/30 Python
Python实现的数据结构与算法之链表详解
2015/04/22 Python
Python获取任意xml节点值的方法
2015/05/05 Python
python修改list中所有元素类型的三种方法
2018/04/09 Python
Python批处理删除和重命名文件夹的实例
2018/07/11 Python
Python OpenCV之图片缩放的实现(cv2.resize)
2019/06/28 Python
对pytorch中的梯度更新方法详解
2019/08/20 Python
Tensorflow中的降维函数tf.reduce_*使用总结
2020/04/20 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
大学新生军训个人的自我评价
2013/10/03 职场文书
广告学专业推荐信范文
2013/11/23 职场文书
工程招投标邀请书
2014/01/30 职场文书
2014最新房贷收入证明范本
2014/09/12 职场文书
2015年推普周活动总结
2015/03/27 职场文书
在pycharm中无法import所安装的库解决方案
2021/05/31 Python
sql时间段切分实现每隔x分钟出一份高速门架车流量
2022/02/28 SQL Server