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读取memcache示例分享
Jan 02 NodeJs
使用nodejs、Python写的一个简易HTTP静态文件服务器
Jul 18 NodeJs
NodeJS学习笔记之网络编程
Aug 03 NodeJs
Nodejs实现的一个静态服务器实例
Dec 06 NodeJs
Windows 系统下设置Nodejs NPM全局路径
Apr 26 NodeJs
Nodejs下用submit提交表单提示cannot post错误的解决方法
Nov 21 NodeJs
详谈Angular路由与Nodejs路由的区别
Mar 05 NodeJs
nodejs和C语言插入mysql数据库乱码问题的解决方法
Apr 14 NodeJs
理解nodejs的stream和pipe机制的原理和实现
Aug 12 NodeJs
nodejs更改项目端口号的方法
May 13 NodeJs
Nodejs中怎么实现函数的串行执行
Mar 02 NodeJs
Sublime Text3 配置 NodeJs 环境的方法
May 20 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
Terran历史背景
2020/03/14 星际争霸
用PHP实现登陆验证码(类似条行码状)
2006/10/09 PHP
PHP mcrypt可逆加密算法分析
2011/07/19 PHP
PHP实现的自定义数组排序函数与排序类示例
2016/11/18 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
js 屏蔽鼠标右键脚本附破解方法
2009/12/03 Javascript
js常用代码段收集
2011/10/28 Javascript
javascript scrollTop正解使用方法
2013/11/14 Javascript
常用的JavaScript验证正则表达式汇总
2013/11/26 Javascript
JavaScript监听和禁用浏览器回车事件实例
2015/01/31 Javascript
jQuery 3.0 的变化及使用方法
2016/02/01 Javascript
Vue.js展示AJAX数据简单示例讲解
2017/03/29 Javascript
JavaScript手风琴页面制作
2017/05/17 Javascript
利用node.js实现自动生成前端项目组件的方法详解
2017/07/12 Javascript
详解利用jsx写vue组件的方法示例
2017/07/17 Javascript
JS库之Three.js 简易入门教程(详解之一)
2017/09/13 Javascript
javascript trie前缀树的示例
2018/01/29 Javascript
promise和co搭配生成器函数方式解决js代码异步流程的比较
2018/05/25 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
基于vue实现移动端圆形旋钮插件效果
2018/11/28 Javascript
jQuery实现穿梭框效果
2021/01/19 jQuery
浅谈Python中的数据类型
2015/05/05 Python
Python实现多进程共享数据的方法分析
2017/12/04 Python
Python无头爬虫下载文件的实现
2020/04/02 Python
python由已知数组快速生成新数组的方法
2020/04/08 Python
PyTorch在Windows环境搭建的方法步骤
2020/05/12 Python
keras分类之二分类实例(Cat and dog)
2020/07/09 Python
Python 在函数上添加包装器
2020/07/28 Python
解决pycharm不能自动保存在远程linux中的问题
2021/02/06 Python
企业宣传标语
2014/06/09 职场文书
校园文明标语
2014/06/13 职场文书
购房委托书
2014/10/15 职场文书
大学生助学金感谢信
2015/01/21 职场文书
单位工资证明范本
2015/06/12 职场文书
干货:如何写好工作总结报告!
2019/05/10 职场文书
JavaScript实现简单的音乐播放器
2022/08/14 Javascript