├── .github └── workflows │ └── run.yml ├── .gitignore ├── C189Checkin.py ├── README.md └── requirements.txt /.github/workflows/run.yml: -------------------------------------------------------------------------------- 1 | name: Cloud189Checkin 2 | 3 | on: 4 | push: 5 | branches: [ main ] 6 | pull_request: 7 | branches: [ main ] 8 | watch: 9 | types: started 10 | schedule: 11 | - cron: 1 0 * * * 12 | 13 | jobs: 14 | Cloud189Checkin: 15 | runs-on: ubuntu-latest 16 | 17 | steps: 18 | - uses: actions/checkout@v2 19 | 20 | - name: 'setup python' 21 | uses: actions/setup-python@master 22 | with: 23 | python-version: 3.7 24 | 25 | - name: requirements 26 | run: | 27 | pip3 install -r requirements.txt 28 | 29 | - name: Checkin 30 | run: | 31 | # Start Checkin 32 | WorkWeiBot="${{ secrets.WWBOT }}" 33 | DingDingBot="${{ secrets.DDBOT }}" 34 | SCKEY="${{ secrets.SCKEY }}" 35 | 36 | function WorkWei() 37 | { 38 | echo -n "企业微信机器人:" 39 | curl -s "${WorkWeiBot}" \ 40 | -H 'Content-Type: application/json' \ 41 | -d ' 42 | { 43 | "msgtype": "text", 44 | "text": { 45 | "content": "'"`date "+%F %T %A"`$1"'" 46 | } 47 | }' 48 | echo . 49 | } 50 | function DingDing() 51 | { 52 | echo -n "钉钉机器人:" 53 | curl -s "${DingDingBot}" \ 54 | -H 'Content-Type: application/json' \ 55 | -d ' 56 | { 57 | "msgtype": "text", 58 | "text": { 59 | "content": "'"`date "+%F %T %A"`$1"'" 60 | } 61 | }' 62 | echo . 63 | } 64 | function FTQQ() 65 | { 66 | echo -n "Server酱:" 67 | url="https://sc.ftqq.com/${SCKEY}.send" 68 | data="`date "+%F %T %A"`\n$2" 69 | n=' 70 | ' 71 | n1='\\n' 72 | data=${data//${n1}/${n}${n}} 73 | data='text='"$1"'&desp='"${data}" 74 | 75 | curl -s "${url}" \ 76 | -d "${data}" 77 | echo . 78 | } 79 | 80 | user="${{ secrets.USER }}" 81 | pwd="${{ secrets.PWD }}" 82 | user_list=() 83 | pwd_list=() 84 | 85 | for u in ${user[*]} 86 | do 87 | user_list[${#user_list[*]}]=${u} 88 | done 89 | 90 | for p in ${pwd[*]} 91 | do 92 | pwd_list[${#pwd_list[*]}]=${p} 93 | done 94 | 95 | user_num=${#user_list[*]} 96 | pwd_num=${#pwd_list[*]} 97 | 98 | if [ $user_num != $pwd_num ];then 99 | echo "账号和密码个数不对应" 100 | exit 1 101 | else 102 | echo "共有 $user_num 个账号等待签到" 103 | fi 104 | 105 | random_time=$(($RANDOM % 5 + 1)) 106 | for ((i=0;i<$user_num;i++)) 107 | do 108 | 109 | echo "倒计时 ${random_time} 分钟后开始签到" 110 | for((j=0;j<${random_time};j++)); 111 | do 112 | echo "$[${random_time}-$j]" 113 | sleep 1m 114 | done 115 | echo "0" 116 | 117 | echo "----------" 118 | echo "签到账号$(($i+1))" 119 | r=`python3 C189Checkin.py <> 2) 86 | c = 3 & v 87 | elif 1 == e: 88 | e = 2 89 | d += int2char(c << 2 | v >> 4) 90 | c = 15 & v 91 | elif 2 == e: 92 | e = 3 93 | d += int2char(c) 94 | d += int2char(v >> 2) 95 | c = 3 & v 96 | else: 97 | e = 0 98 | d += int2char(c << 2 | v >> 4) 99 | d += int2char(15 & v) 100 | if e == 1: 101 | d += int2char(c << 2) 102 | return d 103 | 104 | 105 | def rsa_encode(j_rsakey, string): 106 | rsa_key = f"-----BEGIN PUBLIC KEY-----\n{j_rsakey}\n-----END PUBLIC KEY-----" 107 | pubkey = rsa.PublicKey.load_pkcs1_openssl_pem(rsa_key.encode()) 108 | result = b64tohex((base64.b64encode(rsa.encrypt(f'{string}'.encode(), pubkey))).decode()) 109 | return result 110 | 111 | def calculate_md5_sign(params): 112 | return hashlib.md5('&'.join(sorted(params.split('&'))).encode('utf-8')).hexdigest() 113 | 114 | def login(username, password): 115 | url = "https://cloud.189.cn/udb/udb_login.jsp?pageId=1&redirectURL=/main.action" 116 | r = s.get(url) 117 | captchaToken = re.findall(r"captchaToken' value='(.+?)'", r.text)[0] 118 | lt = re.findall(r'lt = "(.+?)"', r.text)[0] 119 | returnUrl = re.findall(r"returnUrl = '(.+?)'", r.text)[0] 120 | paramId = re.findall(r'paramId = "(.+?)"', r.text)[0] 121 | j_rsakey = re.findall(r'j_rsaKey" value="(\S+)"', r.text, re.M)[0] 122 | s.headers.update({"lt": lt}) 123 | 124 | username = rsa_encode(j_rsakey, username) 125 | password = rsa_encode(j_rsakey, password) 126 | url = "https://open.e.189.cn/api/logbox/oauth2/loginSubmit.do" 127 | headers = { 128 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:74.0) Gecko/20100101 Firefox/76.0', 129 | 'Referer': 'https://open.e.189.cn/', 130 | } 131 | data = { 132 | "appKey": "cloud", 133 | "accountType": '01', 134 | "userName": f"{{RSA}}{username}", 135 | "password": f"{{RSA}}{password}", 136 | "validateCode": "", 137 | "captchaToken": captchaToken, 138 | "returnUrl": returnUrl, 139 | "mailSuffix": "@189.cn", 140 | "paramId": paramId 141 | } 142 | r = s.post(url, data=data, headers=headers, timeout=5) 143 | if(r.json()['result'] == 0): 144 | print(r.json()['msg']) 145 | else: 146 | print(r.json()['msg']) 147 | return "error" 148 | redirect_url = r.json()['toUrl'] 149 | r = s.get(redirect_url) 150 | return s 151 | 152 | if __name__ == "__main__": 153 | main() 154 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Cloud189Checkin 2 | forked from peng4740/Cloud189Checkin-Actions 3 | 天翼云盘每天签到1次,抽奖2次 4 | 5 | 登录看的以下项目: 6 | > [Cloud189](https://github.com/Dawnnnnnn/Cloud189) 7 | > [cloud189](https://github.com/Aruelius/cloud189) 8 | 9 | # Github Actions说明 10 | ## 一、Fork此仓库 11 | ![](http://tu.yaohuo.me/imgs/2020/06/f059fe73afb4ef5f.png) 12 | ## 二、设置账号密码 13 | 添加名为**USER**、**PWD**、**WWBOT**(可选)、**DDBOT**(可选)、**SCKEY**(可选)的变量 14 | 值分别为**账号**、**密码**、**企业微信群聊机器人的url地址**、**钉钉群聊机器人的url地址**(在钉钉中创建时,验证方式选关键字,填入“签到”)、**Server酱的KEY** 15 | 多账号时账号密码一行一个一一对应 16 | 示例: 17 | **USER** 18 | ``` 19 | 123456 20 | 24678 21 | ``` 22 | **PWD** 23 | ``` 24 | cxkjntm 25 | jntmcxk 26 | ``` 27 | 28 | ![](http://tu.yaohuo.me/imgs/2020/06/748bf9c0ca6143cd.png) 29 | ![](http://tu.yaohuo.me/imgs/2020/06/af2013b1ef5d8430.png) 30 | ![](http://tu.yaohuo.me/imgs/2020/06/09c22adcec7b5d81.png) 31 | 32 | 33 | ## 三、启用Action 34 | 1 点击**Action**,再点击**I understand my workflows, go ahead and enable them** 35 | 2 修改任意文件后提交一次 36 | ![](http://tu.yaohuo.me/imgs/2020/06/34ca160c972b9927.png) 37 | 38 | ## 四、查看运行结果 39 | Actions > Cloud189Checkin > build 40 | 能看到如下图所示,表示成功 41 | ![](http://tu.yaohuo.me/imgs/2020/06/b9e596c99f3835e0.png) 42 | 43 | 此后,将会在每天9:01开始签到 44 | 若有需求,可以在[.github/workflows/run.yml]中自行修改 45 | 46 | ## 可能遇到的问题 47 | - 1. 验证码错误 48 | 首先考虑是不是密码错误 49 | 其次查看是否已经关闭设备锁 50 | - 2. 暂无 51 | 52 | ## 关于泄露手机号 53 | 本版本会打印手机号前3位与后4号,介意的请去py中修改:帐号下面那一行,前面加#号注释。 54 | 55 | ## 关于签到结果通知 56 | 企业微信机器人、钉钉机器人、方糖Server酱,3个加一个就好了,当然你也可以不加或全加 57 | 原peng4740的程序只是出错时通知,且是分别每个错通知,比较凌乱。现在改为不管签到成功还是出错,都会通知,这样也方便知道今天确实Action了,Github前些日子全改手动开启了,估计很多人都断签了。 58 | **企业微信机器人、钉钉机器人、Server酱** 59 | 在相应的 Secret 里配置,在下次运行的时候会开始使用 60 | -------------------------------------------------------------------------------- /requirements.txt: -------------------------------------------------------------------------------- 1 | requests 2 | rsa --------------------------------------------------------------------------------