自动化辅种工具暂定名字:IYUU自动辅种工具
,兼容支持TJUPT站大神的Reseed辅种方式,支持transmission、qBittorrent,支持多盘位、多目录。
工作原理
IYUU自动辅种工具
客户端脚本每12个小时,扫描transmission、qBittorrent里面正在做种的种子,经过计算、去重等,提取info_hash种子特征,请求IYUU自动辅种工具
服务器API接口,根据API接口返回的辅种链接,添加辅种任务,自动辅种各个站点。
优势
全程自动化
,无需人工干预!- 支持
多盘位
、多目录
辅种! - 依靠特征库,辅种
精确度100%
! - 支持
微信通知
,消息即时达! - 兼容
支持TJUPT站大神的Reseed辅种
方式
架构
服务器端API部署到腾讯云,只负责API接口,下发RSS订阅任务!(重庆4区:1核 1G 5Mbps)(已升级到阿里云2H4GB 5Mbps)
RSS订阅脚本部署在2台N1上,长期挂机!负责订阅各站新种!(放在2个不同的家庭网络 下行500M/上行50M)
分布式爬虫部署在群晖上!(初始化各站数据库)
IYUU自动辅种工具
服务器端
API接口:
- 接收客户端脚本的辅种请求,返回各站点可辅种的种子链接;(推荐24小时/次)
- 接收RSS采集脚本新种子入库请求,返回入库信息;
- 接收客户端微信通知的订阅请求(可订阅各个站点的新种通知等,限量内侧);
- 处理WEBUI的请求,前后端分离
- 兼容支持TJUPT站大神的Reseed辅种方式
定时器
- 处理Redis队列,执行数据库操作;
- 统计接口调用情况
- 处理客户端的站点订阅信息
- 智能分配采集任务
原则:服务器上坚决不保存各站点的种子文件,只保存数据表各字段的特征码!!!!!
详情查阅数据字典!
IYUU自动辅种工具
数据采集
RSS订阅脚本
- 推荐在常开机的下载机、树莓派、N1这种低功耗廉价终端上部署;
- 订阅新种信息,计算info_hash、pieces_hash等种子特征信息后,提交到API接口更新;
- 接收服务器分配的新站的RSS订阅请求,自动更新配置(可开关);
爬虫脚本
- 主要是建立初始数据库,每个站点只运行一次;
- 爬取目标站所有种子,计算info_hash、pieces_hash等种子特征信息后,提交到API接口添加;
爬虫脚本风险:可能触发种子下载频率限制,造成封号(如管理同意或直接给数据最好)
关键的Hash算法:
IYUU自动辅种工具
客户端
【完全开源,接受安全性监督】
辅种脚本
通过计划任务或常驻内存,按指定频率检测transmission、qBittorrent等的做种情况,提取info_hash并提交到API接口,根据API接口返回的辅种链接,自动添加辅种任务,自动辅种各个站点。
辅种算法
返回辅种数据列表,精确度如下:
picecs_hash匹配出来的是种子文件都相同,精确度100%;(直接转载)
files_name_hash匹配出来的是所有文件相同的种子,精确度95%;(重新制种)
files_hash匹配出来的是子文件夹文件相同的种子,精确度70%;(更改了根目录名称)
info_hash只是特殊情况下参考,暂时没用到。
【普通用户,只需要部署辅种脚本即可,没有任何风险】
RSS订阅脚本
- 订阅新种信息
IYUU自动辅种工具
数据表结构【2019年11月28日】
-- phpMyAdmin SQL Dump
-- version 4.0.10.20
-- https://www.phpmyadmin.net
--
-- 主机: localhost
-- 生成日期: 2019-11-28 19:13:18
-- 服务器版本: 5.5.62
-- PHP 版本: 5.5.38
SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
SET time_zone = "+00:00";
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;
--
-- 数据库: `reseed`
--
-- --------------------------------------------------------
--
-- 表的结构 `error_torrents`
--
CREATE TABLE IF NOT EXISTS `error_torrents` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`sid` int(11) unsigned NOT NULL COMMENT '站点id',
`torrent_id` int(11) unsigned NOT NULL COMMENT '第三方种子id',
`reason` varchar(100) NOT NULL COMMENT '错误原因',
`added_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- 表的结构 `historys`
--
CREATE TABLE IF NOT EXISTS `historys` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) unsigned NOT NULL COMMENT '用户ID',
`added_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`hash` varchar(50) NOT NULL COMMENT '信息的唯一hash',
`result` text NOT NULL COMMENT '提交的信息',
`ip` varchar(40) NOT NULL COMMENT 'ip地址',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- 表的结构 `sites`
--
CREATE TABLE IF NOT EXISTS `sites` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT COMMENT '站点id',
`site` varchar(30) NOT NULL COMMENT '站点名',
`base_url` varchar(50) NOT NULL,
`download_page` varchar(50) NOT NULL DEFAULT 'download.php?id={}',
`rss_page` varchar(255) NOT NULL DEFAULT 'torrentrss.php?rows=50&passkey={}&linktype=dl',
`torrents_page` varchar(50) NOT NULL DEFAULT 'torrents.php?incldead=0&page={}',
`enabled` tinyint(1) unsigned NOT NULL DEFAULT '1',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
`passkey` varchar(50) DEFAULT NULL,
`cookies` mediumtext,
`user_agent` varchar(255) DEFAULT NULL,
`skip_page` int(11) unsigned NOT NULL DEFAULT '0',
`is_show` tinyint(1) unsigned NOT NULL DEFAULT '0',
PRIMARY KEY (`id`),
UNIQUE KEY `site` (`site`),
UNIQUE KEY `passkey` (`passkey`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- 表的结构 `torrents`
--
CREATE TABLE IF NOT EXISTS `torrents` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(300) NOT NULL COMMENT '种子name',
`files` longtext COMMENT '种子files',
`length` bigint(20) unsigned NOT NULL COMMENT '种子length',
`files_hash` varchar(50) NOT NULL COMMENT 'files的sha1',
`pieces_hash` varchar(50) NOT NULL COMMENT '唯一种子pieces的hash',
`added_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `pieces_hash` (`pieces_hash`),
KEY `name` (`name`),
KEY `files_hash` (`files_hash`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- 表的结构 `torrent_records`
--
CREATE TABLE IF NOT EXISTS `torrent_records` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`sid` int(11) unsigned NOT NULL COMMENT '对应sites表站点id',
`tid` int(11) unsigned NOT NULL COMMENT '对应torrents表id',
`search_id` int(11) unsigned NOT NULL COMMENT '对应torrent_search表id',
`torrent_id` int(11) unsigned NOT NULL COMMENT '第三方种子id',
`info_hash` varchar(50) NOT NULL COMMENT '第三方唯一种子info_hash',
`added_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
PRIMARY KEY (`id`),
UNIQUE KEY `info_hash` (`info_hash`),
KEY `search_id` (`search_id`),
KEY `tid` (`tid`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- 表的结构 `torrent_search`
--
CREATE TABLE IF NOT EXISTS `torrent_search` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`h1` varchar(300) NOT NULL COMMENT '主标题',
`title` varchar(300) DEFAULT NULL COMMENT '副标题',
PRIMARY KEY (`id`),
KEY `title` (`title`),
KEY `h1` (`h1`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='种子搜索信息表' AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
--
-- 表的结构 `users`
--
CREATE TABLE IF NOT EXISTS `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`username` varchar(255) NOT NULL COMMENT '用户名',
`passhash` varchar(100) NOT NULL COMMENT '用户名+密码hash',
`created` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`sid` int(11) unsigned NOT NULL COMMENT '站点id',
`openid` varchar(50) DEFAULT NULL COMMENT '第三方用户唯一标识',
`token` varchar(60) DEFAULT NULL,
`activated` int(11) NOT NULL COMMENT '最后登录时间',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
服务器端种子匹配关键算法
版权属于:大卫科技Blog
本文链接:https://www.iyuu.cn/archives/314/
转载时须注明出处