## 一、浏览器打开飞牛社区并登录,复制cookie运行以下代码自动获取 ```python import re import json # 输入的cookie字符串 cookie_string = """ """ # 使用正则表达式提取pvRK_2132_saltkey和pvRK_2132_auth saltkey_pattern = r"pvRK_2132_saltkey=([a-zA-Z0-9]+)" auth_pattern = r"pvRK_2132_auth=([a-zA-Z0-9%/]+)" saltkey_match = re.search(saltkey_pattern, cookie_string) auth_match = re.search(auth_pattern, cookie_string) # 提取并输出结果 if saltkey_match and auth_match: cookies = { 'pvRK_2132_saltkey': saltkey_match.group(1), 'pvRK_2132_auth': auth_match.group(1) } print("cookies =", json.dumps(cookies, indent=4)) else: print("没有找到匹配的值!") ``` ## 二、青龙面板Python脚本 ```python import requests from bs4 import BeautifulSoup import smtplib from email.mime.text import MIMEText from email.header import Header from email.utils import formataddr # 填写对应的 Cookie 值 cookies = { "pvRK_2132_saltkey": "xxx", "pvRK_2132_auth": "xxx" } # SMTP 邮件服务配置 push_config = { 'SMTP_SERVER': 'smtp.qq.com:465', # SMTP 发送邮件服务器,形如 smtp.exmail.qq.com:465 'SMTP_SSL': 'true', # SMTP 发送邮件服务器是否使用 SSL,填写 true 或 false 'SMTP_EMAIL': 'xxx@qq.com', # SMTP 发件邮箱 'SMTP_PASSWORD': 'xxxxx', # SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定 'SMTP_NAME': '青龙面板 - 飞牛社区自动打卡', # SMTP 收发件人姓名,可随意填写 'SMTP_TO': 'xxx@qq.com', # SMTP 接收邮件邮箱 } def sign_in(): try: # 签到请求链接右键打卡按钮直接复制替换 response = requests.get('签到请求链接右键打卡按钮直接复制替换', cookies=cookies) if '恭喜您,打卡成功!' in response.text: print('签到详情(打卡成功):\n') get_sign_in_info() elif '您今天已经打过卡了,请勿重复操作!' in response.text: print('签到详情(已经打过卡了):\n') get_sign_in_info() else: print('打卡失败, cookies可能已经过期或站点更新.') smtp(title='飞牛社区自动签到(打卡失败)', content='cookies可能已经过期或站点更新.') # 发送邮件 except Exception as error: print('签到请求失败:', error) smtp(title='飞牛社区自动签到(请求失败)', content=str(error)) # 发送邮件 def get_sign_in_info(): try: response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign&sign=f5da4016', cookies=cookies) soup = BeautifulSoup(response.text, 'html.parser') content = [] # 定义需要查找的模式和选择器 patterns = [ {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'}, {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'}, {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'}, {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'}, {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'}, {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'}, {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'} ] for pattern in patterns: element = soup.select_one(pattern['selector']) if element: # 提取文本并清洗 text = element.get_text() content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}") content_text = '\n'.join(content) print(content_text + '\n') smtp(title='飞牛社区自动签到(成功)', content=str(content_text)) # 发送邮件 except Exception as error: print('获取打卡信息失败:', error) smtp(title='飞牛社区自动签到(获取打卡信息失败)', content=str(error)) # 发送邮件 def smtp(title: str, content: str): """ 使用 SMTP 邮件 推送消息。 """ if ( not push_config.get("SMTP_SERVER") or not push_config.get("SMTP_SSL") or not push_config.get("SMTP_EMAIL") or not push_config.get("SMTP_PASSWORD") or not push_config.get("SMTP_NAME") ): print("SMTP 邮件 的 SMTP_SERVER 或者 SMTP_SSL 或者 SMTP_EMAIL 或者 SMTP_PASSWORD 或者 SMTP_NAME 未设置!!\n取消推送") return print("SMTP 邮件 服务启动") message = MIMEText(content, "plain", "utf-8") message["From"] = formataddr( ( Header(push_config.get("SMTP_NAME"), "utf-8").encode(), push_config.get("SMTP_EMAIL"), ) ) message["To"] = formataddr( ( Header(push_config.get("SMTP_NAME"), "utf-8").encode(), push_config.get("SMTP_TO"), ) ) message["Subject"] = Header(title, "utf-8") try: smtp_server = ( smtplib.SMTP_SSL(push_config.get("SMTP_SERVER")) if push_config.get("SMTP_SSL") == "true" else smtplib.SMTP(push_config.get("SMTP_SERVER")) ) smtp_server.login( push_config.get("SMTP_EMAIL"), push_config.get("SMTP_PASSWORD") ) smtp_server.sendmail( push_config.get("SMTP_EMAIL"), push_config.get("SMTP_EMAIL"), message.as_bytes(), ) smtp_server.close() print("SMTP 邮件 推送成功!") except Exception as e: print(f"SMTP 邮件 推送失败!{e}") if __name__ == '__main__': sign_in() ``` Loading... ## 一、浏览器打开飞牛社区并登录,复制cookie运行以下代码自动获取 ```python import re import json # 输入的cookie字符串 cookie_string = """ """ # 使用正则表达式提取pvRK_2132_saltkey和pvRK_2132_auth saltkey_pattern = r"pvRK_2132_saltkey=([a-zA-Z0-9]+)" auth_pattern = r"pvRK_2132_auth=([a-zA-Z0-9%/]+)" saltkey_match = re.search(saltkey_pattern, cookie_string) auth_match = re.search(auth_pattern, cookie_string) # 提取并输出结果 if saltkey_match and auth_match: cookies = { 'pvRK_2132_saltkey': saltkey_match.group(1), 'pvRK_2132_auth': auth_match.group(1) } print("cookies =", json.dumps(cookies, indent=4)) else: print("没有找到匹配的值!") ``` ## 二、青龙面板Python脚本 ```python import requests from bs4 import BeautifulSoup import smtplib from email.mime.text import MIMEText from email.header import Header from email.utils import formataddr # 填写对应的 Cookie 值 cookies = { "pvRK_2132_saltkey": "xxx", "pvRK_2132_auth": "xxx" } # SMTP 邮件服务配置 push_config = { 'SMTP_SERVER': 'smtp.qq.com:465', # SMTP 发送邮件服务器,形如 smtp.exmail.qq.com:465 'SMTP_SSL': 'true', # SMTP 发送邮件服务器是否使用 SSL,填写 true 或 false 'SMTP_EMAIL': 'xxx@qq.com', # SMTP 发件邮箱 'SMTP_PASSWORD': 'xxxxx', # SMTP 登录密码,也可能为特殊口令,视具体邮件服务商说明而定 'SMTP_NAME': '青龙面板 - 飞牛社区自动打卡', # SMTP 收发件人姓名,可随意填写 'SMTP_TO': 'xxx@qq.com', # SMTP 接收邮件邮箱 } def sign_in(): try: # 签到请求链接右键打卡按钮直接复制替换 response = requests.get('签到请求链接右键打卡按钮直接复制替换', cookies=cookies) if '恭喜您,打卡成功!' in response.text: print('签到详情(打卡成功):\n') get_sign_in_info() elif '您今天已经打过卡了,请勿重复操作!' in response.text: print('签到详情(已经打过卡了):\n') get_sign_in_info() else: print('打卡失败, cookies可能已经过期或站点更新.') smtp(title='飞牛社区自动签到(打卡失败)', content='cookies可能已经过期或站点更新.') # 发送邮件 except Exception as error: print('签到请求失败:', error) smtp(title='飞牛社区自动签到(请求失败)', content=str(error)) # 发送邮件 def get_sign_in_info(): try: response = requests.get('https://club.fnnas.com/plugin.php?id=zqlj_sign&sign=f5da4016', cookies=cookies) soup = BeautifulSoup(response.text, 'html.parser') content = [] # 定义需要查找的模式和选择器 patterns = [ {'name': '最近打卡', 'selector': 'li:-soup-contains("最近打卡")'}, {'name': '本月打卡', 'selector': 'li:-soup-contains("本月打卡")'}, {'name': '连续打卡', 'selector': 'li:-soup-contains("连续打卡")'}, {'name': '累计打卡', 'selector': 'li:-soup-contains("累计打卡")'}, {'name': '累计奖励', 'selector': 'li:-soup-contains("累计奖励")'}, {'name': '最近奖励', 'selector': 'li:-soup-contains("最近奖励")'}, {'name': '当前打卡等级', 'selector': 'li:-soup-contains("当前打卡等级")'} ] for pattern in patterns: element = soup.select_one(pattern['selector']) if element: # 提取文本并清洗 text = element.get_text() content.append(f"{pattern['name']}: {text.split(':')[-1].strip()}") content_text = '\n'.join(content) print(content_text + '\n') smtp(title='飞牛社区自动签到(成功)', content=str(content_text)) # 发送邮件 except Exception as error: print('获取打卡信息失败:', error) smtp(title='飞牛社区自动签到(获取打卡信息失败)', content=str(error)) # 发送邮件 def smtp(title: str, content: str): """ 使用 SMTP 邮件 推送消息。 """ if ( not push_config.get("SMTP_SERVER") or not push_config.get("SMTP_SSL") or not push_config.get("SMTP_EMAIL") or not push_config.get("SMTP_PASSWORD") or not push_config.get("SMTP_NAME") ): print("SMTP 邮件 的 SMTP_SERVER 或者 SMTP_SSL 或者 SMTP_EMAIL 或者 SMTP_PASSWORD 或者 SMTP_NAME 未设置!!\n取消推送") return print("SMTP 邮件 服务启动") message = MIMEText(content, "plain", "utf-8") message["From"] = formataddr( ( Header(push_config.get("SMTP_NAME"), "utf-8").encode(), push_config.get("SMTP_EMAIL"), ) ) message["To"] = formataddr( ( Header(push_config.get("SMTP_NAME"), "utf-8").encode(), push_config.get("SMTP_TO"), ) ) message["Subject"] = Header(title, "utf-8") try: smtp_server = ( smtplib.SMTP_SSL(push_config.get("SMTP_SERVER")) if push_config.get("SMTP_SSL") == "true" else smtplib.SMTP(push_config.get("SMTP_SERVER")) ) smtp_server.login( push_config.get("SMTP_EMAIL"), push_config.get("SMTP_PASSWORD") ) smtp_server.sendmail( push_config.get("SMTP_EMAIL"), push_config.get("SMTP_EMAIL"), message.as_bytes(), ) smtp_server.close() print("SMTP 邮件 推送成功!") except Exception as e: print(f"SMTP 邮件 推送失败!{e}") if __name__ == '__main__': sign_in() ``` 最后修改:2025 年 03 月 27 日 © 允许规范转载 打赏 赞赏作者 支付宝微信 赞 如果觉得我的文章对你有用,请随意赞赏