自动签到天翼云盘,告别繁琐的手动操作

你是否也因为拥有电信手机的福利,而获得了10T的天翼云盘空间,但又不想每天都登录签到?别担心,我为你提供了一个自动签到脚本的解决方案,让你告别烦人的手动操作。

感谢热心观众:felix发现的错误。

为了方便大家使用,特此放上脚本的下载链接:

玩命点我

问题的开始

想象一下,每天早上醒来,你需要打开手机,登录天翼云盘,找到签到入口,然后点击签到按钮。虽然这个过程看似简单,但如果你想要长期坚持每天签到,它可能会变得相当烦琐。而且,有时候你可能会因为忙碌或忘记而错过签到,错失了获得奖励的机会。

这就是这个自动签到脚本诞生的原因。它可以轻松地代替你完成签到任务,让你享受到天翼云盘的优惠,同时又省去了不必要的手动操作。

项目介绍

这个项目是一个简单但非常实用的Python脚本,它可以自动登录你的天翼云盘账户,找到签到入口,并点击签到按钮,完成每日签到任务。它的使用方法也非常简单,只需将脚本上传到你的服务器上,然后设置一个定时任务即可。一旦配置完成,你就可以忘记签到的烦恼,脚本会每天按时为你签到。

项目优势

这个自动签到脚本具有以下几个显著的优势:

1. 自动化操作

脚本完全自动化,不需要手动干预。你只需设置一次,就可以忘记签到的烦恼,每天都能获得奖励。

2. 节省时

手动签到可能会花费你宝贵的时间,而脚本只需要几秒钟就能完成任务,让你有更多时间用于其他事情。

3. 避免错过签到

由于自动定时任务的存在,你再也不会因为忘记签到而错失奖励,始终能够及时签到。

4. 开放源代码

这个脚本的源代码是开放的,你可以根据自己的需求进行修改和定制,以满足特定的需求。

使用方法

要使用这个自动签到脚本,只需按照以下简单的步骤操作:

  1. 将脚本上传到你的服务器上。
  2. 在服务器上创建一个定时任务,设置脚本每天自动执行的时间。
  3. 启动定时任务,让脚本开始自动签到。

不需要任何复杂的配置或技术知识,即可轻松享受自动签到的便利。

代码部分

如果你也想告别繁琐的手动签到,省下更多的时间用于更重要的事情,那就赶紧尝试这个自动签到脚本吧!复制粘贴下面的代码,然后挂起来吧。

import time
import re
import json
import base64
import hashlib
import urllib.parse
import hmac
import rsa
import requests
import random
import smtplib
from email.mime.text import MIMEText
from email.mime.multipart import MIMEMultipart

BI_RM = list("0123456789abcdefghijklmnopqrstuvwxyz")

B64MAP = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"

s = requests.Session()

# 在下面两行的引号内贴上账号(仅支持手机号)和密码
username = "手机号"
password = "密码"

# 用于发送通知的邮箱配置
email_config = {
    "smtp_server": "修改成你的邮箱信息",  # SMTP服务器地址
    "smtp_port": 587,  # SMTP服务器端口号
    "email_address": "修改成你的邮箱信息",  # 发件人邮箱地址
    "email_password": "修改成你的邮箱信息",  # 发件人邮箱密码
    "recipient_email": "修改成你的邮箱信息",  # 收件人邮箱地址
}

if not email_config["email_address"] or not email_config["email_password"]:
    print("发件人邮箱地址或密码为空,无法发送邮件通知")
    exit()

def int2char(a):
    return BI_RM[a]

def b64tohex(a):
    d = ""
    e = 0
    c = 0
    for i in range(len(a)):
        if list(a)[i] != "=":
            v = B64MAP.index(list(a)[i])
            if e == 0:
                e = 1
                d += int2char(v >> 2)
                c = 3 & v
            elif e == 1:
                e = 2
                d += int2char(c << 2 | v >> 4)
                c = 15 & v
            elif e == 2:
                e = 3
                d += int2char(c)
                d += int2char(v >> 2)
                c = 3 & v
            else:
                e = 0
                d += int2char(c << 2 | v >> 4)
                d += int2char(15 & v)
    if e == 1:
        d += int2char(c << 2)
    return d

def rsa_encode(j_rsakey, string):
    rsa_key = f"-----BEGIN PUBLIC KEY-----\n{j_rsakey}\n-----END PUBLIC KEY-----"
    pubkey = rsa.PublicKey.load_pkcs1_openssl_pem(rsa_key.encode())
    result = b64tohex((base64.b64encode(rsa.encrypt(f'{string}'.encode(), pubkey))).decode())
    return result

def calculate_md5_sign(params):
    return hashlib.md5('&'.join(sorted(params.split('&'))).encode('utf-8')).hexdigest()

def login(username, password):
    url = ""
    urlToken = "https://m.cloud.189.cn/udb/udb_login.jsp?pageId=1&pageKey=default&clientType=wap&redirectURL=https://m.cloud.189.cn/zhuanti/2021/shakeLottery/index.html"
    s = requests.Session()
    r = s.get(urlToken)
    pattern = r"https?://[^\s'\"]+"  
    match = re.search(pattern, r.text)  
    if match:
        url = match.group()  
    else:
        print("没有找到url")

    r = s.get(url)
    pattern = r"]*href=\"([^\"]+)\""
    match = re.search(pattern, r.text)
    if match:
        href = match.group(1)
    else:
        print("没有找到href链接")

    r = s.get(href)
    captchaToken = re.findall(r"captchaToken' value='(.+?)'", r.text)[0]
    lt = re.findall(r'lt = "(.+?)"', r.text)[0]
    returnUrl = re.findall(r"returnUrl= '(.+?)'", r.text)[0]
    paramId = re.findall(r'paramId = "(.+?)"', r.text)[0]
    j_rsakey = re.findall(r'j_rsaKey" value="(\S+)"', r.text, re.M)[0]
    s.headers.update({"lt": lt})

    username = rsa_encode(j_rsakey, username)
    password = rsa_encode(j_rsakey, password)
    url = "https://open.e.189.cn/api/logbox/oauth2/loginSubmit.do"
    headers = {
        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/76.0',
        'Referer': 'https://open.e.189.cn/',
    }
    data = {
        "appKey": "cloud",
        "accountType": '01',
        "userName": f"{{RSA}}{username}",
        "password": f"{{RSA}}{password}",
        "validateCode": "",
        "captchaToken": captchaToken,
        "returnUrl": returnUrl,
        "mailSuffix": "@189.cn",
        "paramId": paramId
    }
    r = s.post(url, data=data, headers=headers, timeout=5)
    if (r.json()['result'] == 0):
        print(r.json()['msg'])
    else:
        print(r.json()['msg'])
    redirect_url = r.json()['toUrl']
    r = s.get(redirect_url)
    return s

def sign_in(s):
    rand = str(round(time.time() * 1000))
    surl = f'https://api.cloud.189.cn/mkt/userSign.action?rand={rand}&clientType=TELEANDROID&version=8.6.3&model=SM-G930K'
    url = f'https://m.cloud.189.cn/v2/drawPrizeMarketDetails.action?taskId=TASK_SIGNIN&activityId=ACT_SIGNIN'
    url2 = f'https://m.cloud.189.cn/v2/drawPrizeMarketDetails.action?taskId=TASK_SIGNIN_PHOTOS&activityId=ACT_SIGNIN'
    url3 = f'https://m.cloud.189.cn/v2/drawPrizeMarketDetails.action?taskId=TASK_2022_FLDFS_KJ&activityId=ACT_SIGNIN'
    headers = {
        'User-Agent': 'Mozilla/5.0 (Linux; Android 5.1.1; SM-G930K Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/74.0.3729.136 Mobile Safari/537.36 Ecloud/8.6.3 Android/22 clientId/355325117317828 clientModel/SM-G930K imsi/460071114317824 clientChannelId/qq proVersion/1.0.6',
        "Referer": "https://m.cloud.189.cn/zhuanti/2016/sign/index.jsp?albumBackupOpened=1",
        "Host": "m.cloud.189.cn",
        "Accept-Encoding": "gzip, deflate",
    }
    response = s.get(surl, headers=headers)
    netdiskBonus = response.json()['netdiskBonus']
    if (response.json()['isSign'] == "false"):
        print(f"未签到,签到获得{netdiskBonus}M空间")
        res1 = f"未签到,签到获得{netdiskBonus}M空间"
    else:
        print(f"已经签到过了,签到获得{netdiskBonus}M空间")
        res1 = f"已经签到过了,签到获得{netdiskBonus}M空间"

    def draw_prize(url, description_prefix):
        response = s.get(url, headers=headers)
        if ("errorCode" in response.text):
            print(response.text)
            return ""
        else:
            description = response.json()['description']
            print(f"{description_prefix}{description}")
            return f"{description_prefix}{description}"

    res2 = draw_prize(url, "抽奖获得")
    res3 = draw_prize(url2, "抽奖获得")
    res4 = draw_prize(url3, "链接3抽奖获得")

    return res1, res2, res3, res4

def send_email_notification(res1, res2, res3, res4):
    msg = MIMEMultipart()
    msg["From"] = email_config["email_address"]
    msg["To"] = email_config["recipient_email"]
    msg["Subject"] = "签到通知"

    body = f"签到结果:\n{res1}\n{res2}{res3}{res4}"
    msg.attach(MIMEText(body, "plain"))

    try:
        server = smtplib.SMTP(email_config["smtp_server"], email_config["smtp_port"])
        server.starttls()
        server.login(email_config["email_address"], email_config["email_password"])
        server.sendmail(email_config["email_address"], email_config["recipient_email"], msg.as_string())
        server.quit()
        print("邮件通知已发送")
    except Exception as e:
        print(f"邮件通知发送失败:{str(e)}")

def main():
    s = login(username, password)
    res1, res2, res3, res4 = sign_in(s)
    send_email_notification(res1, res2, res3, res4)

def lambda_handler(event, context):
    main()

def main_handler(event, context):
    main()

def handler(event, context):
    main()

if __name__ == "__main__":
    main()

让自动化精神帮助你解放双手,享受更多的天翼云盘福利吧!

本文由作者 王大神 原创发布于 大神网的AI博客。

转载请注明作者:王大神

原文出处:自动签到天翼云盘,告别繁琐的手动操作

(0)
打赏 微信扫一扫 微信扫一扫
上一篇 2023年11月5日
下一篇 2023年11月5日

相关推荐

  • 如何优化阿里云盘自动签到脚本

    阿里云盘是一个功能强大的云存储平台,它允许您存储和分享文件。同时,阿里云盘还提供了每日签到功能,可以获得一些小奖励。如果您是一个经常使用阿里云盘的用户,那么自动签到脚本可以帮助您自动完成签到,省去了…

    2023年10月8日
    00127
  • 下面是一个简单的 Python 程序,它可以帮助你躺着赚钱。

    在计算机编程的世界中,有许多有趣的程序和项目,但有一个特别引人注目的想法是能够躺在床上或沙发上,同时通过编写代码来赚钱。尽管这个想法听起来有点不切实际,但我们可以编写一个示例程序来模拟这个过程,探讨…

    2022年12月14日
    0074
  • Windows10 定时关机脚本

    有时候,我们需要让计算机在一段时间后自动关闭,可能是为了下载大文件、运行长时间的任务,或者只是为了省电。Windows 10 自带了定时关机的功能,但不是每个人都熟悉如何使用它。在本教程中,我们将介绍一个简单的…

    2023年3月6日
    00173
  • 自动更新 DNS 解析工具:DDNS

    如果你需要自动将域名解析到本机的 IP 地址,支持 IPv4 和 IPv6,并且希望能够在内网和公网 IP 之间切换,那么你可以考虑使用 DDNS 这个工具。DDNS 具有许多强大的功能,包括代理模式和自动创建域名记录,同时支持…

    2023年9月10日
    00108
  • Qexo:在线Hexo编辑器,解锁博客创作的全新体验

    在数字时代,博客成为了分享知识、表达观点和展示创作才华的重要平台。然而,对于许多博主来说,创建和管理博客可能会变得复杂和繁琐。但现在,有了Qexo,一切都变得轻松、快捷、强大、美观。 Qexo的独特之处 Qexo…

    2023年11月4日
    00112
  • 用深度学习将设计草图转换成HTML和CSS代码

    在计算机科学和人工智能领域的快速发展下,我们见证了各种令人兴奋的技术应用。其中之一是深度学习,它已经改变了我们对图像处理和自然语言处理的认识。本文将介绍一个令人兴奋的项目,该项目使用深度学习将设计草…

    2023年10月7日
    00107
  • 如何使用Python自动发送批量邮件

    在现代社交网络和电子通信的时代,电子邮件仍然是一种重要的沟通工具。无论是向客户发送营销邮件,还是向团队成员发送通知,自动化发送批量邮件是提高效率的关键。在本教程中,我们将学习如何使用Python编写一个自…

    2023年10月4日
    0068
  • 创建自动化试卷生成工具:使用Python和OpenPyXL

    你是否曾经需要为学生创建大量的试卷,但又不想手动编写每一份试卷?在这个教程中,我们将使用Python编写一个自动化试卷生成工具,可以根据题库随机生成试卷,并保存为Word文档。无需编程经验,我们将一步步引导你…

    2023年9月13日
    00135
  • 自动化阿里云盘签到和奖励领取教程

    在我们深入了解如何自动化阿里云盘签到和奖励领取之前,让我与你分享一个小故事。假设你是一名繁忙的职业人士,每天都要面对繁琐的工作和生活任务。你拥有一个阿里云盘账号,每天都需要手动签到,以获取宝贵的奖励…

    2023年9月19日
    00386
  • 让Python成为你的工作助手:工作自动化的终极指南

    你是否曾经感到工作负担沉重,每天都在处理重复性任务,而无法集中精力完成更有价值的工作?如果是的话,那么Python可能会成为你的工作救星。Python是一种强大的编程语言,拥有丰富的库和工具,可以帮助你自动化各…

    2023年9月14日
    00126

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注

评论列表(19条)

  • asdf
    asdf 2023年11月18日 上午10:31

    出错,
    Traceback (most recent call last):
    File “/root/ty.py”, line 8, in
    import rsa
    ModuleNotFoundError: No module named ‘rsa’

    注释掉第8行,也是出一堆错误

    • 王大神
      王大神 2023年11月18日 上午10:33

      @asdfNo module named ‘rsa’
      安装一下
      pip install rsa

    • 王大神
      王大神 2023年11月18日 上午10:35

      @asdf我看你的脚本目录是/root/ty.py
      如果用root用户运行,要用root用户pip install

    • asdf
      asdf 2023年11月18日 下午1:39

      @王大神安装了模块,还是出错。

      root@OpenWrt:~# python ty.py
      Traceback (most recent call last):
      File “/root/ty.py”, line 204, in
      main()
      File “/root/ty.py”, line 190, in main
      s = login(username, password)
      File “/root/ty.py”, line 99, in login
      captchaToken = re.findall(r”captchaToken’ value='(.+?)'”, r.text)[0]
      IndexError: list index out of range

    • 王大神
      王大神 2023年11月18日 下午3:19

      @asdfcaptchaTokens = re.findall(r”captchaToken’ value='(.+?)'”, r.text)
      if captchaTokens:
      captchaToken = captchaTokens[0]
      else:
      print(“未找到captchaToken字段”😉
      # 可以添加适当的处理代码

    • felix
      felix 2023年11月19日 上午1:56

      @王大神我也遇到同样错误,captchaToken、lt这些都没获取到,后续接口请求应该走不通了吧。
      我把r.text答应出来是乱码。
      大佬你那边是能跑的吗

    • 王大神
      王大神 2023年11月19日 上午9:25

      @felix我自己测试了,没什么问题,你的python版本,运行环境是linux还是windows?

    • felix
      felix 2023年11月19日 上午10:34

      @王大神我Linux和Windows都试了,一样的报错。windows python 版本3.12,Linux python版本3.10

    • felix
      felix 2023年11月19日 上午10:35

      @王大神是不是最近云盘的系统更新了?你现在还能运行吗?

    • 王大神
      王大神 2023年11月19日 上午10:38

      @felix正常运行。刚还自动签到了。

    • felix
      felix 2023年11月19日 上午10:58

      @王大神找到原因了:这行代码pattern = r”]*href=\”([^\”]+)\”” ,匹配到的链接是一个图片,所以输出乱码。
      应该换成pattern =r”]*href=\”([^\”]+)\””才能匹配到目标url

    • felix
      felix 2023年11月19日 上午11:03

      @王大神改成这个pattern =r”]*href=\”([^\”]+)\””

    • felix
      felix 2023年11月19日 上午11:04
    • 王大神
      王大神 2023年11月19日 上午11:07

      @felix是的,markdown格式化之后被吃掉了。

    • 王大神
      王大神 2023年11月19日 上午11:08

      @felix以后代码放到网盘里。

    • 王大神
      王大神 2023年11月19日 上午11:08

      @felix感谢指正

    • felix
      felix 2023年11月19日 上午11:10

      @王大神pattern =r”《a id=\”j-tab-login-link\”[^》]*href=\”([^\”]+)\””
      中文尖括号替换成英文的

    • 王大神
      王大神 2023年11月19日 上午11:25

      @felix代码高亮的问题。换了很多插件都这样显示。回头改代码了。