# 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 ```