点滴记忆

使用emlog搭建的站点

从http tracker 获取peers

2019-8-29 kurly

知道了 torrent 文件和格式,便可以利用它的 tracker 地址得到其它客户端来下载文件,查看 meta['announce']的内容,是一个 形如 http://tracker.cnxp.com:8080/announce 的地址,我们便可以向它请求来获得peers.

请求包括以下几个字段:

info_hash 为 torrent 文件中 info 部分进行 encode 后的hashcode, 长度为20字节, 即 sha.new(bencode(info)).digest()
peer_id 自已的客户端产生的20个字节的随机值
ip 自己的IP
port 自己监听的端口
uploaded 为上传的流量
downloaded 为下载的流量
left 为未获取文件的大小
compact 是否是用紧凑模式, 当为 1 时, 返回的peers 为6的整数倍, 并且没有对方的peerid
知道了这些, 我们就可以发送请求来获取peers 了, 发送格式为 http://tracker.com/?info_hash=xxx&peer_id=xxx ...., 由于数据并非全是ascII字符,所以需要使用 urllib.urlencode 转义, 当 compat 为0时,

返回的数据同样是使用 bencode 编码的, 解码后为一个字典,包括peers, interval 字段, peers 为一个列表,每一项为一个字典,包括

ip
port
peer_id
interval 为查询要间隔的时间

原文链接:https://blog.csdn.net/xkou/article/details/1659945

标签: BT

发表评论: