下载 github上面脚本_带大家一起来白嫖一波Github的免费计算资源呀~

原文链接

带大家一起来白嫖一波Github的免费计算资源呀~​mp.weixin.qq.com
fc3f4e3b702e241baae7a18a5cbe16ba.png

导语

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

5368995c2be583e5006523f151e60e00.png

白嫖的主要原理是利用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的计算资源。

5368995c2be583e5006523f151e60e00.png

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

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

首先,新建一个repo:

ffac05aee7d9b33ccd5882177f4b102c.png

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

'''
Function:
    网易云音乐自动签到
Author:
    Charles
微信公众号:
    Charles的皮卡丘
'''
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目录结构是这样子的:

2528c07e711fedd3dcbd73dbf994f337.png

注意:

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

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

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

账号密码的存储位置如下图所示:

060ea37ca69b7b764282e4356f6fb1b8.png

设置好之后的效果如下:

529c2aa7ac93ef5868463080d5147b80.png

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

3477ca5ef19e12c29e4234e12080f2e0.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值