普通人学python的用处-远程打卡 再也不担心迟到扣工资了

Randol-avatar

Randol

2020-12-26T05:22:48+00:00

公司的打卡必须在内网打开一个特定的网站后用公司开发的APP进行扫码登录,用最近学习的python知识写了一个远程打卡工具

工具过程就是等待早上8点后-执行脚本-打开网页-截图二维码-剪裁二维码-使用邮件发送二维码到自己的邮箱-自己掏出手机进行扫码-自动执行打卡过程,最后一个步骤想用airtest实现自动化来着,但是因为公司自己开发的app是不允许调用截图进行扫码的暂时不知道该怎么解决的,可能要学下appium才能自动化

如果自己公司有类似打卡机制的同学可以改一改自己用
#conding utf-8
from selenium import webdriver
from time import sleep
import time,datetime
from PIL import Image
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart
from email.mime.image import MIMEImage
from email.header import Header
from email.mime.application import MIMEApplication

starttime = datetime.datetime(2020,12,30,13,17,10)
while datetime.datetime.now() < starttime:
sleep(1)
driver = webdriver.Chrome()
driver.implicitly_wait(15)
driver.get('https://xxx.net/xxorms/login.html')
driver.find_element('link text','扫码登录').click()
sleep(6)
timea = time.strftime('%Y-%m-%d-%H-%M-%S',time.localtime(time.time()))
file_path = 'C:\\Users\\Administrator\\Desktop\\erweima\\'
screen_name = file_path + timea + '.png'
print(screen_name)
driver.get_screenshot_as_file(screen_name)
image_loc = driver.find_element('xpath','//canvas[@width="150"]')
left = image_loc.location['x']
top = image_loc.location['y']
right = left + image_loc.size['width']
bottom = top + image_loc.size['height']
im = Image.open(screen_name)
im = im.crop((left,top,right,bottom))
im.save(screen_name)
smtpserver = 'smtp.qq.com'
sender = 'xxxx@qq.com'
receiver = 'xxxx@qq.com'
user = 'xxxx@qq.com'
password = 'ktfdgamqzvbaoqasftr5lrbdeacj'
message = MIMEMultipart()
message['Subject'] = '发送二维码邮件'
message['From'] = sender
message['To'] = receiver
part = MIMEApplication(open(screen_name,'rb').read())
part.add_header('Content-Disposition','attachment',filename=screen_name)
message.attach(part)

try:
smtp = smtplib.SMTP(smtpserver)
smtp.connect(smtpserver)
smtp.login(user,password)
smtp.sendmail(sender,receiver,message.as_string())
smtp.quit()
print('邮件发送成功')
except smtplib.SMTPException as e:
print('邮件发送失败')


for i in range(99999):
sleep(5)
if driver.title == '登录页面的title':
break

driver.find_element('css selector','[src="/xxxx/images/icon/app_pwpic_weboa.png"]').click()
for handle in driver.window_handles:
if driver.title != '登录页面的title':
break
#driver.find_element('css selector','[onclick="IndexSignIn();"]').click()
Randol-avatar

Randol

[img]https://img.nga.178.com/attachments/mon_202012/30/-7Q5-kljlK9T1kSgd-2v.jpg[/img]
[img]https://img.nga.178.com/attachments/mon_202012/30/-7Q5-c9kdKpT3cSik-9j.jpg[/img]
Waterbird-avatar

Waterbird

扫码那里,可以直接在电脑上开一个模拟器来扫码吧
Randol-avatar

Randol

Reply to [pid=481080167,24888757,1]Reply[/pid] Post by [uid=60472560]kimidaisuki[/uid] (2020-12-30 13:32)

可以,但我们公司不行...APP安装之后还要激活,记录设备码只能激活一个设备
MechaTurtle5000-avatar

MechaTurtle5000

那么
不能用teamviewer之类的么[s:ac:瞎]
Ryftae-avatar

Ryftae

之会用python科学计算,深度学习。。。这种python办公自动化的有什么教程吗
梦`-avatar

梦`

公司微信打卡,以前写了个app,拿到辅助权限,微信发个消息,就能自动打卡了[s:ac:呆]
LUCKY-avatar

LUCKY

今年疫情期间我就这么干了,丢公司内部的服务器上跑,上班自动打卡下班自动打卡,还在时间范围内搞个随机数延迟,免得被发现。
SovietPanda-avatar

SovietPanda

[quote][pid=481078540,24888757,1]Reply[/pid] Post by [uid=572445]oooaaa11[/uid] (2020-12-30 13:26):
[img]https://img.nga.178.com/attachments/mon_202012/30/-7Q5-kljlK9T1kSgd-2v.jpg[/img]
......[/quote]大佬学了多久 底子是?
Nirfax-avatar

Nirfax

不行…我们单位指定设备上扫脸开门
NomiNomi-avatar

NomiNomi

哥,你密码不遮一下吗
C(atboy)-avatar

C(atboy)

感觉二维码不必要用图片形式传送吧…直接识别成字符串再本机生成是不是更快一些[s:a2:不明觉厉]
♥♥𝓏𝓏𝓎  ♥𝓃𝑒-avatar

♥♥𝓏𝓏𝓎 ♥𝓃𝑒

[s:ac:茶]高级点的整个自动打卡也不是不可以啊
Randol-avatar

Randol

Reply to [pid=481080626,24888757,1]Reply[/pid] Post by [uid=37967664]ImperialAr[/uid] (2020-12-30 13:34)

公司打不开teamview远程类的软件全部禁用掉了
ᴹʳᴾᵃʳᵏ-avatar

ᴹʳᴾᵃʳᵏ

这密码就是这么硬气
Randol-avatar

Randol

Reply to [pid=481081531,24888757,1]Reply[/pid] Post by [uid=43038504]嘻嘻哈哈1992[/uid] (2020-12-30 13:37)

改过了...是假的
Kimmy_The_Crow-avatar

Kimmy_The_Crow

请问我们用的人脸识别的考勤机有没有什么远程打卡方法呢[s:ac:茶]
Randol-avatar

Randol

Reply to [pid=481081358,24888757,1]Reply[/pid] Post by [uid=42429959]GFosterX[/uid] (2020-12-30 13:37)

底子不咋地啊,到现在还没学正则表达式呢,这都是现成的接口,学完python语法,和一些工具用法就能写
telos-avatar

telos

后排提示想照抄的通知注意chromedriver这个是单独程序,和自己chrome版本要一致……记得不要乱升级[s:ac:哭笑]
DrKotaReid-avatar

DrKotaReid

那么请问指纹打卡有没有什么方法呢