[Python] 使用Python检测手机是否在局域网,不在就结束微信
本帖最后由 wkdxz 于 2021-11-14 15:04 编辑新人第一次发帖,此功能其实可以用bat命令实现,但最近在玩Python,所以用来Python来写。
实现效果:
手机不在局域网内,则结束微信进程,防止别人偷窥微信聊天记录
思路:
[*]在路由里将IP与手机Mac绑定(让IP可以直接查询到手机在线情况)
[*]使用 Ping 手机IP,检测手机是否在线
[*]如手机在线,就退出检测
[*]手机不在线,则说明人远离电脑,则结束微信进程。
后续问题:
直接结束微信进程,手机微信上还是显示微信在线。希望有高手帮我完善下代码,可以让微信可以正常退出。
from os import system as run
from os import popen as echo
from time import sleep
from sys import exit
from arrow import now
def Wechat_onlie():
for i in echo('tasklist'):
if 'WeChat.exe' in i:
return True
return False
def Tel_onlie():
ip = '192.168.0.123'#手机对应的固定ip地址【在路由器内将手机MAC和IP地址绑定】
ls =
total = ''.join(ls)
if total.count('TTL=') > 0:#有 TTL= 字样 表示手机在局域网内
return True
return False
def Count_tel_offline(cishu):#每3秒钟检测一次,然后返回不在线次数
n = 0
for i in range(cishu):
print(f'第{i+1}次检测...')
if not Tel_onlie():
n += 1
sleep(0.5)
return n
if __name__ == '__main__':
thistime = now().format('YYYY-MM-DD HH:mm')
jc = 'WeChat.exe 进程'
if not Wechat_onlie():
print(f'无 {jc} ,直接退出')
exit()
else:
print(f'有 {jc}')
cishu = 5
jiance = Count_tel_offline(cishu)
if jiance > 0:#如果有一次不在线,就结束微信进程
t = f'{thistime}\t结束微信进程'
print(t)
for j in range(3):
for i in 'Wechat_Browser WeChatPlayer WeChat'.split():
run(f'taskkill /f /im {i}.exe') 本帖最后由 wkdxz 于 2021-11-14 16:54 编辑
WUAIDHL 发表于 2021-11-14 16:37
你好,请问怎么使用呢
安装好Python3.8及其以上的版本,下载附件中的脚本运行即可。
我修改一个不依赖第三方库的版本。
如果有需要,我可以打包为exe,但Python打包为exe体积一般比较大,不值得。 m58758788 发表于 2021-11-14 18:18
可以啊 本来我想post进路由 看看指定设备有没有连入 确实没想到只要ping就可以了
哈哈哈 我也是想了好些办法,最后想到这个。这办法对于其他人来说,难点在于MAC绑定IP。 如果知道公司的路由密码,这方法就可以用来摸鱼了{:1_918:} 感谢作者分享 这个必须每一秒都在网内,去上个cs都不行... 有点期待这玩意儿{:1_921:} 看看操作,学习学习 ynboyinkm 发表于 2021-11-14 15:55
这个必须每一秒都在网内,去上个cs都不行...
我是把它添加到计划任务里,每5分钟执行一次,倒也不用每一秒都在线。 这个有点意思 有点意思,防范意识强啊 你好,请问怎么使用呢