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 相关文章推荐
使用forever管理nodejs应用教程
Jun 03 NodeJs
nodejs教程之制作一个简单的文章发布系统
Nov 21 NodeJs
async/await与promise(nodejs中的异步操作问题)
Mar 03 NodeJs
nodejs入门教程二:创建一个简单应用示例
Apr 24 NodeJs
详解nodejs模板引擎制作
Jun 14 NodeJs
nodejs+mongodb+vue前后台配置ueditor的示例代码
Jan 02 NodeJs
webpack打包nodejs项目的方法
Sep 26 NodeJs
NodeJS实现同步的方法
Mar 02 NodeJs
nodejs对项目下所有空文件夹创建gitkeep的方法
Aug 02 NodeJs
Nodejs实现图片上传、压缩预览、定时删除功能
Oct 25 NodeJs
使用nodejs实现JSON文件自动转Excel的工具(推荐)
Jun 24 NodeJs
浅谈JS和Nodejs中的事件驱动
May 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递归使用示例(php递归函数)
2014/02/14 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
分享一个漂亮的php验证码类
2016/09/29 PHP
php-fpm添加service服务的例子
2018/04/27 PHP
php微信开发之关注事件
2018/06/14 PHP
基于swoole实现多人聊天室
2018/06/14 PHP
Yii2框架视图(View)操作及Layout的使用方法分析
2019/05/27 PHP
jQuery select的操作实现代码
2009/05/06 Javascript
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
浅析ajax请求json数据并用js解析(示例分析)
2013/07/13 Javascript
《JavaScript DOM 编程艺术》读书笔记之JavaScript 简史
2015/01/09 Javascript
用js判断是否为360浏览器的实现代码
2015/01/15 Javascript
纯JS实现旋转图片3D展示效果
2015/04/12 Javascript
JavaScript实现图片DIV竖向滑动的方法
2015/04/25 Javascript
jQuery基于ajax实现页面加载后检查用户登录状态的方法
2017/02/10 Javascript
jQuery阻止移动端遮罩层后页面滚动
2017/03/15 Javascript
微信小程序图片选择、上传到服务器、预览(PHP)实现实例
2017/05/11 Javascript
JavaScript监听手机物理返回键的两种解决方法
2017/08/14 Javascript
详解webpack之scss和postcss-loader的配置
2018/01/09 Javascript
关于RxJS Subject的学习笔记
2018/12/05 Javascript
使用 Vue cli 3.0 构建自定义组件库的方法
2019/04/30 Javascript
微信小程序webview与h5通过postMessage实现实时通讯的实现
2019/08/20 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
JavaScript碰撞检测原理及其实现代码
2020/03/12 Javascript
Node Mongoose用法详解【Mongoose使用、Schema、对象、model文档等】
2020/05/13 Javascript
Python使用pygame模块编写俄罗斯方块游戏的代码实例
2015/12/08 Python
使用python生成目录树
2018/03/29 Python
python requests post多层字典的方法
2018/12/27 Python
python读写配置文件操作示例
2019/07/03 Python
django ModelForm修改显示缩略图 imagefield类型的实例
2019/07/28 Python
python3+opencv生成不规则黑白mask实例
2020/02/19 Python
浅谈HTML5 & CSS3的新交互特性
2016/07/19 HTML / CSS
个人工作主要事迹
2014/05/08 职场文书
优秀工会工作者事迹材料
2014/06/02 职场文书
社区党建工作总结2015
2015/05/13 职场文书