nodejs接入网易易盾

1. 前端部分(可以直接copy 网易易盾的官方文档) 修改一下 接口指向 nodejs

<!DOCTYPE html>
<html lang="zh-CN">
  <head>
    <meta charset="UTF-8" />
    <meta
      name="viewport"
      content="width=device-width, initial-scale=1.0, maximum-scale=1.0"
    />
    <meta http-equiv="X-UA-Compatible" content="ie=edge" />
    <title>验证码示例-智能无感知bind模式</title>
  </head>
  <body>
    <form action="/login" method="post">
      <input type="text" name="username" placeholder="用户名" />
      <input type="password" name="password" placeholder="密码" />
      <input type="hidden" name="captchaId" value="从易盾申请的captchaId" />
      <div id="captcha"></div>
      <!-- 验证码容器元素 -->
      <button type="submit" id="submit-btn">登录</button>
    </form>

    <script
      charset="UTF-8"
      type="text/javascript"
      src="http://cstaticdun.126.net/load.min.js"
    ></script>
    <script>
      var captchaIns
      initNECaptcha(
        {
          element: ‘#captcha‘,
          captchaId: ‘49fa346201934f81bf866dca2b7f42c8‘,
          mode: ‘bind‘, // 仅智能无感知验证码时,mode 才能设置为 bind
          width: ‘320px‘,
          //enableClose: true, // 由业务方控制验证码弹框关闭
          onVerify: function(err, ret) {
            // 用户验证码验证成功后,进行实际的提交行为
            // todo
            if (err) console.log(err)
            if (!err) {
              request(ret.validate)
              console.log(ret.validate)
            }
          }
        },
        function(instance) {
          // 初始化成功后得到验证实例instance,可以调用实例的方法
          captchaIns = instance
        },
        function(err) {
          // 初始化失败后触发该函数,err对象描述当前错误信息
        }
      )
      // 监听需要绑定的 button 的点击事件,手动调用实例的verify方法来验证
      document
        .getElementById(‘submit-btn‘)
        .addEventListener(‘click‘, function(e) {
          e.preventDefault()
          captchaIns && captchaIns.verify()
        })
      const request = NECaptchaValidate => {
        var xhr = new XMLHttpRequest()
        xhr.onreadystatechange = function() {
          console.log(this)
          if (this.readyState == 4) {
            if (this.status >= 200 && this.status < 300) {
              console.log(‘xhr.responseText‘, xhr.responseText)
            }
          }
        }
        xhr.open(‘post‘, ‘http://192.168.1.227:20001/test163‘)
        xhr.setRequestHeader(
          ‘Content-Type‘,
          ‘application/x-www-form-urlencoded‘
        )
        xhr.send(JSON.stringify({ NECaptchaValidate }))
      }
    </script>
  </body>
</html>

2. 后端代码

const Koa = require("koa");
const cors = require("koa2-cors");
const request = require("request");
const queryString = require("querystring");
const uuid = require("uuid");
const md5 = require("md5");
const app = new Koa();
// 写入自己申请的key id
const secretKey = "XXXXXXXXXXXXXXXXXXXXX";
const captchaId = "XXXXXXXXXXXXXXXXXXXXX";
const secretId = "XXXXXXXXXXXXXXXXXXXXX";
const genSignature = (secretKey, paramsJson) => {
  const sorter = paramsJson => {
    const sortedJson = {};
    const sortedKeys = Object.keys(paramsJson).sort();
    for (let i = 0; i < sortedKeys.length; i++) {
      sortedJson[sortedKeys[i]] = paramsJson[sortedKeys[i]];
    }
    return sortedJson;
  };
  const sortedParam = sorter(paramsJson);
  let needSignatureStr = "";
  for (let key in sortedParam) {
    var value = sortedParam[key];
    needSignatureStr = needSignatureStr + key + value;
  }
  needSignatureStr += secretKey;
  return md5(needSignatureStr);
};
app.use(cors());
app.use(async ctx => {
  if (ctx.request.path === "/test163") {
    let str = "";
    const s = new Promise((resolve, reject) => {
      ctx.req.on("data", data => {
        str += data;
      });
      ctx.req.on("end", () => {
        resolve(str);
      });
    });
    const data = JSON.parse(await s);
    const requestData = {
      captchaId,
      nonce: uuid().substr(4), // 32位
      secretId,
      timestamp: new Date().getTime(),
      version: "v2",
      user: "",
      validate: data.NECaptchaValidate
    };
    const signature = genSignature(secretKey, requestData);
    Object.assign(requestData, {
      signature
    });
    const responseData = new Promise((resolve, reject) => {
      request(
        {
          headers: {
            "Content-Type": "application/x-www-form-urlencoded"
          },
          url: "http://c.dun.163yun.com/api/v2/verify",
          body: queryString.stringify(requestData),
          method: "POST"
        },
        (error, response, data) => {
          try {
            console.log(‘verify result: \n‘, data)
            resolve(data);
          } catch (e) {
            console.log("logout err", e);
          }
        }
      );
    });
    ctx.body = await responseData;
  } else {
    ctx.response.body = {
      code: 666
    };
  }
});

app.listen(20001, () => {
  console.log("listen on: http://127.0.0.1:20001");
});

原文地址:https://www.cnblogs.com/qq4535292/p/11460896.html

时间: 2024-10-07 19:43:49

nodejs接入网易易盾的相关文章

网易易盾首席安全架构师沈明星分享DDoS防护如何建设

导语:数字化转型发展也推动了云计算.人工智能.大数据.物联网等新一代信息技术应用普及,与此同时,新时代的发展也带来了新的网络威胁和新的安全需求.我们不难发现,近年网络***时间层出不穷,全球范围来看,企业因遭受网络***承担的损失高达百亿美元.不仅仅是财产的损失,用户数据遭到泄露更是有可能危及生命.在这样的大环境之下,建立安全的网络环境的需要多方共同参与,企业,安全厂商,运营商,并对用户进行系统的安全意识教育. 上周,由上海希为(ECV International)主办的2019亚洲网络安全创新

数据中心联盟公布内容识别服务评审初步结果,网易易盾通过首轮评估

近日,数据中心联盟公布内容识别服务系统评估测试结果,包括网易易盾在内的七家厂商通过首轮评估. 数据中心联盟表示,以人工智能为代表的信息技术正与实体经济不断融合,人们在享受信息技术带来便捷的同时,也遭受着来自互联网上有害信息的骚扰.内容识别服务作为拦截过滤有害信息全新机制,受到了各国政府.研究机构和安全厂商的高度关注. 为引导信息安全产业健康发展,增强用户对内容识别服务的信心,营造良好的市场环境,数据中心联盟网络治理能力工作组组织开展了内容识别服务系统评估测试工作. 本次评测主要依据<网络治理能力

2019年首批!网易易盾加固系统通过中国反网络病毒联盟认证

上周,网易易盾安卓加固系统通过中国反网络病毒联盟的<移动互联网应用程序安全加固系统认证>,并于今天正式通过公示期.中国反网络病毒联盟官方微信公众号上的公示通知 中国反网络病毒联盟(Anti Network-Virus Alliance of China),英文简称为ANVA,是根据工业和信息化部的统一部署,依托CNCERT/CC,联合基础互联网运营企业.网络安全厂商.增值服务提供商.搜索引擎.域名注册机构等单位于2009年7月7日共同发起成立. 对于为什么组织加固系统的安全验证,中国反网络病毒

网易易盾行为式验证码家族添新成员:图标点选验证码上线 尤适出海企业

近日,网易易盾行为式验证码家族迎来一位新的成员--图标点选验证码,在提供高安全性.国际化的同时,又更加通用化,适合出海企业和服务于低龄端的产品应用.左为文字点选式验证码,右为图标点选式验证码 在图标点选式验证码使用上,用户只要根据提示,按照顺序点击图中图标,即可完成验证.相较文字点选式验证码,它更加通用化,非中文用户也可以轻松识别完成验证. 图标点选式验证码开发原理与传统验证码不同,主要是通过收集用户的行为轨迹信息.设备信息等,作为人机判别依据. 不同于文字点选,由于图标元素周期性叠代更新,再加

为物联网代码安全而生 网易易盾公测IoT安全编译器Maze

??IoT时代的到来,让我们生活中物联网设备越来越多,然而设备的代码安全是一切安全的基础,如果设备代码不加以防护或防护不够,将会造成核心技术泄露,给IoT设备稳定运行带来威胁. 与此同时,当下仍有不少移动开发者把算法或者核心逻辑写在本地层,如果本地层保护不够,***者通过逆向分析就可以得到核心的算法的实现,严重危害到企业的利益. 基于这些痛点和威胁,网易易盾开发出了IoT安全编译器Maze. Maze是一款针对C/C++本地层源代码加密混淆工具,通过特有的"迷宫矩阵"技术对代码进行有效

网易易盾音频过滤服务再次迭代 新增音频实时检测

随着用户获取信息的方式差异化,音频产品因为使用场景多元.伴随性和碎片化,在当下快节奏的社会中,受到越来越多的用户欢迎.iiMedia Research数据显示,2018年在线音频用户规模增速达22.1%,2018年用户数量达到4.25亿. 用户的快速发展,也伴随着低俗.×××内容在这些音频平台上蔓延.最典型的就是去年6月份,全国"扫黄打非"办公室约谈多家网站负责人,要求各平台大力清理涉×××低俗问题的ASMR内容,加强对相关内容的监管和审核. 然而对音频的内容审核存在多个难点,比如说语

网易易盾推出政企网站安全方案 主打主动治理、防篡改

今天,网站已经成为企业.政府.教育等机构必备的"生产资料",它是信息展示.服务提供.营销宣传以及企业形象的重要渠道.然而,如此重要的对外窗口,在今天仍遭受连绵不绝的网站篡改等安全事件. 网页篡改是指恶意破坏或更改网页内容,使网站无法正常工作或出现***插入的非正常网页内容.随着<×××网络安全法>.<公安机关互联网安全监督检查规定>.<互联网网络安全突发事件应急预案>等法规的颁布和生效,再加上大家对网络安全意识的加强,2018年遭篡改的网站事件得到有

解读网易易盾新一代IoT安全编译器Maze

一.网易易盾为什么会推出安全编译器Maze? 随着5G时代的到来,会有越来越多的物联网设备走进我们的生活,然而物联网的终端本身普遍处于白盒环境中,***者很容易获取相关的信息进行***,这个时候如果不加以防护,势必给我们的生活造成重大的影响.然而设备的代码安全是一切安全的基础,如果设备代码不加以防护或防护不够,不仅仅会造成本身核心技术泄露,同时也给IoT设备稳定运行带来威胁. 与此同时,随着开发者安全意识的不断提高以及对于性能上的更多的考量,会有越来越多的移动开发者把算法或者核心逻辑写在本地层,

网易易盾推出号码验证服务 助推产品提高转化留存率

??当下,短信验证码已经成为互联网产品的标配,成了比较准确的鉴权验证方式. 它的存在大大降低了×××猫池.机器批量注册等黑产手机号的数据,然而用户体验不友好的一面也不断被人诟病.比如说操作步骤有点多.等待时间长.运营成本高(尤其是短信资源被刷时),甚至有的时候用户完全收不到,导致有些新用户直接流失.因此,如何进一步优化注册/登录/敏感操作,是产品经理和运营始终寻求突破的环节. 近日,网易易盾推出了新一代手机号认证--号码验证服务,希望能够帮助产品经理和运营优化注册/登录等环节,提高转化留存率.一