设为首页收藏本站

Crossin的编程教室

 找回密码
 立即加入
查看: 2835|回复: 1
打印 上一主题 下一主题

[原创教程]让我们用requests做个有趣的b站签名远程关机

[复制链接]

7

主题

1

好友

64

积分

注册会员

Rank: 2

跳转到指定楼层
楼主
发表于 2022-10-7 17:34:16 |只看该作者 |倒序浏览
本帖最后由 Danieldepython 于 2022-10-7 17:46 编辑

有时候,为了针对室友熬夜打游戏,所以,我特意用几分钟写了个13行代码的b站远程关机
首先,既然说了要requests,那就肯定得先安装啦
  1. import requests
复制代码
除此之外,我们还要额外装两个模块
  1. import time
  2. import os
复制代码
相信你们已经猜到这两个是干嘛的了,但是不懂得后面你就知道了
首先,我们得找找有没有api,所以我去了世界上最大的搜索引擎-----百度!(其实我用的是bing)
然后我找到了个https://api.bilibili.com/x/space/acc/info这个api,参数只有mid(b站uid)一个方式为get
然后还得循环重复爬取然后休眠10秒
所以到现在为止大概是这样的
  1. import requests
  2. import time
  3. import os
  4. uid = input("请输入uid:")
  5. while 1:
  6.     url = "https://api.bilibili.com/x/space/acc/info?mid="+uid
  7.     text = requests.get(url)
  8.     data = text.text()
  9.     print(data)
复制代码
但是细心的你一运行发现,他把你的请求当做机器人拦截不让你获取
这时候我们就可以加上ua来模拟是人类访问的,这里我以edge浏览器的ua为例
  1. import requests
  2. import time
  3. import os
  4. uid = input("请输入uid:")
  5. 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'}
  6. while 1:
  7.     url = "https://api.bilibili.com/x/space/acc/info?mid="+uid
  8.     text = requests.get(url,headers=headers)
  9.     data = text.text()
  10.     print(data)
  11.     time.sleep(10)
复制代码
然后,我们还需要把赋值给data的text.text()改成text.json()转换成字典
  1. import requests
  2. import time
  3. import os
  4. uid = input("请输入uid:")
  5. 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'}
  6. url = "https://api.bilibili.com/x/space/acc/info?mid="+uid
  7. while 1:
  8.     text = requests.get(url,headers=headers)
  9.     data = text.json()
  10.     print(data)
  11.     time.sleep(10)
复制代码
结果输出了一大串字典,如图
123123123123123123123.PNG
此时寻找很麻烦,所以我找到了一张格式化后的图:
捕获.PNG
(顺便把各种返回参数标注了)
现在就一目了然了
这时,我们再加个判断然后去掉print和用os模块的system函数执行关机指令就可以了
最终代码:
  1. import requests
  2. import time
  3. import os
  4. uid = input("请输入uid:")
  5. 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'}
  6. while 1:
  7.     url = "https://api.bilibili.com/x/space/acc/info?mid="+uid
  8.     text = requests.get(url,headers=headers)
  9.     data = text.json()
  10.     sign = data['data']['sign']
  11.     if sign == '关机':
  12.         os.system('shutdown /p')#这里可以修改指令,做到远程执行文件等
  13.     time.sleep(10)
复制代码
另外,最后再小小的说一下,你可以在打包exe的时候加上-w的参数做到隐藏
课后作业:
1.自己尝试修改指令做到其他好玩的事
2.尝试增加if判断实现更多指令
3.有能力尝试开机自启动
4.写入uid,判断是否为空如果有则直接运行
提示:玩归玩,闹归闹,劝你不要在室友做ps等东西时候用,小心把你打进icu!
(吐槽一下发帖的这个贴代码功能,我用的tab键缩进全被你们吃了!全是我敲空格敲得!)
回复

使用道具 举报

174

主题

45

好友

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

沙发
发表于 2022-10-7 23:45:49 |只看该作者
用B站签名关机,这个脑洞可以的
#==== Crossin的编程教室 ====#
微信ID:crossincode
网站:http://crossincode.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即加入

QQ|手机版|Archiver|Crossin的编程教室 ( 苏ICP备15063769号  

GMT+8, 2024-4-27 20:44 , Processed in 0.025679 second(s), 26 queries .

Powered by Discuz! X2.5

© 2001-2012 Comsenz Inc.

回顶部