这几天btbook.net这个搜片神器网站火了, 让我这个无工作的人, 也想做一个出来, 不然时间不好打发, 本人的草稿站: fastbot.me (刚发布几个小时, 体验等几天再做)

现在说说这种搜片神器是怎么做的:

一, 先实现一个DHT爬虫
至于怎么实现, 我就不多说了, 我这里有几篇文章说了.

1, 大白话讲解DHT原理及出现历史

2, 如何"养"一只DHT爬虫

3, 如何让DHT爬虫走得更远

4, 我与DHT爬虫那些操蛋事儿

花点时间去看看吧, 里面有贴有我的两个DHT爬虫的github地址

DHT爬虫, 相当于汽车里的发动机, 技术最难实现, 但也是最重要的, 虽然可以使用别人DHT爬虫, 但是要整合到自己搜片神器的话, 还是需要一定的技术的, 自己写的话, 成就感更大.

二, 种子下载
种子下载也是很麻烦的事情, 如果是自己实现协议进行种子下载的话, 下载种子时特别费时间, 没有好的网络带宽, 就别想了.
直接说下如何到迅雷服务器去下载种子文件, 还有如何对torrage.com定向采集来先充个面子.

用WireShark抓包分析迅雷, 发现它是这么个流程: 得到一个磁力链接, 取出那40字节的infohash, 在自己的种子服务器进行HTTP请求, 看自己是否已缓存过, 如果已缓存, 直接下载. 如果没有缓存, 就走DHT网去下载了. 这就是为什么你看到迅雷有时候下载种子快和慢的现象, 快的时候是因为直接到自己种子服务器下载, 慢的是因为要经过一定数量的向DHT网络发送get_peers请求.

ok, 只要我们实现了DHT爬虫, 得到infohash后, 就可以到迅雷种子库去下载. 那么向迅雷种子库进行HTTP请求时, 是个什么构造呢? 抓包分析图我就不截图了, 直接文字描述下.

原始infohash: ad2150e029b61caee9edc5f4e9b02cee489788cd
大写infohash: AD2150E029B61CAEE9EDC5F4E9B02CEE489788CD
请求地址: http://bt.box.n0808.com/AD/CD/AD2150E029B61CAEE9EDC5F4E9B02CEE489788CD.torrent
header头信息: Referer: http://bt.box.n0808.com (必须写, 不然返回error信息)

就这么简单, 一定要注意AD是infohash头两个字符, CD是infohash最后两个字符.

如果迅雷种子服务器也没有你给定的infohash的种子的话, 那就算了, 除非你自己去实现种子下载协议

那个torrage.com又是干啥的? 假如你也要做一个搜片神器的网站的话, 那么你最好先迅速积累资源, 后面再慢慢用DHT爬虫收集infohash向迅雷请求种子下载或自己实现种子下载协议进行下载. 打开torrage.com/sync, 里面都是存有infohash的文本文件, 种子下载就写如: http://torrage.com/torrent/640FE84C613C17F663551D218689A64E8AEBEABE.torrent 就可以了. 注意的是, 这个文本文件里的infohash有重复的, 要注意先去重复.

顺便说句, 不知torrage.com是不是被墙了, 时不时地要抽风, 要定向采集它的, 服务器最好放在国外.

三, 种子文件分析
读取文件内容, 使用bencode模块"解码"为编程语言的数据结构, 详情请自行google. 种子文件里有name, files, create date, length等属性值.

四, 搜索引擎
torrage.com的种子全部下载完, 后期又要用自己的DHT爬虫爬的话, 那么数据可是上5000万了, 没有好的中文分词搜索引擎, 那是绝对不可能的, 所以要用Sphinx或Lucene类似的. 笔者目前用的是Sphinx, 不过把玩得不好, 只会完全索引, 实时增量索引还在研究中. 这个就不好写了.

如何做一个像btbook.net这样的搜片神器?的更多相关文章

  1. 【技巧】使用weeman来做一个钓鱼网页

    本文来自网友836834283 对玄魂工作室的投稿. 工具项目地址:https://github.com/Hypsurus/weeman/ 克隆地址:https://github.com/Hypsur ...

  2. 用struts2标签如何从数据库获取数据并在查询页面显示。最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变量。

    最近做一个小项目,需要用到struts2标签从数据库查询数据,并且用迭代器iterator标签在查询页面显示,可是一开始,怎么也获取不到数据,想了许久,最后发现,是自己少定义了一个变量,也就是var变 ...

  3. 基于trie树做一个ac自动机

    基于trie树做一个ac自动机 #!/usr/bin/python # -*- coding: utf-8 -*- class Node: def __init__(self): self.value ...

  4. 做一个 App 前需要考虑的几件事

    做一个 App 前需要考虑的几件事  来源:limboy的博客   随着工具链的完善,语言的升级以及各种优质教程的涌现,做一个 App 的成本也越来越低了.尽管如此,有些事情最好前期就做起来,避免当 ...

  5. 有了lisk,为什么我们还要做一个Asch?

    0 前言 首先要声明一点,我们和我们的一些朋友都是lisk的投资人和支持者,我们也相信lisk会成功. 事实上,lisk已经成功了一半,目前在区块链领域融资金额排行第二,仅次于以太坊. 那为什么我们还 ...

  6. 做一个阅读管理APP

    背景 由于最近在看的书有点多,所以一直想找一个能够管理阅读进度的书(鄙人记性不是很好,两天不看就忘了)可惜Android平台上一直找不到合适的APP: 有没有读书进度管理的网站或软件啊? 有没有记录读 ...

  7. 微软云创益大赛获奖团队风采:做一个中国特色的.Net源代码社区

    为了强化云技术,落地云应用,彰显云价值,微软(中国)携手中国计算机报举办了“微软Cloud OS第二届云创益大赛”.本届大赛历时111天,共吸引了6647位个人组选手回答了70,078道题,59支参赛 ...

  8. 用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示。

    用jQuery做一个三级菜单,鼠标移动到二级菜单的选项上,然后再迅速离开后,当鼠标再移动到该一级菜单或其他二级菜单选项,三级菜单也会显示. 原因:在为一个元素绑定hover事件之后,用户把光标移入元素 ...

  9. 【 D3.js 入门系列 --- 5.1 】 做一个带坐标轴和标签的图表

    前面几节讲解了图标.坐标轴.比例等等,这一节整合这些内容做一个实用的图表.结果图如下: 代码如下所示: <html> <head> <meta charset=" ...

随机推荐

  1. Fiddler SessionFlags

    Each Session object in Fiddler contains a collection of string flags, in the Session.oFlags[] collec ...

  2. oracle 批量更新之update case when then

      oracle 批量更新之update case when then CreationTime--2018年8月7日15点51分 Author:Marydon 1.情景描述 根据表中同一字段不同情况 ...

  3. 〖Linux〗使用gsoap搭建web server(C++)

    1. gsoap的好处就不用说了:百度百科 2. gsoap的下载地址:项目地址,目前我使用的是2.8.15版本 3. 开发环境:Ubuntu13.10 4. 具体操作步骤(以简单相加为例): 1)编 ...

  4. 微软 Visual Studio 2017 中文正式版下载 – 免费社区版/专业版/企业版

    作为“宇宙最强”的集成开发环境 IDE,微软的 Visual Studio 不仅破天荒发布了 macOS 版本,如今终于也推出了其 Windows 的最新版本—— VS 2017 正式版了.这对开发者 ...

  5. Android基于TCP的局域网聊天通信

    概述 在同一局域网内,两台设备通过TCP进行通信聊天. 详细 代码下载:http://www.demodashi.com/demo/10567.html 一.准备工作 开发环境 jdk1.8 Ecli ...

  6. Geeks Union-Find Algorithm Union By Rank and Path Compression 图环算法

    相同是查找一个图是否有环的算法,可是这个算法非常牛逼,构造树的时候能够达到O(lgn)时间效率.n代表顶点数 原因是依据须要缩减了树的高度,也叫压缩路径(Path compression),名字非常高 ...

  7. python 版websocket实现

    ubuntu下python2.76 windows python 2.79, chrome37 firefox35通过 代码是在别人(cddn有人提问)基础上改的, 主要改动了parsedata和se ...

  8. 转发:微信小程序-template模板使用

    转载于CSDN--[向朔1992]处.(部分内容根据实际情况有所修改) 小程序实现主页面调用次级页面的wxml页面内容,如下图:   根据上图,我们可以将图片和图片信息作为一个goodsList.wx ...

  9. C实现9种排序算法

    算法复杂度以及稳定性分析 算法名称 平均时间 辅助空间 稳定性 冒泡排序 O(n2) O(1) 是 选择排序 O(n2) O(1) 否 插入排序 O(n2) O(1) 是 自底向上归并排序 O(nlo ...

  10. nyoj------擅长排列的小明

    擅长排列的小明 时间限制:1000 ms  |           内存限制:65535 KB 难度:4   描述 小明十分聪明,而且十分擅长排列计算.比如给小明一个数字5,他能立刻给出1-5按字典序 ...