跳到主要内容

tophant.benjamin.x.api

Services

service Core

rpc Reload

Reload 重载配置文件【不支持重载 debug, db, queue 的配置】

rpc Reload ( ReloadRequest ) returns ( ReloadResponse )
message ReloadRequest {
// no fields
}
message ReloadResponse {
// no fields
}

service Detector

rpc Detect

发起检测 注意,该函数为同步检测,每个网页耗时 ~1min,请注意避免大量检测导致超时

rpc Detect ( DetectRequest ) returns ( DetectResponse )
message DetectRequest {
repeated string urls = 1;
// 返回结果的 TechnologyResult 是否包含 detail 字段
bool response_include_detail = 2;
tophant.benjamin.DetectorConfig detector_config = 11;
tophant.benjamin.ChromeConfig chrome_config = 12;
tophant.benjamin.RequestConfig request_config = 13;
tophant.benjamin.DeviceEmulationConfig device_emulation_config = 14;
// 仅支持 upstream_proxy
tophant.benjamin.NetworkConfig network_config = 15;
tophant.benjamin.AuthResult auth_result = 16;
}
message DetectResponse {
// 检测过程中的产生的错误
repeated string errors = 2;
}

service Target

rpc GetTarget

获取 Target

rpc GetTarget ( GetTargetRequest ) returns ( GetTargetResponse )
message GetTargetRequest {
string target_id = 1;
}
message GetTargetResponse {
}

rpc GetTargetsV1

获取 Targets 信息 V1 Deprecated: Use ListTargetsV2 instead

rpc GetTargetsV1 ( GetTargetsV1Request ) returns ( GetTargetsV1Response )
message GetTargetsV1Request {
// 除了 id 外,额外查询的字段,支持
// "id", "url", "canonical_url", "source", "source_detail", "status", "task_id", "task_job_id", "task_job_iterate",
// "parent_target_id", "inherit_target_id", "error", "request", "response", "redirects",
// "found_at", "start_at", "load_at", "stop_at", "notes", "created_at", "updated_at",
repeated string fields = 1;
// 筛选字段,多个字段之间为与关系
map<string,string> filter = 2;
// 排序字段,排名分先后,默认为按照时间降序
repeated string order_by = 3;
// 偏移量
int32 offset = 11;
// 跳数
int32 limit = 12;
}
message GetTargetsV1Response {
// 总数
int32 total = 1;
// Targets 列表(字段只包含 fields 中的信息)
repeated tophant.benjamin.Target targets = 2;
}

rpc ListTargetsV2

获取 Targets 信息 V2

rpc ListTargetsV2 ( ListTargetsV2Request ) returns ( ListTargetsV2Response )
message ListTargetsV2Request {
ListTargetsV2Filters filters = 1;
repeated string order_by = 2;
int64 offset = 3;
int64 limit = 4;
}
message ListTargetsV2Response {
repeated ListTargetV2Result targets = 1;
int64 total = 2;
}

service Task

rpc DownloadRRWebFile

下载 RRWeb 文件

rpc DownloadRRWebFile ( DownloadFileRequest ) returns ( DownloadFileResponse )
message DownloadFileRequest {
string filename = 2;
}
message DownloadFileResponse {
bytes content = 2;
}

rpc GetLatestTasks

获取最近的任务

rpc GetLatestTasks ( GetLatestTasksRequest ) returns ( GetLatestTasksResponse )
message GetLatestTasksRequest {
// 默认为 0(即从头开始)
int32 offset = 1;
// 默认为 10
int32 limit = 2;
}
message GetLatestTasksResponse {
repeated tophant.benjamin.x.entity.Task tasks = 1;
}

rpc GetRRWebEvents

获取 RRWeb 信息

rpc GetRRWebEvents ( GetRRWebEventsRequest ) returns ( GetRRWebEventsResponse )
message GetRRWebEventsRequest {
}
message GetRRWebEventsResponse {
repeated GetRRWebEventsResponse.Events events = 1;
}

rpc GetTask

获取任务

rpc GetTask ( GetTaskReqeust ) returns ( GetTaskResponse )
message GetTaskReqeust {
string task_id = 1;
}
message GetTaskResponse {
}

rpc GetTasksByJobId

利用 JobId 获取任务

rpc GetTasksByJobId ( GetTasksByJobIdRequest ) returns ( GetTasksByJobIdResponse )
message GetTasksByJobIdRequest {
string job_id = 1;
}
message GetTasksByJobIdResponse {
repeated tophant.benjamin.x.entity.Task tasks = 1;
}

rpc GetTasksV1

获取任务信息 V1 @deprecated Use ListTasksV2 instead. GetTasksV1 will be removed in a future version.

rpc GetTasksV1 ( GetTasksV1Request ) returns ( GetTasksV1Response )
message GetTasksV1Request {
// 除了 id 外,额外查询的字段,支持 "id", "job_id", "iterate", "job_name", "tid", "status", "start_at", "stop_at", "tick", "manager", "error", "notes", "created_at", "updated_at"
repeated string fields = 1;
// 筛选字段,多个字段之间为与关系
map<string,string> filter = 2;
// 排序字段,排名分先后,默认为按照时间降序
repeated string order_by = 3;
// 偏移量
int32 offset = 11;
// 跳数
int32 limit = 12;
}
message GetTasksV1Response {
// 总数
int32 total = 1;
// 任务列表(字段只包含 fields 中的信息)
repeated tophant.benjamin.Task tasks = 2;
}

rpc ListTasksV2

获取任务信息 V2

rpc ListTasksV2 ( ListTasksV2Request ) returns ( ListTasksV2Response )
message ListTasksV2Request {
ListTasksV2Filters filters = 1;
repeated string order_by = 2;
int64 offset = 3;
int64 limit = 4;
}
message ListTasksV2Response {
repeated ListTaskV2Result tasks = 1;
int64 total = 2;
}

Messages & Enums

message DetectRequest

message DetectRequest {
repeated string urls = 1;
// 返回结果的 TechnologyResult 是否包含 detail 字段
bool response_include_detail = 2;
tophant.benjamin.DetectorConfig detector_config = 11;
tophant.benjamin.ChromeConfig chrome_config = 12;
tophant.benjamin.RequestConfig request_config = 13;
tophant.benjamin.DeviceEmulationConfig device_emulation_config = 14;
// 仅支持 upstream_proxy
tophant.benjamin.NetworkConfig network_config = 15;
tophant.benjamin.AuthResult auth_result = 16;
}

message DetectResponse

message DetectResponse {
// 检测过程中的产生的错误
repeated string errors = 2;
}

message DownloadFileRequest

message DownloadFileRequest {
string filename = 2;
}

message DownloadFileResponse

message DownloadFileResponse {
bytes content = 2;
}

message GetLatestTasksRequest

message GetLatestTasksRequest {
// 默认为 0(即从头开始)
int32 offset = 1;
// 默认为 10
int32 limit = 2;
}

message GetLatestTasksResponse

message GetLatestTasksResponse {
repeated tophant.benjamin.x.entity.Task tasks = 1;
}

message GetRRWebEventsRequest

message GetRRWebEventsRequest {
}

message GetRRWebEventsResponse

message GetRRWebEventsResponse {
repeated GetRRWebEventsResponse.Events events = 1;
}

message GetRRWebEventsResponse.Events

message Events {
repeated string filenames = 1;
}

message GetTargetRequest

message GetTargetRequest {
string target_id = 1;
}

message GetTargetResponse

message GetTargetResponse {
}

message GetTargetsV1Request

Deprecated: Use ListTargetsV2Request instead

message GetTargetsV1Request {
// 除了 id 外,额外查询的字段,支持
// "id", "url", "canonical_url", "source", "source_detail", "status", "task_id", "task_job_id", "task_job_iterate",
// "parent_target_id", "inherit_target_id", "error", "request", "response", "redirects",
// "found_at", "start_at", "load_at", "stop_at", "notes", "created_at", "updated_at",
repeated string fields = 1;
// 筛选字段,多个字段之间为与关系
map<string,string> filter = 2;
// 排序字段,排名分先后,默认为按照时间降序
repeated string order_by = 3;
// 偏移量
int32 offset = 11;
// 跳数
int32 limit = 12;
}

message GetTargetsV1Response

Deprecated: Use ListTargetsV2Response instead

message GetTargetsV1Response {
// 总数
int32 total = 1;
// Targets 列表(字段只包含 fields 中的信息)
repeated tophant.benjamin.Target targets = 2;
}

message GetTaskReqeust

message GetTaskReqeust {
string task_id = 1;
}

message GetTaskResponse

message GetTaskResponse {
}

message GetTasksByJobIdRequest

message GetTasksByJobIdRequest {
string job_id = 1;
}

message GetTasksByJobIdResponse

message GetTasksByJobIdResponse {
repeated tophant.benjamin.x.entity.Task tasks = 1;
}

message GetTasksV1Request

@deprecated Use ListTasksV2Request instead

message GetTasksV1Request {
// 除了 id 外,额外查询的字段,支持 "id", "job_id", "iterate", "job_name", "tid", "status", "start_at", "stop_at", "tick", "manager", "error", "notes", "created_at", "updated_at"
repeated string fields = 1;
// 筛选字段,多个字段之间为与关系
map<string,string> filter = 2;
// 排序字段,排名分先后,默认为按照时间降序
repeated string order_by = 3;
// 偏移量
int32 offset = 11;
// 跳数
int32 limit = 12;
}

message GetTasksV1Response

@deprecated Use ListTasksV2Response instead

message GetTasksV1Response {
// 总数
int32 total = 1;
// 任务列表(字段只包含 fields 中的信息)
repeated tophant.benjamin.Task tasks = 2;
}

message ListTargetV2Result

message ListTargetV2Result {
}

message ListTargetsV2FilterUrl

message ListTargetsV2FilterUrl {
// The search keyword (or raw LIKE pattern when match_type is LIKE)
string keyword = 1;
// How to match (contains, ends_with, or like)
}

enum ListTargetsV2FilterUrl.MatchType

enum MatchType {
MATCH_TYPE_UNSPECIFIED = 0;
// LIKE '%keyword%' (escaped)
MATCH_TYPE_CONTAINS = 1;
// LIKE '%keyword' (escaped)
MATCH_TYPE_ENDS_WITH = 2;
// Raw LIKE pattern (PostgreSQL only)
MATCH_TYPE_LIKE = 3;
}

message ListTargetsV2Filters

message ListTargetsV2Filters {
map<string,string> raw_filters = 1;
// URL pattern filtering
}

message ListTargetsV2Request

message ListTargetsV2Request {
ListTargetsV2Filters filters = 1;
repeated string order_by = 2;
int64 offset = 3;
int64 limit = 4;
}

message ListTargetsV2Response

message ListTargetsV2Response {
repeated ListTargetV2Result targets = 1;
int64 total = 2;
}

message ListTaskV2Result

message ListTaskV2Result {
repeated string site_urls = 2;
}

message ListTasksV2Filters

message ListTasksV2Filters {
map<string,string> raw_filters = 1;
}

message ListTasksV2Request

message ListTasksV2Request {
ListTasksV2Filters filters = 1;
repeated string order_by = 2;
int64 offset = 3;
int64 limit = 4;
}

message ListTasksV2Response

message ListTasksV2Response {
repeated ListTaskV2Result tasks = 1;
int64 total = 2;
}

message ReloadRequest

message ReloadRequest {
// no fields
}

message ReloadResponse

message ReloadResponse {
// no fields
}