腾讯云函数SCF部署纯真IP库解析API
纯真网络提供了免费版本的 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 库后,再次上传然后重新部署即可。
附录