今天在某论坛下了一个某团的脚本,刚开始我是极度抵触拿来玩的,因为脚本里说的全是泛泛而谈,没有具体的详细教程,只能根据你自己的经验和猜测脚本作者的意思去一步一步踩坑。
好在我平时还是有些Python和代码经验的,于是折腾了将近半小时,终于在自己的青龙面板跑起来了
问题1:缺少Python的execjs组件依赖
报错如下:
## 开始执行... 2023-06-12 10:09:03
/ql/shell/otask.sh: line 99: cd: function:
No such file or directory Traceback (most recent call last):
File “/ql/data/scripts/MTsignReq.py“,
line 3, in <module> import execjs ModuleNotFoundError:
No module named ‘execjs‘
## 执行结束...
解决办法:
一般情况下,青龙提示No module named ‘execjs‘,我们就去依赖管理里安装就好了,例如Python脚本,就选择Python然后添加依赖,填No module named里单引号圈着的execjs就行.但是!这个组件不按常规出牌,他的组件名字叫:PyExecJS
所以我们需要安装Python的依赖名称是:
PyExecJS
问题2:提示js报错(stdin)
报错如下:
这个我好像没遇到过,和问题3的区别在于,报错文本最末尾的是问题2是stdin,问题3是dfpId
可能是在这之前我就执行安装依赖了吧,所以没遇到这个,但是遇到了的朋友解决办法如下:
解决办法
在青龙面板-依赖管理中,新建安装一个NodeJS的依赖circular-json就行,如图:
问题3:提示js报错(dfpId)
r = js.call("signReq", req, now)
File "/usr/local/lib/python3.10/site-packages/execjs/_abstract_runtime_context.py", line 37, in call
return self._call(name, *args)
File "/usr/local/lib/python3.10/site-packages/execjs/_external_runtime.py", line 92, in _call
return self._eval("{identifier}.apply(this, {args})".format(identifier=identifier, args=args))
File "/usr/local/lib/python3.10/site-packages/execjs/_external_runtime.py", line 78, in eval
return self.exec(code)
File "/usr/local/lib/python3.10/site-packages/execjs/abstract_runtime_context.py", line 18, in exec
return self.exec(source)
File "/usr/local/lib/python3.10/site-packages/execjs/_external_runtime.py", line 88, in exec
return self._extract_result(output)
File "/usr/local/lib/python3.10/site-packages/execjs/_external_runtime.py", line 167, in _extract_result
raise ProgramError(value)
execjs._exceptions.ProgramError: TypeError: Cannot read properties of undefined (reading 'dfpId')
老实说,上面这个问题我还以为是网页们说的青龙面板得更新什么的,但是我怕麻烦,还问了chatgpt,他让我检查链接的js文件是否有signReq,并让我检查请求头,我没在意,说了一堆,那我还是相信作者不会发没测试过的代码吧!所以有检查哪里是不是却了变量什么的,直到我想起了作者说的cookie和代码里的变量cookie,以及代码里52-55的一段注释:
# if __name__ == '__main__':
# # 填写完整
# cookie = '_lxsdk_cuid=
# # mt_getMTFingerprint_example(js)
我心中一万只小马儿在奔腾,但还是有点激动好吧~
解决办法
修改py文件第60行代码里的cookie,(注意是完整的某团cookie格式,开头是_lxsdk_cuid=,不能用token那个),建议用电脑的fiddler微信网页登录某团的cookie,手机小黄鸟抓,有时候黑手机设备哇~然后填进去就行:
cookie = '_lxsdk_cuid=......................................XXXXXXXXXX替换自己的'
问题4:青龙还是无法登陆
如果你89-92下面这4行代码不对的话,肯定是不能正常登陆青龙的
解决办法
89行qlurl就是青龙ip和端口,替换成你的填上去就好,注意单引号
-
qlUrl = 'http://青龙ip:青龙端口'
90行这个id是青龙面板后台-系统设置-应用设置里新增一个后的Client ID,勾选环境变量权限,不放心的权限全拉满
-
ID = ''
91行这个同90行,系统设置-应用设置里刚刚新增后出来的Client Secret,复制就行
-
SECRET = ''
92行这个qlToken,代表青龙面板的token,可以在电脑浏览器里抓
-
qlToken = 'ey........'
青龙token抓取:
- 登录青龙后点开任意一个选项卡
- 按下F12键,调出浏览器的开发者工具
- 选择网络/network这一栏,然后按f5或者手动刷新网页
- 找到/websocket?token=这一的一个请求
- 可以看到请求url链接里有如下链接:
ws://ip:5700/api/ws/374/sabcqht2wo/websocket?token=eyJhbGciOi.........................
直接复制token=后面的内容就是你的青龙token
问题5:变量不会创建,有哪些变量?
变量有以下四个:
- mt_interval
- mt_num
- mtck
- mtgsig
意思分别是:
mt_interval填0.2,代表请求间隔0.2
mt_num填100,代表并发次数100
mtck填账号token,这个就是讲的某团用微信登录后复制链接,链接后面的token=参数多个用@隔开 如:token=qweqq@token=qweqweqwe
mtgsig先填0,后面执行那个python脚本成功的话,会自动帮你获取并修改的,//这个变量也可以不设置,如果请求全是 “抢x请求调用API失败!!“ 请抓包 mtgsig 值填入
问题6:青龙登录了,cookie也填了,脚本还是改不了环境变量
如果都正常,而且提示Succeeded to update environment variable 还是改不了青龙环境变量,请检查:
- 1、刚刚第四步系统设置-应用设置里刚刚新增后出来的Client Secret那些是否正确,是否给了环境变量权限
- 2、脚本第115行:"id": 272,这个数字需要修改成你自己青龙环境面板里,添加的环境变量mtgsig所对应的序号
例如我添加的对应的序号是10,那么我就把115行代码改成:"id": 272,
根据你们自己的情况修改即可
说在后面的话:基本上大家修改上面的参数就可以了,码字不易,这个写了一个小时的问题汇总,麻烦大家方便的话点个收藏博客链接,时不时可以逛一下。另外脚本这里不发,大家自行寻找下载,以上仅做技术交流,切不可用于违法途径,后果一律自负!如果你有其他问题,可以评论留言