云函数实现 Github API 访问加速

前言

由于懂的都懂的原因,国内访问 Github API 不是很稳定,最近写的小程序希望在客户端通过 Github API 拉取一些信息,然后就有了这个方法。

本文采用华为云函数工作流实现(免费的不用白不用),其他云函数理论上也可以实现。

CF Workers 我测试的时候会反向加速,对网络环境比较自信的话也可以尝试使用。

云函数实现 Github API 访问加速_第1张图片

步骤

Step 1. 环境配置

注册账号,开通函数工作流,这里就不多说了,相信大家都会搞。

Step 2. 创建函数

新建一个函数

云函数实现 Github API 访问加速_第2张图片

这里选事件函数,测试的时候 HTTP 函数依赖管理有点问题。

环境这里我选个熟悉的 python,如果你更熟悉其他语言写 proxy 也可以选其他的。

云函数实现 Github API 访问加速_第3张图片

Step 3. 编写函数

在编辑器里写好代码后记得 Ctrl+S 保存或者点下部署,把代码更上去。

这里提供一个简单粗暴的 python 透明代理写法

import os
import json
import base64
import requests

def handler(event, context):
    header = {k:v for k, v in event["headers"].items() if k.lower() not in ["host"]}
    resp = requests.request(event["httpMethod"], "https://api.github.com"+event["path"], headers=header, data=event["body"], stream=True)
    defaultResponse = {
        'statusCode': resp.status_code,
        'isBase64Encoded': True,
        'headers': dict(resp.headers),
        'body': base64.b64encode(resp.raw.read()).decode(),
    }
    return json.dumps(defaultResponse)

云函数实现 Github API 访问加速_第4张图片

Step 4. 配置网关

为函数配置 API 网关服务,首次使用需要先创建分组,再点下创建分组旁边的刷新。

云函数实现 Github API 访问加速_第5张图片

创建分组比较简单,起个名字,之后回去创建触发器

云函数实现 Github API 访问加速_第6张图片

之后进入 API 管理,编辑刚刚配置好的 API

云函数实现 Github API 访问加速_第7张图片

云函数实现 Github API 访问加速_第8张图片

下一步进入第二步,将请求路径改为根路径 /,完成并发布

如果不改这里的请求路径就需要在代码中进行相应处理,可以根据个人习惯进行配置

云函数实现 Github API 访问加速_第9张图片

云函数实现 Github API 访问加速_第10张图片云函数实现 Github API 访问加速_第11张图片

Step 5. 访问测试

之后就可以用 API 分组里面的测试域名随便折腾了

云函数实现 Github API 访问加速_第12张图片

云函数实现 Github API 访问加速_第13张图片

进阶技巧

测试域名每天 1000 次基本上是够用了,如果不够用的话多搞几个分组和云函数也是一种可行方案,由于里面是很灵活的代码。有很多能够做到负载均衡的办法,这里就不展开了。

本文只是做个简单的演示,正式使用时安全认证最好开一下,避免被别人搞。

只要思想不滑坡,办法总比困难多,除此之外,函数工作流还可以实现许多有趣的功能,这里就留给大家自由挥发了~

你可能感兴趣的:(Python,1024程序员节)