Created
June 8, 2016 02:25
-
-
Save FGFW/2070eef1ed0161b74a7093b59ecbc390 to your computer and use it in GitHub Desktop.
python3+任务计划实现的人人影视网站自动签到
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
""" | |
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 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() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment