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通过phantomjs实现下载网页
May 04 NodeJs
使用NodeJs 开发微信公众号(三)微信事件交互实例
Mar 02 NodeJs
Jquery通过ajax请求NodeJS返回json数据实例
Nov 08 NodeJs
nodejs实现发出蜂鸣声音(系统报警声)的方法
Jan 18 NodeJs
nodejs+express实现文件上传下载管理网站
Mar 15 NodeJs
nodeJS实现路由功能实例代码
Jun 08 NodeJs
nodejs中解决异步嵌套循环和循环嵌套异步的问题
Jul 12 NodeJs
nodejs实现的简单web服务器功能示例
Mar 15 NodeJs
基于nodejs的雪碧图制作工具的示例代码
Nov 05 NodeJs
NodeJS实现一个聊天室功能
Nov 25 NodeJs
Nodejs 微信小程序消息推送的实现
Jan 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
如何使用“PHP” 彩蛋进行敏感信息获取
2013/08/07 PHP
php使用mysqli向数据库添加数据的方法
2015/03/20 PHP
ThinkPHP实现递归无级分类――代码少
2015/07/29 PHP
PHP中的Iterator迭代对象属性详解
2019/04/12 PHP
一些实用的jQuery代码片段收集
2011/07/12 Javascript
javascript动画对象支持加速、减速、缓入、缓出的实现代码
2012/09/30 Javascript
js关闭模态窗口刷新父页面或跳转页面
2012/12/13 Javascript
javascript 常见功能汇总
2015/06/11 Javascript
原生JS改变透明度实现轮播效果
2017/03/24 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
javascript计算渐变颜色的实例
2017/09/22 Javascript
基于vue实现分页效果
2017/11/06 Javascript
详解如何使用 vue-cli 开发多页应用
2017/12/16 Javascript
详解TypeScript+Vue 插件 vue-class-component的使用总结
2019/02/18 Javascript
vue实现学生信息管理系统
2020/05/30 Javascript
浅谈element中InfiniteScroll按需引入的一点注意事项
2020/06/05 Javascript
python中redis的安装和使用
2016/12/04 Python
Python 实现随机数详解及实例代码
2017/04/15 Python
Python学习教程之常用的内置函数大全
2017/07/14 Python
python定时利用QQ邮件发送天气预报的实例
2017/11/17 Python
Python分析学校四六级过关情况
2017/11/22 Python
django框架防止XSS注入的方法分析
2019/06/21 Python
python Gunicorn服务器使用方法详解
2019/07/22 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
python 解决mysql where in 对列表(list,,array)问题
2020/06/06 Python
python爬虫如何解决图片验证码
2021/02/14 Python
10分钟理解CSS3 Grid布局
2018/12/20 HTML / CSS
英国在线自行车商店:Evans Cycles
2016/09/26 全球购物
Agoda西班牙:全球特价酒店预订
2017/06/03 全球购物
美国亚马逊旗下男装网站:East Dane(支持中文)
2019/09/25 全球购物
硕士研究生自我鉴定范文
2013/12/27 职场文书
出租房屋协议书
2014/09/14 职场文书
检讨书范文300字
2015/01/28 职场文书
党员反四风学习心得体会
2016/01/22 职场文书
乡镇团代会开幕词
2016/03/04 职场文书
Python爬取英雄联盟MSI直播间弹幕并生成词云图
2021/06/01 Python