pt.py
- # -*- coding:utf-8 -*-
- # Time:2021/04/29 20:29
- # Author:Chiser
- import requests
- import json
- import datetime
- import time
- def get_page(item):
- now = datetime.datetime.now()
- time = ‘[‘ + now.strftime(“%Y-%m-%d %H:%M:%S”) + ‘]’
- f = open(‘run.log’, ‘a+’)
- try:
- if ‘action’ in item.keys():
- data = {
- ‘action’: ‘sign_in’
- }
- response = requests.post(item[‘url’], headers=headers, data=data)
- else:
- response = requests.get(item[‘url’], headers=headers)
- now = datetime.datetime.now()
- time = ‘[‘ + now.strftime(“%Y-%m-%d %H:%M:%S”) + ‘]’
- if response.status_code == 200:
- response = response.text
- if ‘签到成功’ in response or ‘恭喜您’ in response:
- f.write(time + item[‘site‘] + ‘签到成功~\n’)
- elif ‘重复刷新’ in response or ‘重复’ in response or ‘簽到過’ in response or ‘已经打卡’ in response:
- f.write(time + item[‘site‘] + ‘你已签到过了~\n’)
- elif ‘开小差’ in response and ‘已经打卡’ not in response:
- f.write(time + item[‘site‘] + ‘签到失败~\n’)
- elif ‘首页’ or ‘首頁’ in response:
- f.write(time + item[‘site‘] + ‘今日已访问~\n’)
- else:
- f.write(time + item[‘site‘] + ‘网站无法访问~\n’)
- f.close()
- except:
- f.write(time + item[‘site‘] + ‘网站无法访问~\n’)
- f.close()
- if __name__ == ‘__main__‘:
- while True:
- user_agent = ‘Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36’
- json_data = open(‘site.json’, encoding=’utf-8′)
- json_data = json.load(json_data)
- for item in json_data:
- try:
- if item[‘referer’]:
- headers = {
- ‘user-agent’: user_agent,
- ‘referer’: item[‘referer’],
- ‘cookie’: item[‘cookie’]
- }
- except:
- headers = {
- ‘user-agent’: user_agent,
- ‘cookie’: item[‘cookie’]
- }
- get_page(item)
- time.sleep(43200) #根据需求选择重复执行时间,时间单位为秒
site.json
- [
- {
- “site”: “PTHOME”,
- “url”: “”,
- “referer”: “”,
- “cookie”: “”
- },
- {
- “site”: “”,
- “url”: “”,
- “cookie”: “”
- }
- ]
任务部署
部署方式1
1.上传项目文件至服务器.
2.在宝塔面板软件商店–Python项目管理器 1.9–版本管理中安装Python3.0及以上版本.
3.在项目管理中添加项目.路径选择刚才上传的项目路径;启动文件为项目内的pt.py文件;启动方式为python;勾选是否安装模块依赖及开机启动.
4.添加完成后重启一次项目,回到项目上传路径查看run.log文件,检测签到状态【站点数量决定签到时间长短】
部署方式2
1.上传项目文件至服务器.
2.删除pt.py文件中最后一行内容:
- time.sleep(43200)
3.在宝塔面板终端处安装requests库【PS:前提需先安装好Python3.x版本】
- python3 -m pip install requests
4.在宝塔面板定时任务中新建shell任务.根据需求选择执行周期,脚本内容根据项目上传路径自行修改:
- cd /xxxxx/pt
- python3 pt.py
5.添加完成后执行一次任务,查看run.log检测签到状态
站点添加
在site.json文件中自行根据站点特性以及签到需求选择以下签到方式添加站点.
通用签到方式:
- {
- “site”: “站点名称”,
- “url”: “站点地址”,
- “cookie”: “站点cookie”
- }
签到方式1:
- {
- “site”: “站点名称”,
- “url”: “域名/attendance.php”,
- “referer”: “域名/index.php”,
- “cookie”: “站点cookie”
- }
签到方式2:
- {
- “site”: “站点名称”,
- “url”: “域名/signin.php”,
- “referer”: “域名/index.php”,
- “cookie”: “站点cookie”
- }
签到方式3:
- {
- “site”: “站点名称”,
- “url”: “域名/attendance.php”,
- “cookie”: “站点cookie”
- }
签到方式4:
- {
- “site”: “站点名称”,
- “url”: “域名/sign_in.php”,
- “referer”: “域名/faq.php”,
- “action”: “sign_in”,
- “cookie”: “站点cookie”
- }
签到方式5:
- {
- “site”: “站点名称”,
- “url”: “域名/attendance-ajax.php”,
- “cookie”: “站点cookie”
- }
已知站点的签到方式
通用签到方式站点:KeepFrds、SouLvoice、HDAI、HDBD、PTMSG、HDFANS、CCF、DIC、U2、MTEAM、GPW、HUIJVTT[貌似已关闭站点]
签到方式1站点:PTHOME
签到方式2站点:HAIDAN
签到方式3站点:Lemonhd、HDATMOS、HDZONE、HDTIME、3WMG
签到方式4站点:HDAREA
签到方式5站点:PterClub