简介
本实例用于演示,通过万捷网络验证给Python程序增加登录授权功能,让Python编写的程序可以进行销售,控制软件的版权,为软件的作者提供收益。
实现的原理:
根据网络验证的WebApi接口的要求,构造URL网址,然后访问网址,根据返回的内容控制程序流程。
用到的技术/接口:
1、(必须)需要用到URL访问的功能,通常表达为:网页访问、GET请求、HTTP请求、cURL,用于访问构造的网址。
2、(非必须)字符串分割成数组的功能,用于将访问网址返回的内容分割成数组,根据实际需求来利用分割出的成员结果。
相关资料:
在线帮助文档(看 webapi接口说明):https://www.wjsrs.com/h/
示例源码:
# -*- coding:UTF-8 -*-
import urllib.request
#GET方法用于访问webpai接口
def func_get(data):
try:
#http://xxxx/api.php是webapi接口提交数据的地址,每个人的地址都不一样
d = urllib.request.urlopen('http://xxxx/api.php?'+data)
da = d.read()
except IOError:
return "Error:链接服务器失败。";
else:
if(da!=''):
return (da.decode('utf8')) #返回的数据的编码默认是UTF8,需要转换下
else:
return "服务器返回空。"
#演示调用登录接口,实现登录验证
rjbh="10980" #软件的编号
name="zdy_login" #接口名称
user="ZTFHD0C3604C" #卡号
psw="" #密码(卡号登录不需要密码)
banben="18.8" #软件的版本
jqm="jqm" #机器码,设备信息
yxh="" #游戏号,附加绑定信息,可空
#访问webpai接口
da= func_get("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")
#得到类似:31536000<|>0<|>10<|>1560477784<|>27.189.145.241<|><|>new<|>1这样的结果
#如果返回的字符串中没有<|>表示返回了错误信息
print("返回数据:"+da)
#login接口如果登录成功返回数据的结尾肯定是<|>1,如果不是,就是发生错误了
if(da.find('<|>1')==-1):
print(da)
else:
#login接口返回数据使用的分隔符是<|>所以用<|>来分割字符串,其他接口按实际返回数据结构处理
strlist = da.split('<|>')
print("剩余时间秒数:"+strlist[0])
print("剩余点数:"+strlist[1])
print("允许几开:"+strlist[2])
print("游戏号:"+strlist[3])
print("上次登录IP:"+strlist[4])
print("邮箱:"+strlist[5])
print("上次登录的机器码:"+strlist[6])
print("上次登录时间:"+strlist[7])
print("用户的权限:"+strlist[8])
print("验证码(取附加数据用的):"+strlist[9])
print("到期时间:"+strlist[10])
print("备注信息:"+strlist[11])
print("注册时间:"+strlist[12])
#根据以上得到的这些数据,处理软件的执行流程