Mikubill / cowtransfer-uploader

Simple Cowtransfer Uploader/Downloader in Golang
MIT License
436 stars 58 forks source link

上传存在问题 #37

Closed Pandaft closed 3 years ago

Pandaft commented 3 years ago

我尝试上传 2.5GB 的文件但是发现会出错,remember-me cookie 用的是 Pro 会员的(下面已隐藏处理):

# ./cowtransfer-uploader --cookie="remember-me=(cookie remember-me value);" -p 8 -t 3 -s ./uploads/

getSendConfig(single mode) returns error: File size exceed, no payment found
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x73462d]

goroutine 1 [running]:
main.upload(0xc000044d50, 0x1, 0x1)
        /home/runner/work/cowtransfer-uploader/cowtransfer-uploader/uploader.go:108 +0x1ed
main.main()
        /home/runner/work/cowtransfer-uploader/cowtransfer-uploader/main.go:81 +0x30b

我一开始以为是 cookie 过期了于是到奶牛快传网站上重新获取 remember-me 但是仍然还是一样的结果。 但是我注意到现在多了一个叫 remember-mev2 的 cookie,之前是没有的,然后我尝试用它替换旧的cookie:

# ./cowtransfer-uploader -cookie="remember-me=(cookie remember-mev2 value);" -p 8 -t 3 -s ./uploads/

getSendConfig(single mode) returns error: File size exceed, no payment found
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x30 pc=0x73462d]

goroutine 1 [running]:
main.upload(0xc000044d50, 0x1, 0x1)
        /home/runner/work/cowtransfer-uploader/cowtransfer-uploader/uploader.go:108 +0x1ed
main.main()
        /home/runner/work/cowtransfer-uploader/cowtransfer-uploader/main.go:81 +0x30b

然后我又尝试改成这样:

# ./cowtransfer-uploader -cookie="remember-mev2=(cookie remember-mev2 value);" -p 8 -t 3 -s ./uploads/

Destination: https://***.cowtransfer.com/s/**********
Local: uploads/files.zip
2.50 GiB / 2.50 GiB [------------------------------------------------------------------------------------------------------------------------------------------------------------------] 100.00% 56.60 MiB p/s 45s
complete upload(single mode) returns error: Post "https://cowtransfer.com/api/transfer/complete": context deadline exceeded (Client.Timeout exceeded while awaiting headers)

这次终于能正常上传了,虽然链接和取件码都是可用的,但是到最后会抛出一个错误。 然后我又试着去掉 -s 再上传:

# ./cowtransfer-uploader -cookie="remember-mev2=(cookie remember-mev2 value);" -p 8 -t 3 ./uploads/

Destination: https://***.cowtransfer.com/s/***********
Local: uploads/files.zip
2.50 GiB / 2.50 GiB [---------------------------------------------------------------------------------------------------] 100.00% 61.34 MiB p/s 42s
complete upload returns error: Post "https://cowtransfer.com/api/transfer/complete": context deadline exceeded (Client.Timeout exceeded while awaiting headers), onfile: uploads/files.zip

还是会抛出错误……

Pandaft commented 3 years ago

不知道为什么又恢复正常了……

Pandaft commented 3 years ago

新cookie也不行了好像

wisinfun commented 3 years ago

我这也是,新的cookie也失效了

Mikubill commented 3 years ago

貌似登录用户需要加入额外的authorization头进行请求,否则默认为匿名用户...晚点我修复一下(

Mikubill commented 3 years ago

已修复。使用最新版本即可,如果还有问题欢迎补充

需要Cookie中remember-mev2和cow-auth-token的内容,即:

./cowtransfer-uploader -c "remember-mev2=...;" -a "<cow-auth-token>" file