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 Express4.x开发框架随手笔记
Nov 23 NodeJs
Express与NodeJs创建服务器的两种方法
Feb 06 NodeJs
Ajax异步文件上传与NodeJS express服务端处理
Apr 01 NodeJs
NodeJS链接MySql数据库的操作方法
Jun 27 NodeJs
详解nodejs实现本地上传图片并预览功能(express4.0+)
Jun 28 NodeJs
nodejs之get/post请求的几种方式小结
Jul 26 NodeJs
Nodejs 和Session 原理及实战技巧小结
Aug 25 NodeJs
nodejs 十六进制字符串型数据与btye型数据相互转换
Jul 30 NodeJs
nodejs基础之buffer缓冲区用法分析
Dec 26 NodeJs
NodeJs 实现简单WebSocket即时通讯的示例代码
Aug 05 NodeJs
nodejs中使用archive压缩文件的实现代码
Nov 26 NodeJs
nodejs环境使用Typeorm连接查询Oracle数据
Dec 05 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 闭包详解及实例代码
2016/09/28 PHP
PDO::query讲解
2019/01/29 PHP
javascript中的undefined 与 null 的区别  补充篇
2010/03/17 Javascript
javascript控制swfObject应用介绍
2012/11/29 Javascript
js阻止冒泡及jquery阻止事件冒泡示例介绍
2013/11/19 Javascript
jQuery响应enter键的实现思路
2014/04/18 Javascript
JavaScript编写一个简易购物车功能
2016/09/17 Javascript
前端编码规范(3)JavaScript 开发规范
2017/01/21 Javascript
Javascript for in的缺陷总结
2017/02/03 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
vue-router单页面路由
2017/06/17 Javascript
vue父组件点击触发子组件事件的实例讲解
2018/02/08 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
2019/01/29 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
2019/07/18 Javascript
JS操作字符串转数字的常见方法示例
2019/10/29 Javascript
javascript实现点击星星小游戏
2019/12/24 Javascript
vue-openlayers实现地图坐标弹框效果
2020/09/24 Javascript
[01:10]DOTA2次级职业联赛 - EP战队宣传片
2014/12/01 DOTA
在Django中创建第一个静态视图
2015/07/15 Python
linux平台使用Python制作BT种子并获取BT种子信息的方法
2017/01/20 Python
python如何重载模块实例解析
2018/01/25 Python
Python实现SQL注入检测插件实例代码
2019/02/02 Python
Django之腾讯云短信的实现
2020/06/12 Python
python 最简单的实现适配器设计模式的示例
2020/06/30 Python
Python使用tkinter实现摇骰子小游戏功能的代码
2020/07/02 Python
M1芯片安装python3.9.1的实现
2021/02/02 Python
SportsDirect.com新加坡:英国第一体育零售商
2019/03/30 全球购物
Perfume’s Club法国站:购买香水和化妆品
2019/05/02 全球购物
香港草莓网:Strawberrynet香港
2019/05/10 全球购物
项目副经理岗位职责
2013/12/30 职场文书
会计专业毕业自荐书范文
2014/02/08 职场文书
2015年五四青年节活动总结
2015/02/10 职场文书
财务总监岗位职责范本
2015/04/03 职场文书
2015年幼儿园大班工作总结
2015/04/25 职场文书
Python中非常使用的6种基本变量的操作与技巧
2022/03/22 Python
win10系统xps文件怎么打开?win10打开xps文件的两种操作方法
2022/07/23 数码科技