|
|
|
# Hero Union - 英雄联盟
|
|
|
|
|
|
|
|
Union of hero bots.
|
|
|
|
一个Hero的爬虫联盟。
|
|
|
|
|
|
|
|
Hero Union主要做两件事:
|
|
|
|
|
|
|
|
* 加入联盟的爬虫将定期到联盟领取网页抓取任务,并将任务结果回传
|
|
|
|
* 对外提供提交网页抓取任务和获取任务结果的接口供联盟成员使用,并支持任务完成回调通知
|
|
|
|
|
|
|
|
|
|
|
|
## Hero Union 英雄联盟使用流程
|
|
|
|
|
|
|
|
### 联盟成员使用流程
|
|
|
|
|
|
|
|
1. 调用接口向联盟提交网页抓取任务
|
|
|
|
2. 任务完成时联盟会主动通知回传任务结果
|
|
|
|
3. 也可以调用接口查询任务结果
|
|
|
|
|
|
|
|
|
|
|
|
### 联盟的爬虫工作流程
|
|
|
|
|
|
|
|
1. 本地启动爬虫后,定期向联盟上报爬虫状态
|
|
|
|
2. 爬虫定期向联盟领取新的网页抓取任务
|
|
|
|
3. 爬虫完成网页抓取任务时调用接口上报给联盟
|
|
|
|
|
|
|
|
|
|
|
|
## Hero Union 联盟接口
|
|
|
|
|
|
|
|
Hero Union联盟网站:[Hero Union英雄联盟](https://herounion.filesite.io/)。
|
|
|
|
|
|
|
|
以下为联盟所有接口的详细文档:
|
|
|
|
|
|
|
|
### 爬虫任务领取接口
|
|
|
|
|
|
|
|
* 接口网址:
|
|
|
|
```
|
|
|
|
https://herounion.filesite.io/api/gettask/
|
|
|
|
```
|
|
|
|
* 请求方法:**GET**
|
|
|
|
* 请求参数:**无**
|
|
|
|
|
|
|
|
|
|
|
|
### 爬虫任务完成回传接口
|
|
|
|
|
|
|
|
* 接口网址:
|
|
|
|
```
|
|
|
|
https://herounion.filesite.io/api/savetask/
|
|
|
|
```
|
|
|
|
* 请求方法:**POST**
|
|
|
|
* 请求参数:
|
|
|
|
```
|
|
|
|
task_id
|
|
|
|
task_result
|
|
|
|
timestamp
|
|
|
|
sign
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 提交网页抓取任务接口
|
|
|
|
|
|
|
|
* 接口网址:
|
|
|
|
```
|
|
|
|
https://herounion.filesite.io/api/newtask/
|
|
|
|
```
|
|
|
|
* 请求方法:**POST**
|
|
|
|
* 请求参数:
|
|
|
|
```
|
|
|
|
uuid
|
|
|
|
url
|
|
|
|
platform
|
|
|
|
data_mode
|
|
|
|
selectors
|
|
|
|
notify_url
|
|
|
|
country
|
|
|
|
lang
|
|
|
|
sign
|
|
|
|
```
|
|
|
|
|
|
|
|
参数说明:
|
|
|
|
* platform: url所属平台,目前支持的:抖音、快手、西瓜视频、bilibili
|
|
|
|
* data_mode: 返回数据格式,默认:json,可选值:json、html
|
|
|
|
|
|
|
|
|
|
|
|
### 查询网页抓取任务结果接口
|
|
|
|
|
|
|
|
* 接口网址:
|
|
|
|
```
|
|
|
|
https://herounion.filesite.io/api/querytask/
|
|
|
|
```
|
|
|
|
* 请求方法:**GET**
|
|
|
|
* 请求参数:
|
|
|
|
```
|
|
|
|
task_id
|
|
|
|
timestamp
|
|
|
|
sign
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 爬虫任务完成回调通知接口
|
|
|
|
|
|
|
|
* 接收通知网址:
|
|
|
|
```
|
|
|
|
见提交网页抓取任务接口中的参数:notify_url
|
|
|
|
```
|
|
|
|
* 请求方法:**POST**
|
|
|
|
* 请求参数:
|
|
|
|
```
|
|
|
|
task_id
|
|
|
|
task_result
|
|
|
|
timestamp
|
|
|
|
sign
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 爬虫状态上报接口
|
|
|
|
|
|
|
|
* 接口网址:
|
|
|
|
```
|
|
|
|
https://herounion.filesite.io/api/onboard/
|
|
|
|
```
|
|
|
|
* 请求方法:**POST**
|
|
|
|
* 请求参数:
|
|
|
|
```
|
|
|
|
bot_name
|
|
|
|
bot_description
|
|
|
|
status: [idle, busy]
|
|
|
|
timestamp
|
|
|
|
country
|
|
|
|
lang
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### 联盟状态查询接口
|
|
|
|
|
|
|
|
* 接口网址:
|
|
|
|
```
|
|
|
|
https://herounion.filesite.io/api/stats/
|
|
|
|
```
|
|
|
|
* 请求方法:**GET**
|
|
|
|
* 请求参数:**无**
|
|
|
|
|
|
|
|
|
|
|
|
## 接口参数签名方法
|
|
|
|
|
|
|
|
将所有参数按字母排序之后拼接成GET请求字符串,最后再拼接上token计算MD5值。
|
|
|
|
|
|
|
|
示例如下:
|
|
|
|
```
|
|
|
|
var token = 'hello world'; //注册联盟后获得的密钥
|
|
|
|
var params = { //参数示例
|
|
|
|
"b": 2,
|
|
|
|
"a": 1,
|
|
|
|
"t": 234343
|
|
|
|
};
|
|
|
|
|
|
|
|
var sortObj = function(obj) { //参数排序方法
|
|
|
|
return Object.keys(obj).sort().reduce(function (result, key) {
|
|
|
|
result[key] = obj[key];
|
|
|
|
return result;
|
|
|
|
}, {});
|
|
|
|
};
|
|
|
|
|
|
|
|
var joinObj = function(obj, glue, separator) { //参数拼接方法
|
|
|
|
if (typeof(glue) == 'undefined') {
|
|
|
|
glue = '=';
|
|
|
|
}
|
|
|
|
|
|
|
|
if (typeof(separator) == 'undefined') {
|
|
|
|
separator = '&';
|
|
|
|
}
|
|
|
|
|
|
|
|
return Object.keys(obj).map(function(key) {
|
|
|
|
return [key, obj[key]].join(glue);
|
|
|
|
}).join(separator);
|
|
|
|
};
|
|
|
|
|
|
|
|
//1. 排序参数
|
|
|
|
var sortedParams = sortObj(params);
|
|
|
|
//2. 计算MD5值
|
|
|
|
var sign = md5( joinObj(sortedParams, '=', '&') + token );
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
## Hero Union 英雄联盟开发进度
|
|
|
|
|
|
|
|
更新日期:2023-11-05
|
|
|
|
|
|
|
|
* v0.1 - beta 开发中...
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 参考
|
|
|
|
|
|
|
|
npm install 使用代理,本地socks转web proxy软件:
|
|
|
|
```
|
|
|
|
https://www.npmjs.com/package/http-proxy-to-socks
|
|
|
|
```
|
|
|
|
|
|
|
|
启动代理软件:
|
|
|
|
```
|
|
|
|
hpts -s 127.0.0.1:1080 -p 8002
|
|
|
|
```
|
|
|
|
|