万捷博客

万捷博客
一个知识汇聚的地方
首页 » 网络验证 » Golang网络验证_Golang验证_Golang授权_Golang软件加授权_网络验证_网络验证系统

Golang网络验证_Golang验证_Golang授权_Golang软件加授权_网络验证_网络验证系统

简介

本实例用于演示,通过万捷网络验证给Golang程序增加登录授权功能,让Golang编写的程序可以进行销售,控制软件的版权,为软件的作者提供收益。

实现的原理:

根据网络验证的WebApi接口的要求,构造URL网址,然后访问网址,根据返回的内容控制程序流程。

用到的技术/接口:

1、(必须)需要用到URL访问的功能,通常表达为:网页访问、GET请求、HTTP请求、cURL,用于访问构造的网址。

2、(非必须)字符串分割成数组的功能,用于将访问网址返回的内容分割成数组,根据实际需求来利用分割出的成员结果。

相关资料:

在线帮助文档(看 webapi接口说明):https://www.wjsrs.com/h/

示例源码:

package main

import (
    "net/http"
    "fmt"
    "io/ioutil"
    "strings"
)

func main(){
        
//演示调用登录接口,实现登录验证

var rjbh string ="10980"        //软件的编号

var name string="zdy_login"    //接口名称

var user string="ZTFHD0C3604C" //卡号

var psw string=""             //密码(卡号登录不需要密码)

var banben string="18.8"        //软件的版本

var jqm string="jqm"           //机器码,设备信息

var yxh string=""              //游戏号,附加绑定信息,可空

//构造URL参数
var value string = "name="+name+"&c1="+rjbh+"&c2="+user+"&c3="+psw+"&c4="+banben+"&c5="+jqm+"&c6="+yxh+"&c7=1,2,3,4,5,6,7,8,9,10,11,12,13"

//访问webpai接口
var data string= get(value)

//fmt.Printf("返回数据:"+data+"\n")

//得到类似:31536000<|>0<|>10<|>1560477784<|>27.189.145.241<|><|>new<|>1这样的结果
//如果返回的字符串中没有<|>表示返回了错误信息

if !strings.Contains(data, "<|>1") {
	fmt.Printf("Error:"+data)
	return
}else{
	a := strings.Split(data,"<|>")
    fmt.Printf("剩余时间秒数:"+a[0]+"\n")
    fmt.Printf("剩余点数:"+a[1]+"\n")
    fmt.Printf("允许几开:"+a[2]+"\n")
    fmt.Printf("游戏号:"+a[3]+"\n")
    fmt.Printf("上次登录IP:"+a[4]+"\n")
    fmt.Printf("邮箱:"+a[5]+"\n")
    fmt.Printf("上次登录的机器码:"+a[6]+"\n")
    fmt.Printf("上次登录时间:"+a[7]+"\n")
    fmt.Printf("用户的权限:"+a[8]+"\n")
    fmt.Printf("验证码(取附加数据用的):"+a[9]+"\n")
    fmt.Printf("到期时间:"+a[10]+"\n")
    fmt.Printf("备注信息:"+a[11]+"\n")
    fmt.Printf("注册时间:"+a[12]+"\n")
//根据以上得到的这些数据,处理软件的执行流程

//在线帮助文档地址:http://www.wjsrs.com/h/index.htm

//请看【WebApi接口介绍】
}


}

//get访问
func get(d string)  string{
	//fmt.Printf (d)

    //get请求
    //http.Get的参数必须是带http://协议头的完整url,不然请求结果为空
    resp, _ := http.Get("http://xxxx/api.php?"+d)
   	defer resp.Body.Close()

   	body, _ := ioutil.ReadAll(resp.Body)

    //fmt.Println(string(body))
    //fmt.Printf("Get request result: %s\n", string(body))

    	return string(body)

    
}

文章如无特别注明均为原创! 作者: admin, 转载或复制请以 超链接形式 并注明出处 万捷博客
原文地址《 Golang网络验证_Golang验证_Golang授权_Golang软件加授权_网络验证_网络验证系统》发布于2021-10-14

打赏作者

评论

游客

看不清楚?点图切换
切换注册

登录

您也可以使用第三方帐号快捷登录

切换登录

注册