飞牛社区自动签到脚本

飞牛社区自动签到脚本

飞牛社区自动签到脚本指南#在这篇文章中,我将分享一个自动签到的 Python 脚本,适用于飞牛社区。通过该脚本,您可以方便快捷地完成每日签到,避免手动操作的繁琐。

实现功能#该脚本主要负责完成以下任务:

自动发送签到请求,获取签到结果。

提取并展示用户的签到情况,包括最近打卡、本月打卡和累计打卡奖励等信息并发送邮件通知本人。

在发生错误时,自动发送电子邮件通知本人。

代码解析#请求部分:

使用 requests 库向签到接口发起 GET 请求,并根据返回的数据判断签到结果。

1def sign_in():2 try:3 # 签到请求链接右键打卡按钮直接复制替换4 response = requests.get('*******签到请求链接右键打卡按钮直接复制替换*******', cookies=cookies)5

6 if '恭喜您,打卡成功!' in response.text:7 print('签到详情(打卡成功):\n')8 get_sign_in_info()9 elif '您今天已经打过卡了,请勿重复操作!' in response.text:10 print('签到详情(已经打过卡了):\n')11 get_sign_in_info()12 else:13 print('打卡失败, cookies可能已经过期或站点更新.')14 smtp(title='飞牛社区自动签到(打卡失败)', content='cookies可能已经过期或站点更新.') # 发送邮件15 except Exception as error:16 print('签到请求失败:', error)17 smtp(title='飞牛社区自动签到(请求失败)', content=str(error)) # 发送邮件若签到成功或已签到,脚本会调用 get_sign_in_info() 函数获取详细信息。

1def get_sign_in_info():2 try:3 response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign', cookies=cookies)4

5 soup = BeautifulSoup(response.text, 'html.parser')6 content = []7

8 # 定义需要查找的模式和选择器9 patterns = [10 {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'},11 {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'},12 {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'},13 {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'},14 {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'},15 {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'},16 {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'}17 ]18

19 for pattern in patterns:20 element = soup.select_one(pattern['selector'])21 if element:22 # 提取文本并清洗23 text = element.get_text()24 content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}")25 content_text = '\n'.join(content)26 print(content_text + '\n')27 smtp(title='飞牛社区自动签到(成功)', content=str(content_text)) # 发送邮件28

29 except Exception as error:30 print('获取打卡信息失败:', error)31 smtp(title='飞牛社区自动签到(获取打卡信息失败)', content=str(error)) # 发送邮件信息提取:

脚本使用 BeautifulSoup 对 HTML 内容进行解析,提取用户的签到信息。我们定义了一系列的模式,通过选择器查找特定的文本。

1def get_sign_in_info():2 try:3 response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign', cookies=cookies)4

5 soup = BeautifulSoup(response.text, 'html.parser')6 content = []7

8 # 定义需要查找的模式和选择器9 patterns = [10 {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'},11 {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'},12 {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'},13 {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'},14 {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'},15 {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'},16 {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'}17 ]18

19 for pattern in patterns:20 element = soup.select_one(pattern['selector'])21 if element:22 # 提取文本并清洗23 text = element.get_text()24 content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}")25 content_text = '\n'.join(content)26 print(content_text + '\n')27 smtp(title='飞牛社区自动签到(成功)', content=str(content_text)) # 发送邮件28

29 except Exception as error:30 print('获取打卡信息失败:', error)31 smtp(title='飞牛社区自动签到(获取打卡信息失败)', content=str(error)) # 发送邮件邮件推送:

在签到成功或失败时,脚本通过 SMTP 发送结果邮件,保证用户及时了解签到状态。

1def smtp(title: str, content: str):2 """3 使用 SMTP 邮件 推送消息。4 """5 if (6 not push_config.get("SMTP_SERVER")7 or not push_config.get("SMTP_SSL")8 or not push_config.get("SMTP_EMAIL")9 or not push_config.get("SMTP_PASSWORD")10 or not push_config.get("SMTP_NAME")11 ):12 print(13 "SMTP 邮件 的 SMTP_SERVER 或者 SMTP_SSL 或者 SMTP_EMAIL 或者 SMTP_PASSWORD 或者 SMTP_NAME 未设置!!\n取消推送"14 )15 return16 print("SMTP 邮件 服务启动")17

18 message = MIMEText(content, "plain", "utf-8")19 message["From"] = formataddr(20 (21 Header(push_config.get("SMTP_NAME"), "utf-8").encode(),22 push_config.get("SMTP_EMAIL"),23 )24 )25 message["To"] = formataddr(26 (27 Header(push_config.get("SMTP_NAME"), "utf-8").encode(),28 push_config.get("SMTP_EMAIL"),29 )30 )31 message["Subject"] = Header(title, "utf-8")32

33 try:34 smtp_server = (35 smtplib.SMTP_SSL(push_config.get("SMTP_SERVER"))36 if push_config.get("SMTP_SSL") == "true"37 else smtplib.SMTP(push_config.get("SMTP_SERVER"))38 )39 smtp_server.login(40 push_config.get("SMTP_EMAIL"), push_config.get("SMTP_PASSWORD")41 )42 smtp_server.sendmail(43 push_config.get("SMTP_EMAIL"),44 push_config.get("SMTP_EMAIL"),45 message.as_bytes(),46 )47 smtp_server.close()48 print("SMTP 邮件 推送成功!")49 except Exception as e:50 print(f"SMTP 邮件 推送失败!{e}")使用前准备#(1)用户需要设置相应的 Cookie 值和 SMTP 邮件服务配置。确保使用的邮箱支持 SMTP 发送,并提供正确的服务器信息。

Cookie获取链接:https://club.fnnas.com/plugin.php?id=zqlj\_sign

打开链接登录后,使用开发者模式获取所需要的Cookie相应字段的值。

邮件服务可以选择配置,详细配置教程可以参考来自bing的搜索。

1# 填写对应的 Cookie 值2cookies = {3 'pvRK_2132_saltkey': '',4 'pvRK_2132_auth': '',5}6# SMTP 邮件服务配置7push_config = {8 'SMTP_SERVER': '', # SMTP 发送邮件服务器,形如 smtp.exmail.qq.com:4659 'SMTP_SSL': 'true', # SMTP 发送邮件服务器是否使用 SSL,填写 true 或 false10 'SMTP_EMAIL': '', # SMTP 收发件邮箱,通知将会由自己发给自己11 'SMTP_PASSWORD': '', # SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定12 'SMTP_NAME': '定时任务', # SMTP 收发件人姓名,可随意填写13}(2)签到链接获取

1# 签到请求链接右键打卡按钮直接复制替换2response = requests.get('**签到请求链接右键打卡按钮直接复制替换**', cookies=cookies)

完整脚本#1import requests2from bs4 import BeautifulSoup3import smtplib4from email.mime.text import MIMEText5from email.header import Header6from email.utils import formataddr7

8# 填写对应的 Cookie 值9cookies = {10 'pvRK_2132_saltkey': '',11 'pvRK_2132_auth': '',12}13# SMTP 邮件服务配置14push_config = {15 'SMTP_SERVER': '', # SMTP 发送邮件服务器,形如 smtp.exmail.qq.com:46516 'SMTP_SSL': 'true', # SMTP 发送邮件服务器是否使用 SSL,填写 true 或 false17 'SMTP_EMAIL': '', # SMTP 收发件邮箱,通知将会由自己发给自己18 'SMTP_PASSWORD': '', # SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定19 'SMTP_NAME': '定时任务', # SMTP 收发件人姓名,可随意填写20}21

22

23def sign_in():24 try:25 # 签到请求链接右键打卡按钮直接复制替换26 response = requests.get('**签到请求链接右键打卡按钮直接复制替换**', cookies=cookies)27

28 if '恭喜您,打卡成功!' in response.text:29 print('签到详情(打卡成功):\n')30 get_sign_in_info()31 elif '您今天已经打过卡了,请勿重复操作!' in response.text:32 print('签到详情(已经打过卡了):\n')33 get_sign_in_info()34 else:35 print('打卡失败, cookies可能已经过期或站点更新.')36 smtp(title='飞牛社区自动签到(打卡失败)', content='cookies可能已经过期或站点更新.') # 发送邮件37 except Exception as error:38 print('签到请求失败:', error)39 smtp(title='飞牛社区自动签到(请求失败)', content=str(error)) # 发送邮件40

41

42def get_sign_in_info():43 try:44 response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign', cookies=cookies)45

46 soup = BeautifulSoup(response.text, 'html.parser')47 content = []48

49 # 定义需要查找的模式和选择器50 patterns = [51 {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'},52 {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'},53 {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'},54 {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'},55 {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'},56 {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'},57 {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'}58 ]59

60 for pattern in patterns:61 element = soup.select_one(pattern['selector'])62 if element:63 # 提取文本并清洗64 text = element.get_text()65 content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}")66 content_text = '\n'.join(content)67 print(content_text + '\n')68 smtp(title='飞牛社区自动签到(成功)', content=str(content_text)) # 发送邮件69

70 except Exception as error:71 print('获取打卡信息失败:', error)72 smtp(title='飞牛社区自动签到(获取打卡信息失败)', content=str(error)) # 发送邮件73

74

75def smtp(title: str, content: str):76 """77 使用 SMTP 邮件 推送消息。78 """79 if (80 not push_config.get("SMTP_SERVER")81 or not push_config.get("SMTP_SSL")82 or not push_config.get("SMTP_EMAIL")83 or not push_config.get("SMTP_PASSWORD")84 or not push_config.get("SMTP_NAME")85 ):86 print(87 "SMTP 邮件 的 SMTP_SERVER 或者 SMTP_SSL 或者 SMTP_EMAIL 或者 SMTP_PASSWORD 或者 SMTP_NAME 未设置!!\n取消推送"88 )89 return90 print("SMTP 邮件 服务启动")91

92 message = MIMEText(content, "plain", "utf-8")93 message["From"] = formataddr(94 (95 Header(push_config.get("SMTP_NAME"), "utf-8").encode(),96 push_config.get("SMTP_EMAIL"),97 )98 )99 message["To"] = formataddr(100 (101 Header(push_config.get("SMTP_NAME"), "utf-8").encode(),102 push_config.get("SMTP_EMAIL"),103 )104 )105 message["Subject"] = Header(title, "utf-8")106

107 try:108 smtp_server = (109 smtplib.SMTP_SSL(push_config.get("SMTP_SERVER"))110 if push_config.get("SMTP_SSL") == "true"111 else smtplib.SMTP(push_config.get("SMTP_SERVER"))112 )113 smtp_server.login(114 push_config.get("SMTP_EMAIL"), push_config.get("SMTP_PASSWORD")115 )116 smtp_server.sendmail(117 push_config.get("SMTP_EMAIL"),118 push_config.get("SMTP_EMAIL"),119 message.as_bytes(),120 )121 smtp_server.close()122 print("SMTP 邮件 推送成功!")123 except Exception as e:124 print(f"SMTP 邮件 推送失败!{e}")125

126

127if __name__ == '__main__':128 sign_in()结尾#通过这个自动签到脚本,我们能够实现自动化操作,提高效率。如果您在使用过程中遇到问题,欢迎在评论区交流。

相关推荐

王者怎么把微信好友彻底删除
365上怎么买比分

王者怎么把微信好友彻底删除

🕒 08-04 👀 2995
脚注与尾注的区别:学术写作中的两种注释形式解析
365bet体育投注网址

脚注与尾注的区别:学术写作中的两种注释形式解析

🕒 10-09 👀 9636
推荐品牌
365bet365在线

推荐品牌

🕒 11-17 👀 7143