回答

收藏

带大家一起来白嫖一波Github的免费计算资源呀~

运营学院 运营学院 266 人阅读 | 0 人回复 | 2021-04-13





新的一周,从手把手带大家一起来白嫖一波Github的计算资源开始。


白嫖的主要原理是利用Github的Actions功能,该功能于2018年10月推出。关于它的详细介绍,可以参见:

https://docs.github.com/en/actions
废话不多说,让我们愉快地开始白嫖吧~









没有固定的相关文件,这里给出一些公众号之前发过的可以利用的有趣案例吧:

Python监控小姐姐/小哥哥微博,了解一下?

整个小例子呗,实现一下网易云音乐自动签到









Python版本:3.6.4

相关模块:

requests模块;

DecryptLogin模块;

以及一些python自带的模块。









去注册个Github账号就行:
https://github.com/









先来简单介绍一下Github的Actions吧,以免各位小伙伴一头雾水。按照官方自己的定义,就是:
Focus on what matters: code. With GitHub Actions you can automate your workflow from idea to production.
说白了,Actions就是一系列的操作,开发者可以通过定义Actions来让你的日常开发流程中的很多事情可以自动化起来。而对于白嫖党来说,我们只需要知道,有了这个功能,我们就可以愉快地白嫖Github的计算资源来干一些我们想干的事情啦。比如说:


    各大网站、论坛的每日自动签到;

    每天给自己的邮箱发天气预报/笑话等;

    下载需要fq才能看到的视频;

    监控某个人是否发了微博,如果发了就邮件/短信通知自己等等。

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


ok,说了这么多废话,也该开启我们的白嫖之旅了,这里我们以公众号之前的网易云自动签到脚本为例好了:

整个小例子呗,实现一下网易云音乐自动签到

首先,新建一个repo:



然后把我们的自动签到脚本提交到这个repo上去(需要在之前那个版本的基础上做一点小的修改,即改变读取用户名密码的方式):

'''Function:    网易云音乐自动签到Author:    Charles微信公众号:    Charles的皮卡丘'''import osimport refrom DecryptLogin import loginfrom DecryptLogin.platforms.music163 import Cracker

'''网易云音乐自动签到'''classNeteaseSignin():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': '*/*'                    }'''外部调用'''defrun(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 == 1else'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')))'''模拟登录'''    @staticmethoddeflogin(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: -masterschedule:-cron: '0 5 * * *'
jobs:netease:runs-on: ubuntu-lateststeps:-name: 'Checkout codes'uses: actions/checkout@v2-name: 'Set python'uses: actions/setup-python@v1with: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: -masterschedule:-cron: '0 5 * * *'
后面的内容,就是定义我们脚本的运行环境,运行所需的依赖包以及运行使用的命令了。比较简单,就不展开讲了。

现在,我们的repo目录结构是这样子的:



注意:

action.yml文件在.github/workflows目录下。

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



设置好之后的效果如下:



Ok,大功告成啦,现在只要对这个repo进行push操作后,或者每天的国际标准时间5点,这个签到脚本都会自动执行一次,就像这样:



白嫖成功~感兴趣的小伙伴可以自己动手试试哈,不仅仅局限于签到哦~





代码截止2020-07-06测试无误。

另外,我才是DecryptLogin包的作者,项目的地址是:
https://github.com/CharlesPikachu/DecryptLogin
其他都是假的!!!










本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则