数据上报
此功能需要用户具有一定研发能力才能使用,主要用于将数据上报到指定服务器中。
大部分用户,采集完数据之后,都需要进行二次加工才能获取到自己需要的数据。例如通过扣子工作流进行数据分析、上传到飞书进行汇总、集成到自己的业务系统中等。
通过此功能,用户可以将采集到的数据,上传到任意服务之中,想怎么处理就怎么处理。
不单是采集到的数据,正常浏览所访问的数据也能上报。
参数说明
规则可以有多个,互不冲突。符合URL匹配规则中的任意一条规则的都会上报至回调接口之中。
规则名称
规则的名称,用于标识不同规则。
回调地址
用于接收上报数据的API接口地址。
请求方式
用于接收上报数据的API接口的请求方法(POST、PUT、PATCH
)。
请求头配置
用于接收上报数据的API接口所需的请求头,可配置自己的鉴权参数信息。Content-Type
默认为application/json; charset=utf-8
。
URL匹配规则
当前回调地址需要接收的接口信息。符合规则内某个条件的接口才会进行上报。
仅支持上报JSON响应内容,非JSON响应的接口,即便符合条件也不会进行上报。
请求方式
需要进行过滤的请求方法(GET、POST、PUT、PATCH、DELETE、*
)。
匹配模式
请求URL的匹配模式,支持使用通配符*
。使用的是webext-core 提供的MatchPattern
进行的匹配。
import { MatchPattern } from '@webext-core/match-patterns';
const xiaohongshu = new MatchPattern('*://*.xiaohongshu.com');
xiaohongshu.includes('https://www.xiaohongshu.com'); // true
xiaohongshu.includes('https://xiaohongshu.com/search?q=test'); // true
const douyin = new MatchPattern('*://www.douyin.com/aweme/v1/web/aweme/detail/');
douyin.includes('https://www.douyin.com/aweme/v1/web/aweme/detail/'); // true
douyin.includes('https://www.douyin.com/aweme/v1/web/aweme/detail/?aweme_id=7521945967403928891'); // true
douyin.includes('https://www.douyin.com/aweme/v1/web/hot/search/list/'); // false
如需根据请求body或响应内容进行过滤,请自行再回调接口内实现,插件不做支持。
上报内容
上报内容为JSON格式,放在请求body之中,目前共四个字段。
{
"url": "string", // 请求的URL
"method": "string", // 请求的方法
"body": {}, // 请求的body,一般为JSON格式,部分请求可能为空
"result": {} // 本次请求的响应数据,JSON格式
}
CORS
回调接口务必开启CORS
,否则将无法成功上报。
回调接口示例
下面的示例为NodeJS
的express
框架服务,/reporting
就是用于接收上报数据的接口,获取到数据后可自行处理,例如提交到Coze工作流、保存到数据库等。
const express = require('express');
const cors = require('cors');
const bodyParser = require('body-parser');
const app = express();
// 开启跨域支持
app.use(cors());
// body解析
app.use(bodyParser.json());
app.get('/', (req, res) => {
res.send('Hello World!');
});
app.post('/reporting', async (req, res) => {
const { url, method, body, result } = req.body;
console.log(`接收到上报数据. url: ${url}, method: ${method}, body: ${body?JSON.stringify(body):''}, result: ${JSON.stringify(result)}`);
res.json({ success: true });
});
app.listen(8080);
最后更新于