Crossin的编程教室
标题:
[原创教程]让我们用requests做个有趣的b站签名远程关机
[打印本页]
作者:
Danieldepython
时间:
2022-10-7 17:34
标题:
[原创教程]让我们用requests做个有趣的b站签名远程关机
本帖最后由 Danieldepython 于 2022-10-7 17:46 编辑
有时候,为了针对室友熬夜打游戏,所以,我特意用几分钟写了个13行代码的b站远程关机
首先,既然说了要requests,那就肯定得先安装啦
import requests
复制代码
除此之外,我们还要额外装两个模块
import time
import os
复制代码
相信你们已经猜到这两个是干嘛的了,但是不懂得后面你就知道了
首先,我们得找找有没有api,所以我去了世界上最大的搜索引擎-----百度!(其实我用的是bing)
然后我找到了个
https://api.bilibili.com/x/space/acc/info
这个api,参数只有mid(b站uid)一个方式为get
然后还得循环重复爬取然后休眠10秒
所以到现在为止大概是这样的
import requests
import time
import os
uid = input("请输入uid:")
while 1:
url = "https://api.bilibili.com/x/space/acc/info?mid="+uid
text = requests.get(url)
data = text.text()
print(data)
复制代码
但是细心的你一运行发现,他把你的请求当做机器人拦截不让你获取
这时候我们就可以加上ua来模拟是人类访问的,这里我以edge浏览器的ua为例
import requests
import time
import os
uid = input("请输入uid:")
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'}
while 1:
url = "https://api.bilibili.com/x/space/acc/info?mid="+uid
text = requests.get(url,headers=headers)
data = text.text()
print(data)
time.sleep(10)
复制代码
然后,我们还需要把赋值给data的text.text()改成text.json()转换成字典
import requests
import time
import os
uid = input("请输入uid:")
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'}
url = "https://api.bilibili.com/x/space/acc/info?mid="+uid
while 1:
text = requests.get(url,headers=headers)
data = text.json()
print(data)
time.sleep(10)
复制代码
结果输出了一大串字典,如图
2022-10-7 17:43 上传
下载附件
(26.55 KB)
此时寻找很麻烦,所以我找到了一张格式化后的图:
2022-10-7 17:24 上传
下载附件
(15.25 KB)
(顺便把各种返回参数标注了)
现在就一目了然了
这时,我们再加个判断然后去掉print和用os模块的system函数执行关机指令就可以了
最终代码:
import requests
import time
import os
uid = input("请输入uid:")
headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.5060.114 Safari/537.36 Edg/103.0.1264.49'}
while 1:
url = "https://api.bilibili.com/x/space/acc/info?mid="+uid
text = requests.get(url,headers=headers)
data = text.json()
sign = data['data']['sign']
if sign == '关机':
os.system('shutdown /p')#这里可以修改指令,做到远程执行文件等
time.sleep(10)
复制代码
另外,最后再小小的说一下,你可以在打包exe的时候加上-w的参数做到隐藏
课后作业:
1.自己尝试修改指令做到其他好玩的事
2.尝试增加if判断实现更多指令
3.有能力尝试开机自启动
4.写入uid,判断是否为空如果有则直接运行
提示:玩归玩,闹归闹,劝你不要在室友做ps等东西时候用,小心把你打进icu!
(吐槽一下发帖的这个贴代码功能,我用的tab键缩进全被你们吃了!全是我敲空格敲得!)
作者:
crossin先生
时间:
2022-10-7 23:45
用B站签名关机,这个脑洞可以的
欢迎光临 Crossin的编程教室 (https://bbs.crossincode.com/)
Powered by Discuz! X2.5