这是一个自动化程度较高的程序,运行本程序后会从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"GoogleChromeUser DataDefaultCookies" 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 2012 server python3.4 x64 pywin32 chrome 50 """ #windows 版chrome Cookies文件为一个sqlite3数据库, #chrome 33以后的版本的cookies的value都加密存在encrypted_value中, #需要使用win32crypt的CryptUnprotectData 对encrypted_value进行解密, win32crypt是pywin32的一部分,需要安装最新的pywin32模块 """ #getcookiefromchrome() #getcookiefromchrome('.baidu.com') 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("nn") 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()