[bittorrent] 从http tracker 获取peers

知道了 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 为查询要间隔的时间

当 compat 为1时, peers 为一个字段串, 每6个字节代表一个peer,前四个字节为ip(网络字节),后两个为port(网络字节)

这样我们就得到了其它使用bt的客户

blog.csdn : bittorrent, python, tracker, 脚本

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值