python3+任务计划实现的人人影视网站自动签到 | """ | | python3+任务计划实现的人人影视网站自动签到 | | 2016年6月8日 09:52:28 codegay | | | | 这是一个自动化程度较高的程序,运行本程序后会从chrome中读取cookies用于登录人人影视签到, | | 并且会自动添加一个windows 任务计划,这个任务计划每天下午两点会执行本程序进行签到。 | | | | sys.executable == 'C:\\Python34\\pythonw.exe' | | 使用pythonw 执行.py 不会弹出命令行窗口。 | | | | 以system权限执行的程序不能访问网络,/ru 参数后的值改为administrators或者users | | | | """ | | | | import os | | import sys | | import subprocess | | import sqlite3 | | import time | | import requests | | from win32.win32crypt import CryptUnprotectData | | | | def getcookiefromchrome(host='.oschina.net'): | | cookiepath=os.environ['LOCALAPPDATA']+r"\Google\Chrome\User Data\Default\Cookies" | | sql = "select host_key,name,encrypted_value from cookies where host_key='%s'" % host | | with sqlite3.connect(cookiepath) as conn: | | cu = conn.cursor() | | cookies = {name:CryptUnprotectData(encrypted_value)[1].decode() for host_key,name,encrypted_value in cu.execute(sql).fetchall()} | | print(cookies) | | return cookies | | | | | | """ | | #windows 版chrome Cookies文件为一个sqlite3数据库, | | #chrome 33以后的版本的cookies的value都加密存在encrypted_value中, | | #需要使用win32crypt的CryptUnprotectData 对encrypted_value进行解密, | | win32crypt是pywin32的一部分,需要安装最新的pywin32模块 | | """ | | | | | | | | def sign(): | | zmcookie = getcookiefromchrome('.zimuzu.tv') | | url = 'http://www.zimuzu.tv/user/login/getCurUserTopInfo' | | requests.get(url,cookies=zmcookie).text | | rs = requests.get('http://www.zimuzu.tv/user/sign',cookies=zmcookie).text.split('\n') | | info = [r for r in rs if "三次登录时间" in r] | | time_=time.strftime("%c") | | with open("zmlog.txt","a+") as f: | | f.write(time_ + " :" ) | | f.writelines(info) | | f.write("\n\n") | | | | tn='zmautosign' | | | | def run(ar=sys.argv): | | if len(ar)==1: | | sign() | | if not intask(): | | addtask() | | | | elif len(ar)>1 and ar[1].lower()=="-task": | | sign() | | | | def intask(tn=tn,ar=sys.argv[0]): | | txt=subprocess.getoutput('schtasks /query |find "%s"' % tn) | | if tn in txt: | | return 1 | | else: | | return 0 | | | | def addtask(tn=tn,ar=sys.argv[0]): | | cmd='schtasks /create /F /ru Administrators /tn "%s" /sc daily /st 14:00:00 /tr "%s %s -task"' % (tn,sys.executable,ar) | | subprocess.call(cmd,shell=1) | | | | os.chdir(sys.path[0]) | | run()COPY |
|