Github的免费计算资源,来做个自动网易云签到吧

导语

新的一天,从手把手带大家一起来白嫖一波Github的计算资源开始。
白嫖的主要原理是利用Github的Actions功能,该功能于2018年10月推出。关于它的详细介绍,可以参见:

https://docs.github.com/en/actions

废话不多说,让我们愉快地开始白嫖吧~


开发工具

Python版本:3.6.4
Github账号一枚

python第三方库

requests模块;
DecryptLogin模块;
以及一些python自带的模块。


白嫖教程

先来简单介绍一下Github的Actions吧,以免各位小伙伴一头雾水。按照官方自己的定义,就是:

Focus on what matters: code.
With GitHub Actions you can automate your workflow from idea to production.

说白了,Actions就是一系列的操作,开发者可以通过定义Actions来让你的日常开发流程中的很多事情可以自动化起来。而对于白嫖党来说,我们只需要知道,有了这个功能,我们就可以愉快地白嫖Github的计算资源来干一些我们想干的事情啦。比如说:

  • 各大网站、论坛的每日自动签到;
  • 每天给自己的邮箱发天气预报/笑话等;
  • 下载需要fq才能看到的视频;
  • 监控某个人是否发了微博,如果发了就邮件/短信通知自己等等。

上面只是我灵机一动想到的几个还算有趣的点子,大家也可以充分发挥自己的脑回路,来花式地白嫖Github的计算资源。

首先,新建一个repo:
Github的免费计算资源,来做个自动网易云签到吧_第1张图片
然后把我们的自动签到脚本提交到这个repo上去(需要在之前那个版本的基础上做一点小的修改,即改变读取用户名密码的方式):

import os
import re
from DecryptLogin import login
from DecryptLogin.platforms.music163 import Cracker

'''网易云音乐自动签到'''
class NeteaseSignin():
    def __init__(self, username, password, **kwargs):
        self.username = username
        self.session = NeteaseSignin.login(username, password)
        self.csrf = re.findall('__csrf=(.*?) for', str(self.session.cookies))[0]
        self.cracker = Cracker()
        self.headers = {
                        'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.130 Safari/537.36',
                        'Content-Type': 'application/x-www-form-urlencoded',
                        'Referer': 'http://music.163.com/discover',
                        'Accept': '*/*'
                    }
    '''外部调用'''
    def run(self):
        # 签到接口
        signin_url = 'https://music.163.com/weapi/point/dailyTask?csrf_token=' + self.csrf
        # 模拟签到(typeid为0代表APP上签到, 为1代表在网页上签到)
        typeids = [0, 1]
        for typeid in typeids:
            client_name = 'Web端' if typeid == 1 else 'APP端'
            # --构造请求获得响应
            data = {
                        'type': typeid
                    }
            data = self.cracker.get(data)
            res = self.session.post(signin_url, headers=self.headers, data=data)
            res_json = res.json()
            # --判断签到是否成功
            if res_json['code'] == 200:
                print('[INFO]: 账号%s在%s签到成功...' % (self.username, client_name))
            else:
                print('[INFO]: 账号%s在%s签到失败, 原因: %s...' % (self.username, client_name, res_json.get('msg')))
    '''模拟登录'''
    @staticmethod
    def login(username, password):
        lg = login.Login()
        _, session = lg.music163(username, password)
        return session

'''run'''
if __name__ == '__main__':
    username = os.environ["NETEASE_USERNAME"]
    password = os.environ["NETEASE_PASSWORD"]
    sign_in = NeteaseSignin(username=username, password=password)
    sign_in.run()

接着,来定义一下Github的Actions,让它每天执行一次就可以了。具体而言,就是新建一个action.yml文件,内容如下:

name: 'Netease sign in'

on:
  push:
    branches: 
      - master
  schedule:
    - cron: '0 5 * * *'

jobs:
  netease:
    runs-on: ubuntu-latest
    steps:
    - name: 'Checkout codes'
      uses: actions/checkout@v2
    - name: 'Set python'
      uses: actions/setup-python@v1
      with:
        python-version: '3.x'
    - name: 'Install dependencies'
      run: python -m pip install --upgrade DecryptLogin
    - name: 'signin'
      env:
        NETEASE_USERNAME: ${{ secrets.NETEASE_USERNAME }}
        NETEASE_PASSWORD: ${{ secrets.NETEASE_PASSWORD }}
      run: python signin.py

on字段用来定义脚本的触发方式,这里我们定义的是每次push操作后或者每天国际标准时间5点执行:

on:
  push:
    branches: 
      - master
  schedule:
    - cron: '0 5 * * *'

后面的内容,就是定义我们脚本的运行环境,运行所需的依赖包以及运行使用的命令了。比较简单,就不展开讲了。
现在,我们的repo目录结构是这样子的:
在这里插入图片描述
注意:
action.yml文件在.github/workflows目录下。

细心的小伙伴可能会问了,签到需要登录呀,网易云的账号密码应该放在哪呢?直接放在代码里也太不安全了。别担心,我们可以把我们的账户名和密码存在我们新建的repo的Secrets中,然后从Actions配置文件的secrets域中读出并设置为对应的环境变量就行了,上面的配置文件中已经实现了这部分内容:

env:
  NETEASE_USERNAME: ${{ secrets.NETEASE_USERNAME }}
  NETEASE_PASSWORD: ${{ secrets.NETEASE_PASSWORD }}

账号密码的存储位置如下图所示:
Github的免费计算资源,来做个自动网易云签到吧_第2张图片
设置好之后的效果如下:
Github的免费计算资源,来做个自动网易云签到吧_第3张图片
Ok,大功告成啦,现在只要对这个repo进行push操作后,或者每天的国际标准时间5点,这个签到脚本都会自动执行一次,就像这样:
Github的免费计算资源,来做个自动网易云签到吧_第4张图片
白嫖成功,感兴趣的小伙伴可以自己动手试试哈,不仅仅局限于签到哦~

参考 http://www.ruanyifeng.com/blog/2019/09/getting-started-with-github-actions.html


最后还是希望你们能给我点一波小小的关注。

奉上自己诚挚的爱心

你可能感兴趣的:(笔记)