跳到主要内容

腾讯云函数SCF部署纯真IP库解析API

· 阅读需 4 分钟
猿1993👨🏻‍💻
🥇后端打酱油程序猿ᴴᵉˡˡᵒ ᵂᵒʳˡᵈ,热血、码农、暖男、奶爸等buff加成💫

纯真网络提供了免费版本的 IP 数据库,只需要注册按照要求做个免费的小推广就可以免费下载。并且提供了多种语言的解析 API,这里使用腾讯云函数利用 web api 来实现查询出调用客户端的 ip 位置。

新增云函数

新用户激活云函数有一定量的免费额度,免费使用三个月。

新建函数服务:console.cloud.tencent.com/scf/list

选择从头开始,填写名称、地域、运行环境选择 python3.6。可以开启日志(收费功能)。

部署完毕后,进入函数管理-函数代码,可以看到这是一个 vscode 编辑器。

然后在控制台安装依赖,注意安装到 src 目录下。

pip install czdb-searcher -t src

pip install flask_cors -t src

上传纯真离线 IP 库到 src 目录下。(在 src 目录上右键,上传即可)

入口函数 app.py 代码

from flask import Flask,request
from czdb.db_searcher import DbSearcher
from flask_cors import CORS


app = Flask(__name__)
CORS(app, resources={r"/*": {"origins": "https://abc.abc.cn"}})


@app.route('/')
def hello_world():
return 'Hello World!'

@app.route('/ipLocate')
def ip_locate():
x_forwarded_for = request.headers.get('X-Forwarded-For', '')
client_ip = x_forwarded_for.split(',')[0] if x_forwarded_for else request.remote_addr
database_path = "cz88_public_v4.czdb"
query_type = "BTREE"
key = "abc"
db_searcher = DbSearcher(database_path, query_type, key)
try:
return db_searcher.search(client_ip)
except Exception as e:
print(f"An error occurred during the search: {e}")
db_searcher.close()


if __name__ == '__main__':
app.run(host='0.0.0.0',port=9000)

最后点击下面的部署即可。

添加域名

左侧的函数 URL 中有测试的域名,可以用来测试结果。测试域名的请求结果会直接调用浏览器下载。

在左侧自定义域名中,可以绑定自己的域名。

然后按照需求做个 cname 解析即可。

更详细的文档:云函数 配置自定义域名_腾讯云

增加 CAM 鉴权

首先在云函数,函数 URL 中启用授权类型为 CAM。

接下来我们需要添加一个带有权限的用户。在访问管理-用户中,添加一个用户,选择快速创建,并设置访问方式为 编程访问​,这样就会得到一个 SecretId ​ 和 SecretKey​。

然后在访问管理-策略,中新建自定义策略,选择第一项:

给云函数权限

你可以直接给全部的操作

或者只给函数运行的权限(建议)

下一步,填写策略名称和描述,选择授权用户、角色、用户组。我直接授权给了上面创建的用户。

然后根据文档:云函数 函数 URL 认证鉴权配置_腾讯云,需要生成请求的签名相关信息。这里就需要一些编程的知识了。需要按照其约定生成一系列的请求头,每次请求该 api 都需要带着这些请求头。

测试 API

请求自定义域名: https://abc.com/ipLocate,你就会得到:

IP 库更新

注册纯真后,认证通过后,会得到一个数据库的专属下载链接和一个数据库解析密钥。该数据库大概每周都会更新,每次拿到新的 ip 库后,再次上传然后重新部署即可。

附录

  1. cz88 离线 ip 库-python 解析
  2. 云函数(Serverless Cloud Function,SCF)
  3. 云函数 函数 URL 认证鉴权配置_腾讯云

文章标题:腾讯云函数SCF部署纯真IP库解析API
版权声明:内容遵守
许可协议。转载请注明出处!
侵权提示:部分信息可能来源于网络。如发现有侵权,请随时联系删除!

神评论

如需图片,可上传至免费图床后,使用图片外链即可。SM.MS