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的10个性能优化技巧
Jul 15 NodeJs
轻松创建nodejs服务器(7):阻塞操作的实现
Dec 18 NodeJs
nodejs实现HTTPS发起POST请求
Apr 23 NodeJs
基于html5和nodejs相结合实现websocket即使通讯
Nov 19 NodeJs
Nodejs中session的简单使用及通过session实现身份验证的方法
Feb 04 NodeJs
3分钟快速搭建nodejs本地服务器方法运行测试html/js
Apr 01 NodeJs
详解Nodejs之静态资源处理
Jun 05 NodeJs
NodeJS实现视频转码的示例代码
Nov 18 NodeJs
详解NodeJs开发微信公众号
May 25 NodeJs
NodeJS 中Stream 的基本使用
Jul 30 NodeJs
Nodejs使用Mongodb存储与提供后端CRD服务详解
Sep 04 NodeJs
PHPStorm中如何对nodejs项目进行单元测试详解
Feb 28 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.ini中文版(2)
2006/10/09 PHP
如何过滤高亮显示非法字符
2006/10/09 PHP
PHP遍历数组的几种方法
2012/03/22 PHP
php ajax异步读取rss文档数据
2016/03/29 PHP
Yii2使用表单上传文件的实例代码
2017/08/03 PHP
详解PHP多个进程配合redis的有序集合实现大文件去重
2019/03/06 PHP
firefox 和 ie 事件处理的细节,研究,再研究 书写同时兼容ie和ff的事件处理代码
2007/04/12 Javascript
Code: write(s,d) 输出连续字符串
2007/08/19 Javascript
JQuery中对服务器控件 DropdownList, RadioButtonList, CheckboxList的操作总结
2011/06/28 Javascript
AspNet中使用JQuery上传插件Uploadify详解
2015/05/20 Javascript
浅谈利用JavaScript进行的DDoS攻击原理与防御
2015/06/04 Javascript
jquery获取css的color值返回RGB的方法
2015/12/18 Javascript
动态设置form表单的action属性的值的简单方法
2016/05/25 Javascript
好好了解一下Cookie(强烈推荐)
2016/06/14 Javascript
BootStrap tooltip提示框使用小结
2016/10/26 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
JavaScript中使用参数个数实现重载功能
2017/09/01 Javascript
webpack vue 项目打包生成的文件,资源文件报404问题的修复方法(总结篇)
2018/01/09 Javascript
详解基于vue的服务端渲染框架NUXT
2018/06/20 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
微信小程序实现文字跑马灯
2020/05/26 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
2019/04/26 Javascript
js定义类的方法示例【ES5与ES6】
2019/07/30 Javascript
vue实现几秒后跳转新页面代码
2020/09/09 Javascript
[01:06:54]DOTA2-DPC中国联赛 正赛 SAG vs DLG BO3 第二场 2月28日
2021/03/11 DOTA
Python代码生成视频的缩略图的实例讲解
2019/12/22 Python
python自动下载图片的方法示例
2020/03/25 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
python解包概念及实例
2021/02/17 Python
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
英国著名书店:Foyles
2018/12/01 全球购物
一个大学生十年的职业规划
2014/01/17 职场文书
工地安全检查制度
2014/02/04 职场文书
《小白兔和小灰兔》教学反思
2014/02/18 职场文书
春节慰问信范文
2015/02/15 职场文书
培训简讯范文
2015/07/20 职场文书