上一主题 下一主题
ScriptCat,新一代的脚本管理器脚本站,与全世界分享你的用户脚本油猴脚本开发指南教程目录
返回列表 发新帖

求一个壁纸网站签到脚本

[复制链接]

该用户从未签到

1

主题

0

回帖

3

积分

助理工程师

积分
3
发表于 2026-7-23 20:21:21 | 显示全部楼层 | 阅读模式

求一个壁纸网站的签到脚本https://www.3gbizhi.com/

该用户从未签到

0

主题

3

回帖

7

积分

助理工程师

积分
7
发表于 3 天前 | 显示全部楼层
不太会写js的浏览器脚本 但是会写py的 放青龙用还可以
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. """
  4. =============================================================
  5. 3gbizhi.com 自动签到脚本(支持多账号)
  6. =============================================================
  7. 用法:
  8.      1. 安装依赖:pip install requests beautifulsoup4
  9.      2. 设置账号密码(任选一种):
  10.         a) 环境变量方式:
  11.             Windows: set 3gbizhi=账号1#密码1&账号2#密码2
  12.             Mac/Linux: export 3gbizhi="账号1#密码1&账号2#密码2"
  13.         b) 直接修改本脚本最下方的 accounts 列表。
  14.      3. 运行脚本:python 3gbizhi_sign.py
  15. =============================================================
  16. """

  17. import requests
  18. from bs4 import BeautifulSoup
  19. import os
  20. import sys


  21. def login_and_sign(username, password):
  22.     """
  23.     单个账号:登录 + 签到 + 查询签到详情
  24.     参数:username (str) 用户名
  25.           password (str) 密码
  26.     返回:True 成功,False 失败
  27.     """
  28.     # 创建一个会话,自动管理 cookie
  29.     session = requests.Session()
  30.     # 设置通用的请求头,伪装成浏览器
  31.     session.headers.update({
  32.         "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:153.0) Gecko/20100101 Firefox/153.0",
  33.         "Accept": "application/json, text/javascript, */*; q=0.01",
  34.         "Accept-Language": "zh-CN,zh;q=0.9,en;q=0.5",
  35.         "Origin": "https://www.3gbizhi.com",
  36.     })

  37.     print(f"\n>> 开始处理账号:{username}")

  38.     # ---------- 第1步:获取登录用的 __token__ ----------
  39.     print("    [1/4] 正在获取登录令牌...")
  40.     token = None
  41.     try:
  42.         # 尝试从登录页面或首页提取 __token__
  43.         for url in ["https://www.3gbizhi.com/user/login.html", "https://www.3gbizhi.com/"]:
  44.             try:
  45.                 resp = session.get(url, timeout=10)
  46.                 resp.encoding = "utf-8"  # 避免乱码
  47.                 soup = BeautifulSoup(resp.text, "html.parser")
  48.                 # 先找表单隐藏域
  49.                 token_input = soup.find("input", {"name": "__token__"})
  50.                 if token_input and token_input.get("value"):
  51.                     token = token_input["value"]
  52.                     break
  53.                 # 再找 meta 标签
  54.                 meta_token = soup.find("meta", {"name": "__token__"})
  55.                 if meta_token and meta_token.get("content"):
  56.                     token = meta_token["content"]
  57.                     break
  58.             except Exception:
  59.                 continue
  60.     except Exception as e:
  61.         print(f"    [错误] 网络请求失败:{e}")
  62.         return False

  63.     if not token:
  64.         print("    [错误] 无法获取登录令牌,网站可能改版或网络不通。")
  65.         return False
  66.     print("    [成功] 登录令牌获取成功。")

  67.     # ---------- 第2步:发送登录请求 ----------
  68.     print("    [2/4] 正在登录...")
  69.     login_url = "https://www.3gbizhi.com/api/user/login"
  70.     login_data = {
  71.         "__token__": token,
  72.         "account": username,
  73.         "password": password,
  74.     }
  75.     login_headers = {
  76.         "Content-Type": "application/x-www-form-urlencoded; charset=UTF-8",
  77.         "Referer": "https://www.3gbizhi.com/user/login.html",
  78.         "X-Requested-With": "XMLHttpRequest",
  79.     }
  80.     try:
  81.         resp = session.post(login_url, data=login_data, headers=login_headers, timeout=10)
  82.         result = resp.json()
  83.     except Exception as e:
  84.         print(f"    [错误] 登录请求失败:{e}")
  85.         return False

  86.     if result.get("code") != 1:
  87.         print(f"    [失败] 登录失败:{result.get('msg', '未知错误')}")
  88.         return False

  89.     # 保存服务器返回的用户信息和 token
  90.     userinfo = result["data"]["userinfo"]
  91.     user_id = userinfo["user_id"]
  92.     auth_token = userinfo["token"]
  93.     nickname = userinfo.get("nickname", username)

  94.     # 将认证信息写入 cookie(关键步骤)
  95.     session.cookies.set("uid", str(user_id), domain="www.3gbizhi.com", path="/")
  96.     session.cookies.set("token", auth_token, domain="www.3gbizhi.com", path="/")
  97.     print(f"    [成功] 登录成功!昵称:{nickname}")

  98.     # ---------- 第3步:签到 ----------
  99.     print("    [3/4] 正在签到...")
  100.     sign_url = "https://www.3gbizhi.com/api/user/setUserSignin"
  101.     sign_headers = {
  102.         "Referer": f"https://www.3gbizhi.com/user/{username}/sign.html",
  103.         "X-Requested-With": "XMLHttpRequest",
  104.     }
  105.     try:
  106.         resp = session.post(sign_url, headers=sign_headers, timeout=10)
  107.         sign_result = resp.json()
  108.     except Exception as e:
  109.         print(f"    [错误] 签到请求失败:{e}")
  110.         return False

  111.     if sign_result.get("code") == 1:
  112.         print(f"    [成功] {sign_result.get('msg')}")
  113.         data = sign_result["data"]
  114.         print(f"        - 本次获得积分:{data.get('points')}")
  115.         print(f"        - 当前总积分:{data.get('current_score')}")
  116.         print(f"        - 连续签到天数:{data.get('continuous_days')} 天")
  117.     else:
  118.         print(f"    [提示] 签到结果:{sign_result.get('msg', '可能今天已经签过了')}")
  119.         # 即使返回非1,也不代表完全失败(可能是重复签到),继续查询详情

  120.     # ---------- 第4步:查询签到详情 ----------
  121.     print("    [4/4] 正在查询签到详情...")
  122.     info_url = "https://www.3gbizhi.com/api/user/getUserSignin"
  123.     info_headers = {
  124.         "Referer": f"https://www.3gbizhi.com/user/{username}/sign.html",
  125.     }
  126.     try:
  127.         resp = session.get(info_url, headers=info_headers, timeout=10)
  128.         info = resp.json()
  129.         if info.get("code") == 1:
  130.             d = info["data"]
  131.             print(f"        - 本周已签到:{d.get('week_signin_days')} 天")
  132.             print(f"        - 本月已签到:{d.get('month_signin_days')} 天")
  133.             print(f"        - 明日预计积分:{d.get('next_day_points')}")
  134.         else:
  135.             print("    [提示] 查询详情返回异常,但签到可能已成功。")
  136.     except Exception as e:
  137.         print(f"    [警告] 查询签到详情失败:{e}")

  138.     return True


  139. def parse_accounts_from_env(env_str):
  140.     """
  141.     解析环境变量中的账号字符串
  142.     格式:user1#pass1&user2#pass2
  143.     返回:[(user, pass), ...]
  144.     """
  145.     accounts = []
  146.     if not env_str:
  147.         return accounts
  148.     for pair in env_str.split("&"):
  149.         pair = pair.strip()
  150.         if "#" in pair:
  151.             user, pwd = pair.split("#", 1)
  152.             accounts.append((user.strip(), pwd.strip()))
  153.     return accounts


  154. def main():
  155.     # 打印欢迎信息
  156.     print("=" * 60)
  157.     print("         3gbizhi.com 自动签到脚本 v1.0")
  158.     print("=" * 60)
  159.     print("正在检查账号配置...\n")

  160.     # 优先从环境变量读取(变量名:3gbizhi)
  161.     env_str = os.environ.get("3gbizhi", "")
  162.     accounts = []

  163.     if env_str:
  164.         print("[配置] 检测到环境变量 '3gbizhi',将使用环境变量中的账号。")
  165.         accounts = parse_accounts_from_env(env_str)
  166.         if not accounts:
  167.             print("[错误] 环境变量格式不正确!")
  168.             print("       正确格式:账号1#密码1&账号2#密码2")
  169.             print("       例如:zhangsan#123456&lisi#abcdef")
  170.             sys.exit(1)
  171.     else:
  172.         print("[配置] 未检测到环境变量,将使用脚本内硬编码的账号。")
  173.         # ==============================================
  174.         # !!!请在这里修改成你自己的账号密码!!!
  175.         # ==============================================
  176.         accounts = [
  177.             ("你的账号1", "你的密码1"),   # 替换成真实的账号密码
  178.             ("你的账号2", "你的密码2"),   # 不需要多个账号就删掉这一行
  179.         ]
  180.         # 检查是否还是默认的示例值
  181.         if len(accounts) == 1 and accounts[0][0] == "你的账号1":
  182.             print("\n[重要提醒] 你还没有修改硬编码的账号密码!")
  183.             print("请打开本脚本,找到 accounts 列表,把里面的 '你的账号1' '你的密码1' 改成真实的账号密码。")
  184.             print("或者使用环境变量方式设置账号(更推荐),详细说明见脚本顶部注释。")
  185.             sys.exit(1)

  186.     # 开始逐个处理
  187.     success_count = 0
  188.     total = len(accounts)
  189.     for i, (user, pwd) in enumerate(accounts, 1):
  190.         print(f"\n{'='*30} 账号 {i}/{total} {'='*30}")
  191.         try:
  192.             if login_and_sign(user, pwd):
  193.                 success_count += 1
  194.         except Exception as e:
  195.             print(f"[严重错误] 处理账号 {user} 时发生未捕获异常:{e}")

  196.     # 最终总结
  197.     print("\n" + "=" * 60)
  198.     print(f"处理完成!成功 {success_count} 个,失败 {total - success_count} 个。")
  199.     print("=" * 60)


  200. if __name__ == "__main__":
  201.     main()
复制代码
回复

使用道具 举报

该用户从未签到

0

主题

1

回帖

1

积分

助理工程师

积分
1
发表于 3 天前 | 显示全部楼层
你可以试试用tabbit,有个脚本妙招直接用ai生成的,还挺方便
回复

使用道具 举报

发表回复

本版积分规则