Code Monkey home page Code Monkey logo

torsniff's People

Contributors

bigbadjohn562 avatar fanpei91 avatar imtypist avatar radiantmoxie avatar redfoxius avatar sean-liang avatar shuding avatar tadev avatar welefen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

torsniff's Issues

疑似内存泄露.

好些人运行了几个小时, 内存就占满了, 然后自动退出, 怀疑是内存泄露? 也许是TCP 连接数超载? 我得解决解决.

完全 ES5 化.

Node.js 最新版都不完全支持 ES6, 开发都要那么多辅助性的玩意儿, 太憋屈了. 还是完全 ES5 化, 不混用. 等 Node.js 真的完全支持后, 再 ES6 化.

会 JavaScript 的, 都会 ES5, 但不一定会 ES6.

Web UI + 数据保存

数据存储到MySQL, 存储所有信息, 以便于后期下载资源, 做到 Web 在线播放视频.

再搞个 Web UI, 做到手动管理, 相当于控制系统.

请问为什么安装了node和git拿到源码编译之后运行报错?新手还请指导一下,谢谢

[root@localhost w]# node p2pspider/test/index.js
events.js:24
this.domain = null;
^

TypeError: Cannot set property 'domain' of undefined
at EventEmitter.init (events.js:24:15)
at EventEmitter (events.js:6:21)
at P2PSpider (/root/w/p2pspider/lib/index.js:10:18)
at Object. (/root/w/p2pspider/test/index.js:5:11)
at Module._compile (module.js:409:26)
at Object.Module._extensions..js (module.js:416:10)
at Module.load (module.js:343:32)
at Function.Module._load (module.js:300:12)
at Function.Module.runMain (module.js:441:10)
at startup (node.js:134:18)

修炼九阴真经

哥我要修炼九阴真经去了(数据结构+算法), 到时候把这个 p2pspider 打造成怪兽性能级别.

编码问题

metadata是啥编码格式?我转了半天的码,还是存了一堆乱码进来

这个软件具体怎么使用?

按你发的代码说明里面运行了一下,没有任何反应,命令执行成功了。
怎么回事? 难道还要单独安装BT客户端吗? 还要X-server ?

Connection refused

用torsniff -p 8899启动后,终端已经开始显示种子信息了
curl 127.0.0.1:8899还是提示curl: (7) Failed to connect to 127.0.0.1 port 8899: Connection refused

防止多个异步请求对同一个 infohash 进行 metadata 下载.

比如 A 异步请求正在下载:

{
    infohash: 'e834c096cb8608b9fec9256ec4da8c7aad22d680',
    rinfo: {address: '192.168.1.1', port: 6881}
}

A 异步还没成功下载 metadata 或者还没下载完 metadata 的时候, 接着又来了 B 异步请求下载:

{
    infohash: 'e834c096cb8608b9fec9256ec4da8c7aad22d680', // 跟 A 异步请求的 infohash 一样.
    rinfo: {address: '192.168.3.1', port: 6882} // 跟 A 异步请求不一样
}

在未实现这个需求的时候, 程序是又会发起 B 异步请求去下载metadata, 这就显得多余(万一 A 请求最终能成功下载 metadata呢?)

那么, 需要一个机制, 不需要借助外部数据, 防止重复请求下载 metadata (即使借助了数据库, 也没用).

另外, 有时候, 一个 infohash 多个 peer, 也不一定在第一个 peer 那里就能成功下载 metadata, 那么就从第二个 peer 那里请求下载, 直到下载成功或者不再有下一个 peer 的时候才会停止.

实现这个的时候 注意内存泄露的问题.

一旦实现了这个, 将会是质的飞跃!

运行test。出错

buffer.js:772
    throw new RangeError('Attempt to write outside buffer bounds');
    ^

RangeError: Attempt to write outside buffer bounds
    at Buffer.write (buffer.js:772:11)
    at fromString (buffer.js:238:26)
    at Function.Buffer.from (buffer.js:131:12)
    at new Buffer (buffer.js:112:17)
    at Function.encode.bytes (/usr/src/p2pspider/node_modules/bencode/lib/encode.js:45:17)
    at Function.encode.dict (/usr/src/p2pspider/node_modules/bencode/lib/encode.js:79:12)
    at Function.encode._encode (/usr/src/p2pspider/node_modules/bencode/lib/encode.js:33:18)
    at Object.encode (/usr/src/p2pspider/node_modules/bencode/lib/encode.js:9:10)
    at DHTSpider.sendKRPC (/usr/src/p2pspider/lib/dhtspider.js:27:23)
    at DHTSpider.sendFindNodeRequest (/usr/src/p2pspider/lib/dhtspider.js:52:10)
    at .<anonymous> (/usr/src/p2pspider/lib/dhtspider.js:57:14)
    at Array.forEach (native)
    at DHTSpider.joinDHTNetwork (/usr/src/p2pspider/lib/dhtspider.js:56:21)
    at .<anonymous> (/usr/src/p2pspider/lib/dhtspider.js:173:18)
    at Timeout.wrapper [as _onTimeout] (timers.js:417:11)
    at tryOnTimeout (timers.js:224:11)

请问如何解决

Can't use high ports

Error: invalid argument "61298" for "-p, --port" flag: strconv.ParseInt: parsing "61298": value out of range panic: could not start: invalid argument "61298" for "-p, --port" flag: strconv.ParseInt: parsing "61298": value out of range

内网转发6881

我家里用的电信100M光线,PPPOE拨号可以得到公网IP。
在我的linux路由器上执行:
iptables -t nat -A PREROUTING -p udp --dport 6881 -j DNAT --to-destination 192.168.8.168:6881
将访问公网IP的6881端口UDP协议转发到内网192.168.8.168的macbookAir上,macbookAir上再运行node test/index.js 等了10来分钟没抓到包。很想请教下局域网内还要做怎么设置?

运行test问题

@Fuck-You-GFW 作者居然把之前的问题关掉了https://github.com/Fuck-You-GFW/p2pspider/issues/56,指的重开一个。我用作者推荐的vps vultr测试了下。发现确实没有之前提到的问题。不过我发现用vultr的vps跑dht程序速度很慢,一分钟只得到几个infohash,跟digitalocean家的差远了。难道之前遇到的问题是由于网络或者处理速度的问题?请作者在digitalocean vps上测试下。或者我提供vps让作者测试下。

不知道这样运行对不对?

我把release 的package下载下来
chmod +x packagename然后 就 nohup ./packagename&

之后就没动静了...
就只有一句话的输出 running, it may take a few minutes...

有没有什么地方有错的?之后大概需要等待几天时间会有结果出现

Windows: fileutil.TryLockFile panic

On windows, fileutil fails to lock the file using os.O_RDWR|os.O_CREATE (66)

running, it may take a few minutes...
panic: flag 66 is not supported

goroutine 104 [running]:
github.com/fanpei91/torsniff/vendor/go.etcd.io/etcd/pkg/fileutil.open(0xc0001d21e0, 0x47, 0x42, 0xc0000001ed, 0x0, 0x0, 0x0)
        H:/GoWork/src/github.com/fanpei91/torsniff/vendor/go.etcd.io/etcd/pkg/fileutil/lock_windows.go:82 +0x31c
github.com/fanpei91/torsniff/vendor/go.etcd.io/etcd/pkg/fileutil.TryLockFile(0xc0001d21e0, 0x47, 0x42, 0x1ed, 0x0, 0xc0003e18c0, 0x16)
        H:/GoWork/src/github.com/fanpei91/torsniff/vendor/go.etcd.io/etcd/pkg/fileutil/lock_windows.go:44 +0x52
main.(*torsniff).saveTorrent(0xc00008e190, 0xc00000e420, 0x28, 0xc000368000, 0xea23, 0xea23, 0x0, 0x0)
        H:/GoWork/src/github.com/fanpei91/torsniff/torsniff.go:206 +0x154
main.(*torsniff).work(0xc00008e190, 0xc0001581c0, 0xc00004e120)
        H:/GoWork/src/github.com/fanpei91/torsniff/torsniff.go:174 +0x1f5
created by main.(*torsniff).run
        H:/GoWork/src/github.com/fanpei91/torsniff/torsniff.go:138 +0x145

It works fine using os.OpenFile

运行leveldb.js,报错

你好!运行leveldb.js,程序报错,如下,nodejs:0.12.13。求解答

[root@iZ2848wc4tlZ p2p]# node samples/leveldb.js
/root/p2p/node_modules/level/node_modules/leveldown/node_modules/bindings/bindings.js:83
throw e
^
Error: /root/p2p/node_modules/level/node_modules/leveldown/build/Release/leveldown.node: ELF load command past end of file
at Error (native)
at Module.load (module.js:355:32)
at Function.Module._load (module.js:310:12)
at Module.require (module.js:365:17)
at require (module.js:384:17)
at bindings (/root/p2p/node_modules/level/node_modules/leveldown/node_modules/bindings/bindings.js:76:44)
at Object. (/root/p2p/node_modules/level/node_modules/leveldown/leveldown.js:4:46)
at Module._compile (module.js:460:26)
at Object.Module._extensions..js (module.js:478:10)
at Module.load (module.js:355:32)

TypeScript 化

一生"微软雅黑"的我, 不得不承认巨硬开源的 TypeScript 真的是个好东西. 作为被 JavaScript 折磨得痛不欲生的半吊子水的我, 舍不得 JavaScript 这么个"通吃"的编程语言, 又依恋静态编程语言的类型检查.

所以可以考虑用 TypeScript 来重构重构.

想用java实现

想用java实现这样的爬虫,但是没有头绪,想通过QQ请教您一些问题,希望得到一些指点。。。。

Translate to English?

Hi,

your project seems really nice but unfortunately I don't really understand your language. Is it possible to have an English README.md version?

Thanks in advance!

在家里局域网内的树莓派上安装

我在家里的树莓派2B上安装了这个包。
Internet公网=====路由器(PPPOE拨号)==== 6881端口UDP转发到内部局域网树莓派。
似乎运行比较缓慢,有时长时间无输出,不太确定是端口转发的原因还是树莓派性能原因,还是其他的原因。
树莓派2代B型,CPU 900MHZ。应该也不至于跑的很慢了。

Can't bind to specific addresses

panic: listen udp4 192.168.50.68:6881: bind: cannot assign requested address

goroutine 1 [running]:
main.(*torsniff).run(0xc4200761e0)
        /Users/iTorm/go/src/github.com/fanpei91/torsniff/torsniff.go:170 +0x189
main.main.func1(0xc42009c000, 0xc420076190, 0x0, 0x5, 0x0, 0x0)
        /Users/iTorm/go/src/github.com/fanpei91/torsniff/torsniff.go:278 +0x304
github.com/fanpei91/torsniff/vendor/github.com/spf13/cobra.(*Command).execute(0xc42009c000, 0xc42007a010, 0x5, 0x5, 0xc42009c000, 0xc42007a010)
        /Users/iTorm/go/src/github.com/fanpei91/torsniff/vendor/github.com/spf13/cobra/command.go:762 +0x475
github.com/fanpei91/torsniff/vendor/github.com/spf13/cobra.(*Command).ExecuteC(0xc42009c000, 0x61877d, 0x13, 0xc420082460)
        /Users/iTorm/go/src/github.com/fanpei91/torsniff/vendor/github.com/spf13/cobra/command.go:852 +0x334
github.com/fanpei91/torsniff/vendor/github.com/spf13/cobra.(*Command).Execute(0xc42009c000, 0xc420072238, 0x61602c)
        /Users/iTorm/go/src/github.com/fanpei91/torsniff/vendor/github.com/spf13/cobra/command.go:800 +0x2b
main.main()
        /Users/iTorm/go/src/github.com/fanpei91/torsniff/torsniff.go:289 +0x5bf

Promise 化

目前 p2pspider 回调过于丑陋, 在能 Promise 化后更加易读的地方就 Promise 化, 最终目的就是代码好读也好写.

在CentOS,node6.0环境下报错

RT,正常clone工程后使用node test/index.js运行报错

util.js:556
ctor.prototype = Object.create(superCtor.prototype, {
^
TypeError: Object prototype may only be an Object or null
at Function.create (native)
at Object.exports.inherits (util.js:556:27)
at Object. (/home/git_clone/p2pspider/lib/btclient.js:30:6)
at Module._compile (module.js:456:26)
at Object.Module._extensions..js (module.js:474:10)
at Module.load (module.js:356:32)
at Function.Module._load (module.js:312:12)
at Module.require (module.js:364:17)
at require (module.js:380:17)
at Object. (/home/git_clone/p2pspider/lib/index.js:7:16)

dht.listen 实现有毛病

func (g *dht) listen() error {
	buf := make([]byte, 8192)
	for {
		n, addr, err := g.conn.ReadFromUDP(buf)
		if err == nil {
			go g.onMessage(buf[:n], *addr)
		}
	}
}

buf 变量应该放在 for 循环里

DHT Spider 比 BT Client 还要快, 可以有更好的协作方式.

DHT Spider 接收到的announce_peer请求速度要是比 BT Client 请求metadata速度快的话, 那么 BT Client就处于忙碌状态, 而 DHT Spider 却处于无意义的忙碌状态, 即 DHT Spider 还在发送不必要发送的find_node请求.

需要有个机制, 让这俩处于协调工作速度, 这样就能节省更多的带宽, 内存, CPU 等.

name 和 piece 信息为 Buffer 开头的字符串

{ info: 
   Dict {
     files: [ [Object], [Object], [Object], [Object] ],
     name: <Buffer 41 44 33 2e 33 38 45 4e>,
     'piece length': 2097152,
     pieces: <Buffer f0 b9 7d 28 6e 3d 8a 65 be c3 ba 98 e6 54 0f d1 1e 19 a9 78 10 57 e0 f8 46 e8 9c c6 0a e4 9e 7d f0 be 0f 32 32 3b 33 62 e2 8f bd a8 eb 8b cc f8 5e c7 ... > },
  address: '90.154.234.142',
  port: 18382,
  infohash: '8a2fbdccab4779b08c3fbb090ba9fa48da86723a',
  magnet: 'magnet:?xt=urn:btih:8a2fbdccab4779b08c3fbb090ba9fa48da86723a' }

请问是就这样显示还是哪里有问题?node 版本4.3.2和5.7.1都是如此

Log系统

可以有一个选项, 供使用者选择是否输出 log 信息. 比如错误信息, 提示信息, 警告信息什么的.

python p2p spider

我在头条上看到你有python 版的。 问一下有分享出来吗?

It never starts

Writing
running, it may take a few minutes...
and continuning on that forever , what i am doing wrong ?

某些集合可以改成Linked List

某些集合, 全是 append, remove 动作, 这可以改成 Linked List 数据结构, 这样算法复杂度就是O(1)了.

缺点: 空间换时间, 所以内存占用会更高.

这个需要讨论讨论.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.