秋霞步兵区国产精品,国产精品视频二区第二页,亚洲aⅴ欧美综合一区二区三区,亚洲日韩欧美一区二区不卡

      1. <small id="x8tpb"></small>
        <address id="x8tpb"></address>

        新疆信息港歡迎您!

        新疆信息港
        新疆信息港 > 科技 >Python實現(xiàn)人事自動打卡!還怕忘記打卡被叼?自動簽到與簽退!

        Python實現(xiàn)人事自動打卡!還怕忘記打卡被叼?自動簽到與簽退!

        2020-11-20 12:25:13
        來源:互聯(lián)網(wǎng)
        閱讀:-

        開始抓包配置過濾器打開Fiddler 后,打開模擬器,這時候在 Fiddler 會監(jiān)聽到大量的流量信息,便于查找,我們需要使用過濾器,如圖,在 Fiddler 界面右側(cè),選擇 “Filters”并勾選,選擇 “Use Filters”,在 “Hosts” 項目中,選擇 “Show...

        我司使用的打卡軟件是 i 人事,不過我這記性,經(jīng)常漏了打卡簽退,定了鬧鐘都會忘,今天又被老大屌了。于是準備抓一下簽到接口,利用 crontab 來實現(xiàn)自動簽到簽退。

        環(huán)境配置

        這里使用的是 Fiddler 進行抓包,F(xiàn)iddler 是一個 HTTP 調(diào)試代理工具,以代理服務(wù)器的形式實現(xiàn)對網(wǎng)絡(luò)數(shù)據(jù)流的監(jiān)聽。之所以沒有用 Wireshark,一是因為我不是很熟悉 wireshark 的篩選器,二是因為本文使用模擬器(手機應(yīng)用后臺流量多,不便于分析)來抓包,代理服務(wù)器方式更方便。

        安裝Fiddler

        先安裝 Fiddler( 官網(wǎng)地址 ),安裝完成之后需要安裝 fiddlercertmaker 證書生成工具( 官網(wǎng)地址 )

        Fiddler配置

        如圖,打開Fiddler,Tools 選擇 Fiddler Options,將圖中所標識地方勾選,配置后點擊 OK 保存并重啟 Fiddler

        Python實現(xiàn)人事自動打卡!還怕忘記打卡被叼?自動簽到與簽退

        再次打開該選項卡,點擊 Action 生成證書到桌面(文件名 FiddlerRoot.cer)

        Python實現(xiàn)人事自動打卡!還怕忘記打卡被叼?自動簽到與簽退

        將該證書文件上傳到模擬器即可。

        模擬器配置

        記錄 Windows 當前網(wǎng)卡的 IP 備用。

        打開模擬器,在模擬器內(nèi)的系統(tǒng)設(shè)置中選擇 “安全”,選擇 “從 SD 卡安裝”,選擇前面上傳的證書,安裝即可。(過程中會要求設(shè)置屏保密碼,設(shè)置即可)

        選擇模擬器內(nèi)的 WiFi 連接,長按當前的 WiFi,選擇修改網(wǎng)絡(luò),選擇手動配置代理,地址填前面記錄的 Windows 本地 IP,端口為 8888,保存后重啟模擬器即可。

        Python實現(xiàn)人事自動打卡!還怕忘記打卡被叼?自動簽到與簽退

        開始抓包

        配置過濾器

        打開 Fiddler 后,打開模擬器,這時候在 Fiddler 會監(jiān)聽到大量的流量信息,便于查找,我們需要使用過濾器,如圖,在 Fiddler 界面右側(cè),選擇 “Filters”并勾選,選擇 “Use Filters”,在 “Hosts” 項目中,選擇 “Show only the following Hosts”,并填入 “www.ihr360.com” 這樣能過濾掉除 i 人事以外的域名流量信息,同時,在 “Request Headers” 中,勾選 “Show only if URL contains”,填入 “gateway/attendance/aggregate/attendance/api/sign/doSign” ,點擊右上角的 Actions,選擇 “Run Filterset now” 以生效過濾器。在 Fiddler 左側(cè)的流量信息欄中,使用 Ctrl + X 清除當前所有流量信息。

        Python實現(xiàn)人事自動打卡!還怕忘記打卡被叼?自動簽到與簽退

        模擬器簽到

        將模擬器的模擬定位定位到需要打卡的位置,打開 i 人事,點擊考勤打卡,打卡簽到,這時候在 Fiddler 中會出現(xiàn)一條監(jiān)聽到的請求,雙擊打開,如圖所示,

        Python實現(xiàn)人事自動打卡!還怕忘記打卡被叼?自動簽到與簽退

        可以看到,實際上打卡簽到動作就是一條 POST 請求。我們了解了這條 POST 請求的基本內(nèi)容后就可以利用 Python 的 requests 模塊來模擬提交了。

        模擬請求

        模擬 POST 請求很簡單,這里就不多說,直接貼代碼(很爛=.=! ,能用就行啦…勿噴…):

        #!/usr/bin/env python3# www.iots.vip# Alliot# 2020-1-8import requestsimport jsonimport smtplibfrom email.mime.text import MIMETextfrom email.utils import formataddrfrom time import strftime, localtime# 忽略 requests 請求認證警告requests.packages.urllib3.disable_warnings()# 郵件設(shè)置server = 'smtp.163.com'port = '25'sender = '發(fā)件人郵箱'passwd = '密碼(授權(quán)碼)'receiver = '收件人'# i 人事簽到接口地址url = "https://www.ihr360.com/gateway/attendance/aggregate/attendance/api/sign/doSign"# 抓包簽到請求頭headersValue = {    'Cookie': 'SESSION=XXXXXXXXXXXXXX; Path=/; HttpOnly',    'accept': 'application/json;charset=UTF-8',    'appKey': 'com.irenshi.personneltreasure',    'appVersion': 'XXXX',    'osVersion': 'XXXX',    'udid': 'XXXXXX',    'user-agent': 'IRENSHI_APP_AGENT',    'os': 'Android',    'irenshilocale': 'zh_CN',    'Content-Type': 'application/json; charset=utf-8',    'Content-Length': '272',    'Host': 'www.ihr360.com',    'Connection': 'Keep-Alive',    'Accept-Encoding': 'gzip',}# 抓包請求 jsonjsonValue = {    "deviceToken": " ",    "deviceType": "NORMAL",    "latitude": XXX,    "locationName": "XXX",    "longitude": XXX,    "phoneName": "MI6",    "signSource": "APP",    "wifiMac": "XXX",    "wifiName": "Alliot",}# 簽到方法def doSign(url, jsonValue, headersValue):    r = requests.post(url, json=jsonValue, headers=headersValue, verify=False)    global results    results = json.loads(r.text)    print(strftime("%Y-%m-%d %H:%M:%S", localtime()))    return results# 郵件提醒方法def sendMail(server, port, sender, passwd, msg):    smtp = smtplib.SMTP()    smtp.connect(server, port)    smtp.login(sender, passwd)    smtp.sendmail(msg['From'], msg['To'], msg.as_string())    smtp.quit()    print('郵件發(fā)送成功email has send out !')def newMail(status):    msg = MIMEText(str(results), 'plain', 'utf-8')    msg['From'] = formataddr(["AlliotSigner", sender])    msg['To'] = formataddr(["Alliot", receiver])    if status == None:        msg['Subject'] = '打卡失敗-_-!'        print("打卡失敗")    else:        msg['Subject'] = '自動打卡成功'        print("打卡成功")    sendMail(server, port, sender, passwd, msg)# 簽到并郵件通知結(jié)果,不用通知則改為 doSign(url, jsonValue, headersValue) 即可newMail(doSign(url, jsonValue, headersValue)["data"])# doSign(url, jsonValue, headersValue)

        修改其中的配置為上文抓到的數(shù)據(jù)即可(這里注意, headersValue 請求頭為字典格式, jsonValue 則為 Json 格式,執(zhí)行報錯的時候檢查一下是否是格式錯誤。)、

        私信小編01 領(lǐng)取完整項目代碼!

        上傳到服務(wù)器中,執(zhí)行:

        python3 ihr.py # 你的文件名

        執(zhí)行后,打開 i 人事查看是否成功產(chǎn)生一次簽到記錄,成功即可添加進計劃任務(wù)。

        定時執(zhí)行

        利用 crontab 來實現(xiàn)自動執(zhí)行。關(guān)于 crontab 的具體使用,可見 Linux下crontab的使用與注意事項 | Alliot’s blog

        我是定義每周工作日的 8 點 18 點打卡,crontab 配置為:

        0 8,18 * * mon,tue,wed,thu,fri,sat /usr/bin/python3 /alliot/ihr.py>>/alliot/ihr_log.txt

        后記

        整個流程很簡單粗暴,其實一般后臺都是能看出來的,因為每次的簽到位置都是一樣,所以如果想要逼真一點,可以在請求中經(jīng)緯度、位置名里使用范圍的隨機數(shù)等等… 不過,還是那句話: 可以,但沒必要。

        推薦閱讀:大股網(wǎng)

        免責聲明:本文僅代表企業(yè)觀點,與新疆信息港無關(guān)。其原創(chuàng)性以及文中陳述文字和內(nèi)容未經(jīng)本站證實,對本文以及其中全部或者部分內(nèi)容、文字的真實性、完整性、及時性本站不作任何保證或承諾,請讀者僅作參考,并請自行核實相關(guān)內(nèi)容。
        熱門圖片
        熱門搜索