云函数实现 Github API 访问加速

news2024/9/27 15:24:11

前言

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

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

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

步骤

Step 1. 环境配置

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

Step 2. 创建函数

新建一个函数

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

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

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)

Step 4. 配置网关

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

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

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

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

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

Step 5. 访问测试

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

进阶技巧

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1130610.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

docker(3) dockerCompose

Docker Compose通过一个单独的docker-compose.yml 模板文件(YAML 格式)来定义一组相关联的应用容器,帮助我们实现多个相互关联的Docker容器的快速部署。 先将之前的容器全部删除 运行命令 注意需在compose文件同目录执行命令,否…

异常的处理和HTTP状态码的分类

在爬虫过程中,可能会遇到各种异常情况,如网络连接错误、网页解析错误、请求超时等。为了提高爬虫的稳定性和容错性,需要对这些异常进行处理。 异常处理是通过捕获和处理异常来解决程序中出现的错误情况。在爬虫中,常见的异常处理…

2023-10-24 LeetCode每日一题(掷骰子等于目标和的方法数)

2023-10-24每日一题 一、题目编号 1155. 掷骰子等于目标和的方法数二、题目链接 点击跳转到题目位置 三、题目描述 这里有 n 个一样的骰子,每个骰子上都有 k 个面,分别标号为 1 到 k 。 给定三个整数 n , k 和 target ,返回可能的方式(…

动手学深度学习——第五次学

权重衰减是最广泛使用的正则化的技术之一 今天学的很头疼,好多都是公式 12权重衰退(解决过拟合) 13丢弃法(解决过拟合) 14数值稳定(梯度爆炸和梯度消失问题) 15竞赛题讲解 层和块 多层感知机…

运维 | 使用 Docker 安装 Jenkins | Jenkins

运维 | 使用 Docker 安装 Jenkins | Jenkins 前言 本期内容主要是为了学习如何通过 Docker 安装Jenkins,仅作为记录与参考,希望对大家有所帮助。 准备工作 系统:CentOS 7.9配置:4c8g 快速安装 下面以 Docker 方式安装 Jenkin…

计算机网络——理论知识总结(下)

接上条: 计算机网络——理论知识总结(上) 四.网络层 1.功能:向上提供简单灵活的、无连接的、尽最大努力交付的数据报服务——所传送的分组可能出错、丢失、重复、失序或者超时,这就使得网络中的路由器比较简单&#…

Navicat 导出数据库设计文档

1. 执行以下SQL: SELECT TABLE_NAME 表名, COLUMN_NAME 字段, COLUMN_COMMENT 字段名称, COLUMN_TYPE 数据类型, IS_NULLABLE 是否为空, COLUMN_KEY 约束条件, COLUMN_COMMENT 备注 FROM INFORMATION_SCHEMA.COLUMNS where -- test 为数据库名称,复制粘…

四个内存函数

文章目录 memcpy函数(拷贝)模拟实现memcpy函数memcpy的升级memmove 之前的拷贝或赋值等都是对字符串操作的,而对内存中其它数据如结构体,数组中的数据的拷贝,都是要用内存函数来完成的。 memcpy函数(拷贝) 第一个参数为目标地址,第…

SMART PLC飞剪控制算法

如何通过编码器计算材料输送长度和速度,这里其实是属于计米和测速应用,在专栏里有详细介绍大家可以自行搜索,常用链接如下: 【精选】如何通过编码器信号计算输送线/输送带线速度(飞剪、追剪算法基础)_追剪控制算法-CSDN博客文章浏览阅读2.3k次。不同品牌PLC如何采集编码…

shell脚本实战案例--系统服务脚本

目录 1、源码编译安装nginx 2、分别编写基于RHEL6和RHEL7的脚本。 2.1 RHEL6的nginx系统服务脚本 2.2 RHEL7的nginx系统服务脚本 1、源码编译安装nginx 1.首先关闭防火墙和selinux [rootnode13 ~]# systemctl stop firewalld [rootnode13 ~]# setenforce 0 2.准备环境&…

【C++】STL容器——string类的例题应用(9)

前言 大家好吖,欢迎来到 YY 滴C系列 ,热烈欢迎!本章主要内容面向接触过C的老铁,下面是收纳的一些例题与解析~ 主要内容含: 欢迎订阅 YY 滴C专栏!更多干货持续更新!以下是传送门! 目…

k8s-----17、集群安全机制

1、集群安全机制概述 1.1 访问k8s的三个步骤 1、认证 2、鉴权(授权) 3、准入控制 进行访问的时候,过程中都需要经过apiserver,apiserver做统一协调,比如门卫。且访问过程中需要证书、token、或者用户名密码。如果需要访问pod,…

xshell+xming显示jmeter的gui页面

1.下载和安装xming,下载地址:https://sourceforge.net/projects/xming/ 2.配置xming 记住这个端口,一会要用到 修改进入xming安装目录修改host文件 此处是远程服务器的ip 3.服务器执行vi /etc/ssh/sshd_config,修改成如图所示…

C++入门(命名空间、缺省参数、引用、函数重载、内联函数)

目录 命名空间介绍命名空间格式命名空间使用 C输入输出缺省参数全缺省参数半缺省参数 函数重载引用引用特性常引用引用和指针的区别 内联函数 1024程序员节快乐!!!🎀🎁🎉 命名空间介绍 在C/C中&#xff0c…

电子表格text函数学习

text函数用于格式化内容;函数格式是 text(要格式化的值, 格式); B4有内容为 2020/3/15 ;输入下图; 把B4内容格式化为下图的年月日形式;B11有数值4.5,输入下图的格式化函数, 结果是四舍五入取整…

Cisco IOS XE Web UI 命令执行漏洞

Cisco IOS XE Web UI 命令执行漏洞 受影响版本 Cisco IOS XE全版本 漏洞描述 Cisco IOS XE Web UI 是一种基于GUI的嵌入式系统管理工具,能够提供系统配置、简化系统部署和可管理性以及增强用户体验。它带有默认映像,因此无需在系统上启用任何内容或安…

Lua语言编写爬虫程序

以下是一个使用luasocket-http库和Lua语言编写的爬虫程序。此程序使用了https://www.duoip.cn/get_proxy的代码。 -- 引入所需的库 local http require("socket.http") local ltn12 require("ltn12") local json require("json") ​ -- 获取…

ARM,汇编指令

一、汇编指令 1、搬移指令 mov r0 ,#3 mov r1,r0 msr cpsr,r0 mrs r0,cpsr 2、条件执行及标志位 cmp moveq movgt 3、机器码 1)、立即数合法性 2)、立即数不合法 ldr r0,0x12345678 伪指令解决不合法的问题 前4位表示16个数,一个数移动2次。 …

安装MariaDB数据库安装(离线安装)

参考地址: https://mirror.mariadb.org/yum/10.4/centos7-amd64/rpms/ http://www.gxcode.top/code 4.1 安装mariadb环境需要的依赖 # yum install rsync nmap lsof perl-DBI nc 4.2 安装MariaDB依赖包 # rpm -ivh jemalloc-3.6.0-1.el7.x86_64.rpm # rpm -ivh jemalloc…

图和图神经网络的可视化,详解与示例

1 图和图神经网络可视化 图和图神经网络(Graph Neural Networks,GNNs)的可视化对于理解和分析复杂图结构和模型的工作非常重要。图和图神经网络(GNN)的可视化是一种强大的工具,用于理解和分析复杂的图结构…