QRSpeed-第6课时-第六节-网络词库

xiwangly

活捉一只老RBQ
管理成员
2020-02-27
81
50
18
本帖可能需要您协助我们来编辑
本课涉及到PHP,你需要具备一些建站相关的基础来进行本课的学习(实在没基础的就当做看热闹吧)推荐:php学习推荐
(本帖因为字数实在过长,导致部分时刻无法提交更改,因而开设子帖,可能会为您带来不便,请理解)

如果你实在不想自己搭建网络词库,你也可以通过调用API来实现,很多免费的API都不太稳定,付费的又贵的要命。对于白嫖党来说实在是太难了。(需要更多API请自行查找)如果你连API都不知道是什么,请见:什么是API-知乎或者在各大搜索引擎中搜索以查找你想要的答案。

API:
API集合帖-大量好用的API
站内自研API见下面的测试用API

首先你要具备如下条件或资源:(多端选一,具体教程待补充)
————————
Android端:
KSWEB KSWEB Official Website-KSWEB官网
Termux 【Max】安卓手机网站搭建系列教程–内网穿透2-凌陌笙-葫芦侠

Windows(服务器)端:
Internet Information Services (IIS)及PHP支持 IIS怎样安装与配置-百度经验
或者你也可以使用宝塔一键配置 宝塔面板

Linux端:
(待补充)
或者你也可以使用宝塔一键配置 宝塔面板

或者你还可以在虚拟主机上搭建网络词库,不知道什么是虚拟主机?请见虚拟主机-百度百科

虚拟主机推荐:(有免费的)
虚拟主机集合帖-收录虚拟主机

官方提供的QR网络词库文件里带有授权限制,我做出了去除授权限制的测试版本(见下文)。
本帖中的所有例子词库中的域名替换成你自己的域名(需要你上传对应的文件)或者使用API。
dic.txt文件中添加以下内容:(注意不能与原来的匹配全局的关键词冲突)
代码:
(.*)
如果:%参数-1%==
参数无效
返回
如果尾
S:thehost=%主人%&robot=%Robot%&groupid=%Groupid%&sendid=%Uin%&auth=%RobotAuth%&msgtext=
M:$MD5 %S%%参数-1%516FD55C0FA269306C34AF995F1D8EDD$
U:http://域名/dic/api.php?%S%$URLEncoder %参数-1%$&sign_type=md5&sign=%M%
G:$访问 %U%$
$执行 %G%$
"516FD55C0FA269306C34AF995F1D8EDD"改成自己机器人的QQskey(关于如何获取自己机器人的QQskey请另见Bing-QQSKEY),两边都要改{dic.txt./config.php(在网络词库包内)},不改部分功能无法使用(待验证),泄露了自己的QQskey很危险,就好比对方拥有了你的密码(无视设备锁)!(有些网友非本人操作莫名其妙就群发了一些推广这就很可能是泄露了自己的QQskey)
我又魔改了一下官方提供的那个网络词库(授权验证实在太多了,我通通把他们去掉),在这里给大家提供一下资源(见附件dic.zip)。
把文件dic.zip解压在网站上,检查你的连接是否正常,以及配置是否正常就可以使用了。
./config.php(在网络词库包内)里面的192.168.43.132替换成你的域名,/dic指向的是一个子目录,如果你把dic.zip/dic/文件夹的所有文件解压到了网站根目录,请去掉域名后面的/dic(子目录)。如果挂机器人的设备和PHP支持的设备是同一个设备,那么你可以填写127.0.0.1或localhost(localhost是127.0.0.1的快捷方式)。
通过get方法实现提交数据,PHP $_GET 变量 | 菜鸟教程

我自己开发了一个网络数值数据存储的PHP词库模板(资源见附件"网络词库金币存储by希望LY.zip")(为了节省时间,我下面也展示了代码),供大家学习,我尽可能把这个模板做的简单一些,方便大家学习,当然这个也有待优化:(同样的,你也可以参考上面的方法把这个模板放在网站里,然后对接过去)
配套dic.txt资源内容模板:("充值数值@用户",因为"?(.*)"的关系,充值后面有无空格都无所谓)如果"n="后面为""(null)或"0",则等价于查询金币数量。数字前加"-"(负号)则为扣除金币。
代码:
&&示例:回复"充值[email protected]希望!"或"充值 [email protected]希望!"

充值 ?(.*)@.*
f:$访问 http://域名/jb.php?n=%括号1%&qq=%AT0%$
如果:%f%!=&%f%!=QQ号不能为空&%QQ%==1334850101
充值成功,%AT0%现有%f%金币。
返回
如果尾
充值失败
运行结果:
1585998660740.png
于此对应的签到(钱包)功能我也写出来了一个例子,供大家参考:
代码:
签到
q:$读 %QQ%/date.txt qd null$
如果:%q%==%时间dd%
f:$访问 http://域名/jb.php?n=0&qq=%QQ%$
签到失败,@%昵称% 您当日已经签到过了,您现有%f%金币
返回
如果尾
$写 %QQ%/date.txt qd %时间dd%$
s:%随机数12-64%
f:$访问 http://域名/jb.php?n=%s%&qq=%QQ%$
签到成功,@%昵称% 您获得了%s%金币,您现有%f%金币
代码:
钱包
f:$访问 http://域名/jb.php?n=0&qq=%QQ%$
@%昵称% 您现有%f%金币
运行截图:
1585997753875.png

结合前面的知识,我利用随机池和远程词库及判断语句组合写出了"摸头"的功能(这个功能在改进的时候测试了很久,是我原创的,同样的,你可以举一反三写出抽奖等功能)(为了特殊字符能正常显示,我在下面的例子中进行了URL编码以确保能正常显示)
代码:
摸头|摸摸头
0:很舒服呢(金币\%2B20)
1:很温暖呢(金币\%2B18)
2:好像用力有点过猛了(金币-50)
3:不错呢(金币\%2B16)
e:总是摸我烦不烦呐(金币-4)
s:%%随机数0-3%%
a:5
c:$读 %QQ%/次数.txt c 0$
t:$读 %QQ%/次数.txt t %时间dd%$
如果:%t%!=%时间dd%
$写 %QQ%/次数.txt c 0$
$写 %QQ%/次数.txt t %时间dd%$
$调用 0 摸头$
返回
如果尾
如果:%s%==%0%&%c%<%a%
f:$访问 http://域名/jb.php?n=20&qq=%QQ%$
$写 %QQ%/次数.txt t %时间dd%$
$写 %QQ%/次数.txt c [%c%+1]$
%s%,%QQ%现有%f%金币
返回
如果尾
如果:%s%==%1%&%c%<%a%
f:$访问 http://域名/jb.php?n=18&qq=%QQ%$
$写 %QQ%/次数.txt t %时间dd%$
$写 %QQ%/次数.txt c [%c%+1]$
%s%,%QQ%现有%f%金币
返回
如果尾
如果:%s%==%2%&%c%<%a%
f:$访问 http://域名/jb.php?n=-50&qq=%QQ%$
$写 %QQ%/次数.txt t %时间dd%$
$写 %QQ%/次数.txt c [%c%+1]$
%s%,%QQ%现有%f%金币
返回
如果尾
如果:%s%==%3%&%c%<%a%
f:$访问 http://域名/jb.php?n=18&qq=%QQ%$
$写 %QQ%/次数.txt t %时间dd%$
$写 %QQ%/次数.txt c [%c%+1]$
%s%,%QQ%现有%f%金币
返回
如果尾
t:$读 %QQ%/次数.txt t %时间dd%$
如果:%c%>=%a%&%t%==%时间dd%
f:$访问 http://域名/jb.php?n=-4&qq=%QQ%$
//$写 %QQ%/次数.txt c %a%$
%e%,%QQ%现有%f%金币
关于这个模板的更多功能还有待你们自己开发了,我只是举个例子,我相信真正愿意学的人一定可以很快写出签到(后续已追加),商店,打工,娱乐等等相关的功能的远程数据对接来。...
"网络词库金币存储by希望LY.zip"文件(共2个文件)代码展示:
jb.php(模板的核心部分)
PHP:
<?php
$x1="./";
$x2=$_GET["qq"];
$x3="/jb.txt";
$x6="QQ/" . $x2;
$x4=$x1 . $x6 . $x3;
$x5=$_GET["n"];
$x7=file_get_contents($x4);
$x8=$x7 + $x5;
$x9=file_exists($x6);
if (file_exists("./QQ/") != "1")
{
    mkdir("./QQ/");
}
if ($_GET["qq"] == "")
{
    echo "QQ号不能为空";
}
elseif ($_GET["n"] == "")
{
echo $x7;
}
else
{
    if ($x9 != "1")
    {
        mkdir($x6);
        file_put_contents($x4,$x8);
        echo file_get_contents($x4);
    }
    else
    {
        file_put_contents($x4,$x8);
        echo file_get_contents($x4);
    }
}
?>
jb.html(用于可视化提交表单)
HTML:
<html>
<head>
<meta charset="utf-8">
<title>希望LY</title>
</head>
<body>

<form action="jb.php" method="get">
数量: <input type="text" name="n">
QQ: <input type="text" name="qq">
<input type="submit" value="提交">
</form>

</body>
</html>
以下是我自己编写的词库,供参考:(这是一个网络词库的例子,这个网络词库的接口不是我的)
代码:
(开启|关闭)智能陪聊|关
$写 lydata/dic/希望LY/希望的词库/%群号%/开关.ini i1 %参数-1%$
%参数-1%成功!\r(开启/关闭智能陪聊成功!)

[\s\S]*(.*)[\s\S]*
f:$读 lydata/dic/希望LY/希望的词库/%群%/开关.ini i1 关闭智能陪聊$
如果:%f%==开启智能陪聊
a:$访问 http://i.itpk.cn/api.php?question=%参数-1%$
b:$替换 € %a%€[cqname]€我$
c:$替换 € %b%€[name]€你$
d:$替换 € %c%€[bq11]€?$
e:$替换 € %d%€NULL€%参数-1%$
f:$替换 € %e%€[cqname]€我$
%f%
返回
如果尾
我自己写的QRSpeed网络货币存储的例子:(可以说是上一个的升级版,见附件"storage.zip",如果有安全性需求,可以尝试加上md5等额外的参数判断)
同样地,我也会给出例子供参考:
代码:
充值 ?(.*)@.*
f:$访问 http://域名/storage.php?n=%括号1%&type=bank&qq=%AT0%$
如果:%f%!=&%f%!=QQ号不能为空
充值成功,%AT0%现有%f%金币。
返回
如果尾
充值失败

签到
q:$读 %QQ%/date.txt qd null$
如果:%q%==%时间dd%
f:$访问 http://域名/storage.php?n=0&type=changes&qq=%QQ%$
签到失败,@%昵称% 您当日已经签到过了,您现有%f%金币
返回
如果尾
$写 %QQ%/date.txt qd %时间dd%$
s:%随机数12-64%
f:$访问 http://域名/storage.php?n=%s%&type=changes&qq=%QQ%$
签到成功,@%昵称% 您获得了%s%金币,您现有%f%金币

钱包
f:$访问 http://域名/storage.php?n=0&type=changes&qq=%QQ%$
b:$访问 http://域名/storage.php?n=0&type=bank&qq=%QQ%$
@%昵称% 您的钱包现有%f%金币\r您在银行的存款现有%b%金币

存款 [0-9]+
p:$访问 http://域名/storage.php?n=0&type=changes&qq=%QQ%$
h:$访问 http://域名/math.php?x=%p%&m=floor$
如果:%h%<=0
取款失败,余额不足
返回
如果尾
f:$访问 http://域名/storage.php?n=%参数1%&type=bank&qq=%QQ%$
w:$访问 http://域名/storage.php?n=0&type=changes&qq=%QQ%$
@%昵称% 存款成功,您在银行的存款现有%b%金币\r您的钱包现有%f%金币

取款 [0-9]+
p:$访问 http://域名/storage.php?n=0&type=bank&qq=%QQ%$
h:$访问 http://域名/math.php?x=%p%&m=floor$
如果:%h%<=0
取款失败,余额不足
返回
如果尾
f:$访问 http://域名/storage.php?n=%参数1%&type=wallet&qq=%QQ%$
b:$访问 http://域名/storage.php?n=0&type=bank&qq=%QQ%$
@%昵称% 取款成功,您的钱包现有%f%金币\r您在银行的存款现有%b%金币
我自己写的PHP自定义词库:(测试中各种问题真的要折腾死人,附件版见附件"PHP自定义词库.zip")
PHP:
<?php
/*
示例:
增加自定义回复访问 http://域名/dic.php?q=关键词&a=回复
自定义回复访问 http://域名/dic.php?q=关键词
——xiwangly的测试文件
QRSpeed词库示例:
adddic .* .*
t:adddic %参数1%
a:$替换 Э %参数-1%Э%t%Э$
A:$URLEncoder %a%$
u:http://域名/dic.php?q=%参数1%&a=%A%
h:$访问 %u%$
增加成功\r关键词:%参数1%\r回复:%h%

[\s\S]*(.*)[\s\S]*
h:$访问 http://域名/dic.php?q=%参数-1%$
如果:%h%==null
返回
如果尾
$执行 %h%$
*/
//header("content-type:text/html;charset=utf-8");
$x1="./dic/";
$q=$_GET["q"];
$a=$_GET["a"];
$t="/a.txt";
$and=$x1 . $q . $t;
mkdir($x1);
if ($a != "")
{
    mkdir($x1 . $q);
    file_put_contents($and,$a);
}
$l=file_get_contents($and);
if ($l == "")
{
    echo "null";
}
else
{
    echo $l;
}
?>
为了更便于学习和理解知识,我们提供了一些测试用API:

测试用API仅做测试学习用途,属于临时文件,对应教程中的例子。如果主机商跑路了或者认为这些内容违规删掉了,那我也没办法。域名可能会更新以保持接口有效,请先点击这些链接测试是否有效再写入词库。主域名(感谢七彩二级域名分发-免费二级域名注册提供域名支持):http://api.lllri.cn,这个域名的主机内容保持最先更新,因此可能较多bug。
备用域名:
http://api.xiwangly.top,这个域名的主机与上面的相同(同步更新),因此可能较多bug。
备用域名(感谢山河提供主机支持):http://api.xiwangly.xyz,(镜像域名:http://api2.xiwangly.top)10M带宽,保持正常更新,bug较少。
把下面的"域名"替换成这上面的域名即可(省略协议头"http://"或"https://"),下面的URL中"域名"均指这上面的域名,两个域名的主机资源不同步更新。
PHP自定义词库,前面的链接增加词库,后面的查询(返回)词库(回复),增加、回复一体化(务必使用utf-8编码访问本地址,QRSpeed的访问默认就是utf-8编码)

ping功能(主机商已禁用),详见适用于QRSpeed的ping功能-PHP开源

以图搜图功能,图片直链可以使用QQ缓存图片,详见[教程](原创)QR机器人实现以图搜番功能!

网络数值数据存储的PHP词库,前面的链接增加|减少数值(金币为例),后面的查询(返回)数值(回复)(或令n=0),增加|减少、查询一体化

对接HOO!K机器人发送消息,(由于官方关闭了HOO!K机器人,所以现在不可用)

窥屏API,需要xml或json代码(代码见教程,能加载出图片来的多数都行)辅助自动记录用户IP,窥屏IP结果在"http://域名/ip.txt"。同时也可以做图床API用(不太建议)(想详细了解图床,请见QRSpeed-第7课时-第七节-图床

json代码执行输出测试,例如"$执行 http://域名/x.php$"

随机图片输出测试,例如"h:$访问 http://域名/i.php$%h%"

链接跳转

在线计算(已开源,见适用于QRSpeed的数学计算功能-PHP开源),支持小数,m的的值(计算方式)对应表(表格可滑动):
如果只需要1个值参与运算,请保留x的值;如果只需要2个值参与运算,请保留x和y的值;以此类推。在下表的备注中(number)即需要提交的变量数(不包含m的值)。值的大小写是敏感的。
如果提交的参数有误则会返回"0"或null或"未知的表达"。
在下面的运算中,用"M_PI"表示π。...更多见PHP 5 Math 函数-菜鸟教程
使用举例:http://域名/math.php?x=10&y=3&m=a
此时举例的返回值为13,为直接输出,非json格式
词库举例:(因为QRSpeed提交空参数有问题,所以使用了多条)
代码:
计算 .* .* .* .*
u:http://域名/math.php?x=%参数2%&y=%参数3%&z=%参数4%&m=%参数1%
h:$访问 %u%$
对象:\rx=%参数2%&y=%参数3%&z=%参数4%&m=%参数1%\r结果:\r%h%

计算 .* .* .*
u:http://域名/math.php?x=%参数2%&y=%参数3%&m=%参数1%
h:$访问 %u%$
对象:\rx=%参数2%&y=%参数3%&m=%参数1%\r结果:\r%h%

计算 .* .*
u:http://域名/math.php?x=%参数2%&m=%参数1%
h:$访问 %u%$
对象:\rx=%参数2%&m=%参数1%\r结果:\r%h%
名称加(x+y)减(x-y)乘(x*y)除(x/y)余(x%y)并置(x.y)幂(x^y)绝对值(|x|)反余弦
m的值asmdrsspowabsacos
备注(2)(2)(2)(2)(2)(2|3)合并字符串(2)(1)(1)
续表1:
名称反双曲余弦反正弦反双曲正弦反正切两个变量的反正切反双曲正切进制转换二进制转十进制向上舍整
m的值acoshasinasinhatanatan2atanhbasebindecceil
备注(1)(1)(1)(1)(2)(1)(3)x为待转换值,y为原进制,z为要转换的进制,不支持浮点和负数(1)(1)向上舍入最接近的整数
续表2:
名称余弦双曲余弦十进制转二进制十进制转十六进制十进制转八进制角度值转弧度值E^xE^x-1向下取整
m的值coscoshdecbindechexdecoctdeg2radexpexpm1floor
备注(1)(1)(1)(1)等价于$HexEncoder %括号1%$(1)(1)(1)(1)(1)向下舍入最接近的整数
续表3:
名称模(x/y的余数)x至最大值十六进制转十进制直角三角形的斜边值(x^2+y^2)判断是否为有限值判断是否为无限值判断是否为非数值0-1伪随机数对数
m的值fmodgetrandmaxhexdechypotfiniteinfinitenanlcglog
备注(2)(1)x-getrangmax的最大值(1)等价于$HexDecoder %括号1%$(2)(1)返回值为"1"或null(1)返回值为"1"或null(1)返回值为"1"或null(1|2|3)x|y|z需要定义任何值(1|2)如果y为null,则输出以e为底的对数(自然对数)
续表4:
名称以10为底的对数对数1+x最大值最小值x至最大值随机整数播种随机数八进制转十进制π
m的值log10log1pmaxminmtgetrandmaxmtrandmtsrandoctdecpi
备注(1)(1)(2|3)输出x,y(,z)中的最大值(2|3)输出x,y(,z)中的最小值(1)x-mt_getrangmax的最大值(2)使用Mersenne Twister算法生成随机整数(1)播种Mersenne Twister随机数生成器(1)(1|2|3)x|y|z需要定义任何值,输出圆周率π的值
续表5:
名称弧度值转角度值随机整数浮点数四舍五入正弦双曲正弦平方根播种随机数正切双曲正切
m的值rad2degrandroundsinsinhsqrtsrandtantanh
备注(1)(2)比上表的mtrand更慢(1)(1)(1)(1)(1)播种随机数生成器(1)(1)
续表6:
名称递增递减测试打印变量常数eEuler常量URL时间戳日期MD5
m的值aarrechox,echoy,echozeeulerurltimedatemd5
备注(1)(1)(1)m允许的值3选1(1|2|3)x|y|z需要定义任何值,输出常数e(1|2|3)x|y|z需要定义任何值,输出Euler常量(1)跳转外链(1|2|3)x|y|z需要定义任何值(1)x允许的值见(点我跳转)(1|2)y允许的值有"true"(输出16字符)或null(输出32字符)
续表7:
名称生成唯一ID随机布尔值文件MD5base64加密base64解密逻辑与逻辑或逻辑异或逻辑非(不等于)
m的值uniqidtfmd5filebase64encodebase64decodeand,andandor,ororxornot
备注(1|2)x规定生成前缀(可为空),y允许的值有"true"(输出23字符)或除"true"外任何值(输出13字符)(1|2|3)x|y|z需要定义任何值(1)支持多协议,不允许大文件或木马传入(1)(1)(2)m允许的值2选1(2)m允许的值2选1(2)(2)
续表8:
名称等于不等于大于小于大于等于小于等于圆的面积获取浮点值获取整数值
m的值equallessgreatergreaterlessgreaterequallessequalareaacirclefloatval,doubievalintval
备注(2)(2)(2)(2)(2)(2)(1)x为半径(1)m允许的值2选1(1)
续表9:
名称获取布尔值判断是否为空值uuencode 编码uuencode 解码带有函数的字符串判断数字大小正则表达式判断ASCII字符转十六进制把数据装入一个二进制字符串
m的值boolvalemptyuuencodeuudecodefxcmppregbin2hexpack
备注(1)(1)(1)(1)(1)(2)x<y返回"-1",x=y返回"0",x>y返回"1"(2)x为正则表达式,y为待匹配内容(1)(2)与bin2hex相反,x为包装数据时所使用的格式,y为内容
续表10:
名称从指定的 ASCII 值返回字符单向字符串加密(hashing)计算字符串32位CRC反向显示希伯来字符反向显示希伯来字符
m的值chrcryptcrc32hebrevhebrevc
备注(1)(1|2)x为要编码的字符串,y规定增加被编码字符数目的字符串(1)(1|2)(1|2)反向显示希伯来字符,并把新行(\n)转换为<br>,y规定每行的最大字符数
终于写完了...(当x,y,z,m的值均为空时,会转到本教程)

随机一言,(最初版本出自葫芦侠,开源,见附件"一言源码.zip","data.dat"为词条,一行一句)使用示例:
一言
h:$访问 http://域名/yiyan.php$
$执行 %h%$
暴力解密md5,测试中...(存在较大的问题)

跳转到本文章(方便快速回到这个教程)

参考:
PHP官网
菜鸟教程-PHP
w3school-PHP
PHP中文网
萌新杰少的个人空间-bilibili--------有建站基础教程
【腾讯文档】分享网站--------更多请看这里

附件:(不保证安全性和可用性,仅供参考)

翻页:
上一节
下一节

知识共享许可协议(CC BY-NC-ND 4.0)
本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可。
 

附件

最后编辑:
  • 支持
反馈: 萌新杰少

xiwangly

活捉一只老RBQ
管理成员
2020-02-27
81
50
18
Unicode码大全