HHJJJY 发表于 2022-11-10 12:49:22

自动签到要怎么启动?

本帖最后由 HHJJJY 于 2022-11-10 13:05 编辑

要怎么操作才可以每天自动签到吖? 纯小白求解!

HHJJJY 发表于 2022-11-10 13:08:05

'''
Time: 2022/08/18 14:19:21
Author: Yuzhouxing
GitHub: https://github.com/yuzhouxing-git
Project: Fishc
Version: V1.0
File: main.py
Software: python3.7.4
'''

import requests
import re
import hashlib
import time

# 获取formhash的函数
def getFormhash(cookies, headers):
    url = "https://fishc.com.cn/member.php?mod=logging&action=login"
    response = requests.get(url,headers=headers,cookies=cookies)
    if response.status_code == 200:
      response.encoding = "gbk"
      cookies.update(requests.utils.dict_from_cookiejar(response.cookies))
      formhash = re.findall(r'<input type="hidden" name="formhash" value="(.+)" />',response.text)
      return {'code':0,'formhash':formhash,'cookies':cookies}
    else:
      return {'code':1}

# 登录函数
def login(username, password, question, answer, formhash, cookies, headers):
    url = "https://fishc.com.cn/member.php?mod=logging&action=login&loginsubmit=yes&loginhash=LuRQW&inajax=1"
    questionDict = {
      "":"0",
      "母亲的名字":"1",
      "爷爷的名字":"2",
      "父亲出生的城市":"3",
      "您其中一位老师的名字":"4",
      "您个人计算机的型号":"5",
      "您最喜欢的餐馆名称":"6",
      "驾驶执照最后四位数字":"7"
    }

    # md5加密
    md5 = hashlib.md5()
    md5.update(password.encode("utf-8"))
    password = md5.hexdigest()

    # 安全提问处理
    questionid = questionDict

    # post提交数据
    data = {
      "formhash":formhash,
      "referer":"https://fishc.com.cn/",
      "username":username.encode('gbk'),
      "password":password,
      "questionid":questionid,
      "answer":answer.encode("gbk"),
      "cookietime":"2592000"
    }

    response = requests.post(url,headers=headers,data=data,cookies=cookies)
    if response.status_code == 200:
      response.encoding = "gbk"
      cookies.update(requests.utils.dict_from_cookiejar(response.cookies))
      # 判断是否登录成功
      if "欢迎您回来" in response.text:
            return {'code':0,'cookies':cookies}
      else:
            return {'code':1}
    else:
      return {'code':1}

# 签到函数
def sign(formhash, cookies, headers):
    url = "https://fishc.com.cn/plugin.php?id=k_misign:sign&operation=qiandao&format=text&formhash=%s" % formhash
    response = requests.get(url,headers=headers,cookies=cookies)
    if response.status_code == 200:
      response.encoding = "gbk"
      return {'code':0,'text':response.text}
    else:
      return {'code':1}

# 保存日志
def saveLog(msg):
    with open('sign.log','a') as f:
      f.write(time.ctime()+""+msg+"\n")

# 主函数
def main(username, password, question, answer):
    # 初始化变量
    cookies = {}
    headers = {
      "User-Agent":"Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/103.0.0.0 Safari/537.36"
    }

    # 获取登录formhash
    res = getFormhash(cookies, headers)
    if res['code'] == 0:
      formhash = res['formhash']
      cookies = res['cookies']
    else:
      return username+'登录formhash获取失败'

    # 登录
    res = login(username,password,question,answer,formhash,cookies, headers)
    if res['code'] == 0:
      cookies = res['cookies']
    else:
      return username+'登录失败'

    # 获取签到formhash
    res = getFormhash(cookies, headers)
    if res['code'] == 0:
      formhash = res['formhash']
      cookies = res['cookies']
    else:
      return username+'签到formhash获取失败'

    # 签到
    res = sign(formhash, cookies, headers)
    if res['code'] == 0:
      return username+re.findall(r'<root><!\\]></root>',res['text'])
    else:
      return username+'签到失败'

# 用户名和密码设置
username = "用户名"
password = "密码"
# 安全提问的名称,无安全提问可设置为空
question = ""
# 安全提问的答案,无安全提问可设置为空
answer = ""
# 开始循环
while True:
    # 签到并保存日志
    saveLog(main(username,password,question,answer))
    # 暂停一天
    time.sleep(60*60*24)

dolly_yos2 发表于 2022-11-10 12:49:23

看了一下,这个程序应该不会产生标准输出,所有输出会写在同路径下的 sign.log 文件中,您可以看看这个文件的内容来确定签到情况
因此,正常运行的该程序不会输出任何内容,图中的状态应该是预期之内的
不过为了每天自动签到,您需要保证这个脚本保持运行不退出

dolly_yos2 发表于 2022-11-10 13:01:08

您的帖子的马赛克是不是没打全?IDLE shell 那边有一组账号信息,如果是真实信息的话建议修改密码并调整图片
另外问题的话建议给一下脚本的完整代码

HHJJJY 发表于 2022-11-10 13:05:50

dolly_yos2 发表于 2022-11-10 13:01
您的帖子的马赛克是不是没打全?IDLE shell 那边有一组账号信息,如果是真实信息的话建议修改密码并调整图 ...

可以了谢谢

HHJJJY 发表于 2022-11-10 13:06:42

dolly_yos2 发表于 2022-11-10 13:01
您的帖子的马赛克是不是没打全?IDLE shell 那边有一组账号信息,如果是真实信息的话建议修改密码并调整图 ...

完整代码吗?

临时号 发表于 2022-11-10 13:25:38

你已经运行成功了啊
自动签到需要24小时开着电脑

临时号 发表于 2022-11-10 13:30:54

你可以将这个代码放到服务器上运行,或者用腾讯云函数调用
不想花钱的话可以把这个代码放到一个旧手机上运行

passanyworld 发表于 2022-11-10 14:02:29

又学到了,哈哈哈

HHJJJY 发表于 2022-11-10 16:16:55

临时号 发表于 2022-11-10 13:30
你可以将这个代码放到服务器上运行,或者用腾讯云函数调用
不想花钱的话可以把这个代码放到一个旧手机上运 ...

笔记本不关机就行了吧?

临时号 发表于 2022-11-10 22:02:08

HHJJJY 发表于 2022-11-10 16:16
笔记本不关机就行了吧?

应该可以,你可以试一下,我没试过
页: [1]
查看完整版本: 自动签到要怎么启动?