吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 5655|回复: 21
收起左侧

[Python 转载] 解决网课播放不定时交互防离开问题的思路,赠源码

[复制链接]
天域至尊 发表于 2020-3-18 10:28
在大家被迫观看网课的时候,网课总是会不定时弹出一个窗口,让你点击下,或者拖动下滑块什么的,同时暂停播放。而如果你在挂机刷课,肯定就废了。


当然,有大佬可以改源码,发伪装好的数据包等等,但是都是高度定制化的,即换个平台就废。
同时,这种方法增大了被发现的概率。
如何更加真实?无疑是在网课程序(浏览器)外,进行模拟人的操作。


如何模拟人的操作?
第一,要能控制鼠标键盘等人体学输入设备。
第二,应该知道什么时候该控制。



什么时候该控制呢?

往往是暂停播放的时候。



那我们来解析下,暂停播放会对电脑产生什么影响?
1.音频不再输出。
2.电脑画面不再变化。
3.播放程序不再禁止电脑休眠。


以上三个方面,都可以作为一个判断的突破点,这次我们用到的是第三条。
播放设备不再禁止电脑休眠。


怎么查看有没有程序禁止电脑休眠呢?
Windows命令(管理员):
[Bash shell] 纯文本查看 复制代码
powercfg /requests

播放时返回示例:
[Bash shell] 纯文本查看 复制代码
DISPLAY:
[PROCESS] \Device\HarddiskVolume1\Program Files (x86)\Internet Explorer\iexplore.exe
Adobe Flash Player

SYSTEM:
[DRIVER] Realtek High Definition Audio (HDAUDIO\FUNC_01&VEN_10EC&DEV_0257&SUBSYS_17AA2256&REV_1000\4&2e2b60f2&0&0001)
音频流当前正在使用中。

AWAYMODE:
无。

执行:
无。

PERFBOOST:
无。

ACTIVELOCKSCREEN:
无。

暂停播放时返回示例:
[Bash shell] 纯文本查看 复制代码
DISPLAY:
无。

SYSTEM:
无。

AWAYMODE:
无。

执行:
无。

PERFBOOST:
无。

ACTIVELOCKSCREEN:
无。



通过这个命令,我们就可以查看是否有目标程序禁止电脑休眠。

程序思路:
1.抛出上述系统命令。
2.判断是否有目标程序在列表中(这次是flash)
3.若存在,则模拟操作(这次是点击)
注:因该命令需要管理员权限,所以脚本必须以管理员权限运行。
付源码:
[Python] 纯文本查看 复制代码
import os,pyautogui,time
#os用来抛出系统级命令,pyautogui是孔控制鼠标的库
#pyautogui库功能非常丰富,可以单击,移动,拖动,右键等等

#初始化鼠标所需单击的位置,这次是模拟单击操作
mouseX=-1
mouseY=-1
#尝试读取鼠标位置保存文件,这个文件用于存储鼠标点击位置的数据,方便每次运行程序可以直接读取上次数据
#若文件不存在,则提示用户确定点击位置
try:
    #尝试打开,读取鼠标位置数据
    f=open('a.txt',mode='r')
    f=str(f.read()).split(',')
    mouseX=int(f[0])
    mouseY=int(f[1])
except Exception:
    pass
finally:
    try:
        f.close()
    except Exception:
        pass

#如果上述步骤没有读取成功,提醒用户把鼠标移动到想要程序自动点击的位置,回车。
#程序会自动记录位置,写入文件中,方便下次启动程序复用
if mouseX<0:
    input('请将鼠标移至继续观看位置,回车')
    mouseX, mouseY = pyautogui.position()
    print('位置定位成功')
    #将位置数据写入文件中,下次使用无需定位
    try:
        f=open('a.txt',mode='w')
        masse=str(mouseX)+','+str(mouseY)
        f.write(masse)
        print('数据保存成功')
    except Exception:
        print('数据保存失败,下次使用需要重新定位,本次无影响。')
    finally:
        try:
            f.close()
        except Exception:
            pass
print('定位鼠标位置为:%s,%s'%(mouseX,mouseY))
#进入无限循环,每次循环间隔20秒
while True:
    #打印提示信息
    print(str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))+'执行检测')
    #抛出系统命令
    a=os.popen('powercfg /requests')
    #获取系统返回的结果,顺便移除换行,方便判断
    anser=str(a.read()).replace('\n','').replace('\r','')
    #初始化变量,用来标记视频是否在播放
    runStation=True
    #如果发现flash程序的字样,存在于命令返回结果,则判断视频正在播放
    if 'Flash' in anser or 'flash' in anser:
        runStation=True
    #如果发现返回数据中,关键变量缺失,说明用户使用的并不是管理员身份,报错退出
    elif 'SYSTEM' not in anser and 'system' not in anser:
        print('请以管理员身份运行程序')
        break
    #否则认为是程序播放已经暂停,标记变量
    else:
        runStation=False
        print(str(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time())))+'检测到播放暂停')
    #变量现实程序播放暂停,开始执行模拟人工操做
    if runStation==False:
        #这里是将鼠标移动到标记地点,单击一下
        #这个库支持复杂的鼠标操作,建议大家了解下
        pyautogui.click(mouseX, mouseY, button='left')
    #等待20秒后进行下次检测
    #特别提醒,播放状态切换后,系统并不能实时的更新返回结果,所以强烈要求间歇时间不要低于10秒钟
    #间歇时间过低,会导致重复性误判断
    time.sleep(20)


注释赶上代码量了,我就不再解释了。


原创,允许转载和引用,请注明出处。

免费评分

参与人数 6吾爱币 +8 热心值 +6 收起 理由
abchehead + 1 谢谢@Thanks!
苏紫方璇 + 5 + 1 欢迎分析讨论交流,吾爱破解论坛有你更精彩!
再次注册 + 1 + 1 热心回复!
大山洞 + 1 已经处理,感谢您对吾爱破解论坛的支持!
小k666 + 1 + 1 我很赞同!
青春作伴 + 1 + 1 脑回路清晰!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

 楼主| 天域至尊 发表于 2020-3-18 11:31
看,六眼飞鱼 发表于 2020-3-18 11:00
这什么学校要求这么变态,我还以为有人能做出来老师语言点名自动扣1呢

我就喜欢你这种有趣的评论,来来来,我给你一个思路。

1.把手机和一个小米音箱的小爱同学的唤醒词改成你的名字。
2.在手机上增加一个小爱同学训练,内容是“我在”,操作是自动扣一。

老师在点到你名字的时候,手机和小米会被同时唤醒,小米音箱会说“我在”,然后手机听到了“我在”的内容,就会自动扣一。

你试试,看看可行不?

情景模拟:
老师:张三!
手机:叮~
小米音箱:我在
手机:扣一
 楼主| 天域至尊 发表于 2020-3-23 10:51
lntuer 发表于 2020-3-19 13:48
浏览器后台运行,pyatuogui好像不是很好使

对的,浏览器不能后台运行,必须在前台。如果肯丰富操作逻辑的话,理论上是可行的。例如:
1.被触发条件触发后,单击任务栏浏览器位置,等待5秒。
2.单击弹窗。
3.单击最小化。

我这个设计的初衷是在一个闲置设备上挂机的,就是我的树莓派,在这种限制的机器上,浏览器永远都是在前台,而且Linux环境没有那么多弹窗,所以用起来少了很多麻烦。
vagrantear 发表于 2020-3-18 10:34
segirls 发表于 2020-3-18 10:44
感谢老的分享,python小白学习了。
dsl1976 发表于 2020-3-18 10:46

感谢分享!
陳小賢 发表于 2020-3-18 10:50
太棒了,就是需要思路类型的分析,受教了!
QRQF001 发表于 2020-3-18 10:54
支持一下
青春作伴 发表于 2020-3-18 10:58
python没学过,没安装 ,可发个成品不?
看,六眼飞鱼 发表于 2020-3-18 11:00
这什么学校要求这么变态,我还以为有人能做出来老师语言点名自动扣1呢
小k666 发表于 2020-3-18 11:08
支持一下。
PPZ丿皮皮智 发表于 2020-3-18 11:27
刚入门python正好来学习一下
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-17 02:57

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表