这是一个自动化程度较高的程序,运行本程序后会从chrome中读取cookies用于登录人人影视签到,
并且会自动添加一个windows 任务计划,这个任务计划每天下午两点会执行本程序进行签到。
sys.executable == 'C:\\Python34\\pythonw.exe'
使用pythonw 执行.py 不会弹出命令行窗口。
以system权限执行的程序不能访问网络,/ru 参数后的值改为administrators或者users
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
|
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 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( "\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()
|