orzogc / fake115uploader

模拟115网盘客户端的上传功能
GNU General Public License v3.0
256 stars 55 forks source link

已失效 #48

Closed 362227 closed 1 year ago

362227 commented 1 year ago

已失效,请修复,估计又改了什么东西

lloyd18 commented 1 year ago

是的,寄了,试了国内网络也不能上传

RiverChu0 commented 1 year ago

算法更新了,客户端不升级都无法上传。

kdurov commented 1 year ago

垃圾战5渣真是折腾的没完。

不知道有没临时替代方案。

362227 commented 1 year ago

https://github.com/funcman/docker_115pc 我在用这个

xwxbug commented 1 year ago

今天简单看了下115的客户端(版本 2.0.3.6) 希望对作者有帮助. 秒传接口 https://uplb.115.com/4.0/initupload.php?k_ec=一个KEY 使用[ec115.dll.ec115_encode]编码前的明文如下,编码后会返回这个k_ec和编码之后的内容

appid=0 &appversion=2.0.3.6 &fileid=文件SHA1 &filename=文件名 &filesize=文件大小 &sig=签名 &t=时间 &target=U_1_远程目录ID &userid=数字用户ID &token=计算出的token

sig签名的计算有变化: sz_text = userid + fileid + target + "0" result=sha1(sz_text ) ->转换为小写 sz_text= userkey + result + "000000"; result=sha1(sz_text ) ->转换为大写 其中使用的userid, fileid,target, userkey 均为大写

token的计算看起来也有变化 salt fileid filesize user_id time md5(user_id) app_version Qclm8MGWUv59TnrR0XPg 190898C29E7630A44AA3AED78174EEC4165A545E 6930496 10000000 1678196255 64127d822211dfc22511a5f9aca66666 2.0.3.6 然后整个字符串md5(中间的空格只是分割了演示,请直接拼接),其中md5(user_id)是小写

如果URI没有k_ec参数,服务器会返回消息说无效签名.其它的接口(比如用户信息/列表)无需k_ec

如果有ec115.dll.ec115_encode的算法望告知,没仔细去看,直接调用了客户端的去计算. 因为只是粗略的看了一下,有错误望指正.

update: 如果响应如此: {"request":"upload","status":7,"statuscode":701,"statusmsg":"sig invalid","pickcode":"","target":"U_1_2584847550000000000","version":"4.0","sign_key":"ba9c4f8e02534880df50e7ca82338013","sign_check":"2644110-2756230"}

如果statuscode为701,需要在真实文件中计算sign_check中的指定范围的SHA1(大写字母).作为重新提交的sign_val参数.sign_key参数原样返回. token的计算修正如下 md5(salt+fileid+filesize+sign_key+sha1(sign_check_data)+user_id+time+md5(user_id)+app_version)

因此,现阶段看起来服务器返回的文件范围是随机无法预测的(因为没有真实文件).我收集了几十PB的数据的还没来记得导入.现在看起来已经彻底寄了.只能寄希望于APP/MAC/LINUX/TV版本的没有这种操作. 愿这些数据安息.

RiverChu0 commented 1 year ago

期待大佬修复。虽然这次更改秒链不能用了,可是对于上传自己的文件还是可以的哟

jerryandtom007 commented 1 year ago

期待大佬修复。虽然这次更改秒链不能用了,可是对于上传自己的文件还是可以的哟

是的,秒链弄成ed2k也一样可以秒离,主要还是上传。 T3rry7f/fake115upload.py 现在还可以上传,就是不能传大于5G的文件,我现在把大于5G的都用tar分卷然后在上传。

RiverChu0 commented 1 year ago

期待大佬修复。虽然这次更改秒链不能用了,可是对于上传自己的文件还是可以的哟

是的,秒链弄成ed2k也一样可以秒离,主要还是上传。 T3rry7f/fake115upload.py 现在还可以上传,就是不能传大于5G的文件,我现在把大于5G的都用tar分卷然后在上传。

谢谢啊!我试一下看看行吗?

orzogc commented 1 year ago

https://github.com/T3rry7f/Fake115Upload/issues/25 115的转存功能应该是彻底寄了

jerryandtom007 commented 1 year ago

T3rry7f/Fake115Upload#25 115的转存功能应该是彻底寄了

00 渔佬那边似乎昨天晚上已经阶段性胜利了。 fake115uploader,能上传就行,-r和-m太好用了,又能文件夹又可以大文件给大佬点赞。T3rry7f/fake115upload.py只能传小于5G的...泪奔

RiverChu0 commented 1 year ago

T3rry7f/Fake115Upload#25 115的转存功能应该是彻底寄了

00 渔佬那边似乎昨天晚上已经阶段性胜利了,能上传就行,-r和-m太好用了,又能文件夹又可以大文件给大佬点赞。T3rry7f/fake115upload.py只能传小于5G的...泪奔

大佬这个渔佬在哪看的,在可用的大于5GB的上传方案没?

jerryandtom007 commented 1 year ago

T3rry7f/Fake115Upload#25 115的转存功能应该是彻底寄了

00 渔佬那边似乎昨天晚上已经阶段性胜利了,能上传就行,-r和-m太好用了,又能文件夹又可以大文件给大佬点赞。T3rry7f/fake115upload.py只能传小于5G的...泪奔

大佬这个渔佬在哪看的,在可用的大于5GB的上传方案没?

是我没有明确的断句,他那边是转存,不是上传用的 592767809

RiverChu0 commented 1 year ago

T3rry7f/Fake115Upload#25 115的转存功能应该是彻底寄了

00 渔佬那边似乎昨天晚上已经阶段性胜利了,能上传就行,-r和-m太好用了,又能文件夹又可以大文件给大佬点赞。T3rry7f/fake115upload.py只能传小于5G的...泪奔

大佬这个渔佬在哪看的,在可用的大于5GB的上传方案没?

是我没有明确的断句,他那边是转存,不是上传用的 592767809

不是吧?这么牛逼?转存居然还有戏?

vvlaw commented 1 year ago

T3rry7f/Fake115Upload#25 115的转存功能应该是彻底寄了

00 渔佬那边似乎昨天晚上已经阶段性胜利了。 fake115uploader,能上传就行,-r和-m太好用了,又能文件夹又可以大文件给大佬点赞。T3rry7f/fake115upload.py只能传小于5G的...泪奔

好像T3rry的不支持妙传?而且我试了传文件夹,出现了错误,貌似不支持整个文件夹下的文件上传?

362227 commented 1 year ago

期待大佬修复。虽然这次更改秒链不能用了,可是对于上传自己的文件还是可以的哟

是的,秒链弄成ed2k也一样可以秒离,主要还是上传。 T3rry7f/fake115upload.py 现在还可以上传,就是不能传大于5G的文件,我现在把大于5G的都用tar分卷然后在上传。

谢谢啊!我试一下看看行吗?

fake115upload.py是不是也失效了,今天我用不了了,你能用吗

362227 commented 1 year ago

期待大佬修复。虽然这次更改秒链不能用了,可是对于上传自己的文件还是可以的哟

是的,秒链弄成ed2k也一样可以秒离,主要还是上传。 T3rry7f/fake115upload.py 现在还可以上传,就是不能传大于5G的文件,我现在把大于5G的都用tar分卷然后在上传。

T3rry7f/fake115upload.py是不是5GB以内的也不行了 我今天晚上好好的在上传 突然不能上传了

jerryandtom007 commented 1 year ago

Bump version 0.4.1. deadblue大佬更新了0.4.1

orzogc commented 1 year ago

试试最新代码

orzogc commented 1 year ago

@xwxbug 我发现115的手机app只会请求一次initupload.php,是不是特别大的文件才会返回sign_check?

kdurov commented 1 year ago

@orzogc 试了下。有的文件上传会报错。但是随便找几个ytb视频下载下来测试上传没问题。不知道sig哪里问题。 测试的文件失败的均是超过5G的,但是超过5G也有成功的,不超5G的也有失败案例。 同一台VPS上上传,都是超过5G的文件。前一个上传成功后一个失败。搞不懂哪里问题。

2023/03/16 13:25:10 Cookies的值为:
2023/03/16 13:25:11 userID和userKey的值分别是:
2023/03/16 13:25:12 排序文件夹 0 成功
2023/03/16 13:25:13 秒传模式上传文件:rec.mp4
2023/03/16 13:26:52 initupload的链接是:https://uplb.115.com/4.0/initupload.php?k_ec=
2023/03/16 13:26:52 sig的值是:
2023/03/16 13:26:52 token的值是:
2023/03/16 13:26:52 k_ec的值是:
2023/03/16 13:26:53 秒传模式上传文件 rec.mp4 的响应体的内容是:
{"request":"upload","status":7,"statuscode":701,"statusmsg":"sig invalid","pickcode":"","target":"U_1_0","version":"4.0","sign_key":"","sign_check":""}
2023/03/16 13:26:53 秒传模式上传 rec.mp4 出现错误:fastUploadFile() error: 秒传模式上传 rec.mp4 失败
2023/03/16 13:26:53 现在开始使用断点续传模式上传
2023/03/16 13:26:53 断点续传模式上传文件:rec.mp4
2023/03/16 13:26:53 info的值:
{Endpoint:http://oss-cn-shenzhen.aliyuncs.com GetTokenURL:https://uplb.115.com/3.0/gettoken.php}
2023/03/16 13:26:54 OSS token的值:
&{StatusCode:200 AccessKeySecret: SecurityToken: Expiration:2023-03-16T14:26:54Z AccessKeyID: endpoint:http://oss-cn-shenzhen.aliyuncs.com}
2023/03/16 13:26:54 断点续传模式上传 rec.mp4 出现错误:multipartUploadFile() error: getBucket() error: bucket name  len is between [3-63],now is 0

能弄个跳过SHA1计算的临时debug用选项吗。上传时候随便丢个错误hash值? 每次上传都要等hashsum大文件非常慢(共享IO的VPS)

orzogc commented 1 year ago

@orzogc 试了下。有的文件上传会报错。但是随便找几个ytb视频下载下来测试上传没问题。不知道sig哪里问题。 测试的文件失败的均是超过5G的,但是超过5G也有成功的,不超5G的也有失败案例。 同一台VPS上上传,都是超过5G的文件。前一个上传成功后一个失败。搞不懂哪里问题。

2023/03/16 13:25:10 Cookies的值为:
2023/03/16 13:25:11 userID和userKey的值分别是:
2023/03/16 13:25:12 排序文件夹 0 成功
2023/03/16 13:25:13 秒传模式上传文件:rec.mp4
2023/03/16 13:26:52 initupload的链接是:https://uplb.115.com/4.0/initupload.php?k_ec=
2023/03/16 13:26:52 sig的值是:
2023/03/16 13:26:52 token的值是:
2023/03/16 13:26:52 k_ec的值是:
2023/03/16 13:26:53 秒传模式上传文件 rec.mp4 的响应体的内容是:
{"request":"upload","status":7,"statuscode":701,"statusmsg":"sig invalid","pickcode":"","target":"U_1_0","version":"4.0","sign_key":"","sign_check":""}
2023/03/16 13:26:53 秒传模式上传 rec.mp4 出现错误:fastUploadFile() error: 秒传模式上传 rec.mp4 失败
2023/03/16 13:26:53 现在开始使用断点续传模式上传
2023/03/16 13:26:53 断点续传模式上传文件:rec.mp4
2023/03/16 13:26:53 info的值:
{Endpoint:http://oss-cn-shenzhen.aliyuncs.com GetTokenURL:https://uplb.115.com/3.0/gettoken.php}
2023/03/16 13:26:54 OSS token的值:
&{StatusCode:200 AccessKeySecret: SecurityToken: Expiration:2023-03-16T14:26:54Z AccessKeyID: endpoint:http://oss-cn-shenzhen.aliyuncs.com}
2023/03/16 13:26:54 断点续传模式上传 rec.mp4 出现错误:multipartUploadFile() error: getBucket() error: bucket name  len is between [3-63],now is 0

能弄个跳过SHA1计算的临时debug用选项吗?每次上传都要等hashsum大文件非常慢(共享IO的VPS)

你再试试最新的代码

RiverChu0 commented 1 year ago

试试最新代码

可以,上传本地文件成功!(非秒传文件),谢谢大佬的付出!

kdurov commented 1 year ago

@orzogc 试了下。有的文件上传会报错。但是随便找几个ytb视频下载下来测试上传没问题。不知道sig哪里问题。 测试的文件失败的均是超过5G的,但是超过5G也有成功的,不超5G的也有失败案例。 同一台VPS上上传,都是超过5G的文件。前一个上传成功后一个失败。搞不懂哪里问题。

你再试试最新的代码

彻底解决前能考虑弄个跳过计算hash的选项吗?乱丢两个值上去。因为要测上传大文件,每次计算都可能花很久。 另外能麻烦添加个查看版本号参数吗?现在上传时候添加 -v 参数也不会显示版本号。

orzogc commented 1 year ago

@orzogc 试了下。有的文件上传会报错。但是随便找几个ytb视频下载下来测试上传没问题。不知道sig哪里问题。 测试的文件失败的均是超过5G的,但是超过5G也有成功的,不超5G的也有失败案例。 同一台VPS上上传,都是超过5G的文件。前一个上传成功后一个失败。搞不懂哪里问题。

你再试试最新的代码

彻底解决前能考虑弄个跳过计算hash的选项吗?乱丢两个值上去。因为要测上传大文件,每次计算都可能花很久。 另外能麻烦添加个查看版本号参数吗?现在上传时候添加 -v 参数也不会显示版本号。

hash最好不要跳过,不清楚错误的hash值会不会引发问题 https://github.com/orzogc/fake115uploader/issues/9 版本号我看看怎么弄

xwxbug commented 1 year ago

@xwxbug 我发现115的手机app只会请求一次initupload.php,是不是特别大的文件才会返回sign_check?

我自己实现的秒传中(从一个账号复制到另外一个账号,或者本地有真实文件的情况下),小文件看起来是直接成功的,初步观测小于100K左右(也许更小)?在写程序的时候,用的一个大约1M的文件,100%会随机抽查数据.因为接口是同一个,不大相信不同平台会有不同的处理.你可以生成几十斤的不同大小的小文件试试看.

kdurov commented 1 year ago

hash最好不要跳过,不清楚错误的hash值会不会引发问题 #9 版本号我看看怎么弄

虽然和这个接口无关。顺带问下,用了 -m 多分片上传的情况下是否进度条显示的速度就是非即时的?

xwxbug commented 1 year ago

前面 @kdurov 的这种需要不断重复上传的情况非常普遍.比如我经常需要重新上传大约100T的数据,部分删掉了,部分新增了,大部分的没变.我是先整个生成一遍hash,cache下来.中途不断更新cache.当闲得蛋疼了,再秒传这个cache.这样可以减少每次上传需要重新hash一遍的次数.减少磁盘IO.作者可以考虑也这样搞一个选项.

当然,以前是没这需求的,我也是这几天瞎折腾的,以前秒传方便,生成个sha1文本丢几年也不着急.

orzogc commented 1 year ago

@xwxbug 我发现115的手机app只会请求一次initupload.php,是不是特别大的文件才会返回sign_check?

我自己实现的秒传中(从一个账号复制到另外一个账号,或者本地有真实文件的情况下),小文件看起来是直接成功的,初步观测小于100K左右(也许更小)?在写程序的时候,用的一个大约1M的文件,100%会随机抽查数据.因为接口是同一个,不大相信不同平台会有不同的处理.你可以生成几十斤的不同大小的小文件试试看.

新文件的话115也不可能知道sign_check的值,这岂不是可以随便给一个值?

xwxbug commented 1 year ago

印象中新文件并不会返回statuscode为701,也就没有再一次的请求.直接转到了分片上传的阶段.随便给一个应该也是失败.你可以试试看.说不定能发现新大陆.(原理上来说,115没有的新文件不大可能秒传,只能老老实实上传).

观察到的情况是:115客户端先试试秒传,有服务器存在的文件就抽查数据,不存在的就老老实实上传.

cafrew commented 1 year ago

试试最新代码

可以帮忙编译一个exe吗,感谢~🙏

edit: 已取得最新代码运行,谢谢作者,太牛啦~

fakedon commented 1 year ago

海外服务器上传任何文件都会报下面的错误,不管文件大小超不超过5G

上传第1个分片时出现错误:oss: service returned error: StatusCode=400, ErrorCode=EntityTooLarge, ErrorMessage="Your proposed upload exceeds the maximum allowed size."

orzogc commented 1 year ago

海外服务器上传任何文件都会报下面的错误,不管文件大小超不超过5G

上传第1个分片时出现错误:oss: service returned error: StatusCode=400, ErrorCode=EntityTooLarge, ErrorMessage="Your proposed upload exceeds the maximum allowed size."

上传很小的文件(几十到几百Kb)也是这样吗?

fakedon commented 1 year ago

海外服务器上传任何文件都会报下面的错误,不管文件大小超不超过5G 上传第1个分片时出现错误:oss: service returned error: StatusCode=400, ErrorCode=EntityTooLarge, ErrorMessage="Your proposed upload exceeds the maximum allowed size."

上传很小的文件(几十到几百Kb)也是这样吗?

测试很小的json文件上传成功 都是使用-m的方式上传的

orzogc commented 1 year ago

海外服务器上传任何文件都会报下面的错误,不管文件大小超不超过5G 上传第1个分片时出现错误:oss: service returned error: StatusCode=400, ErrorCode=EntityTooLarge, ErrorMessage="Your proposed upload exceeds the maximum allowed size."

上传很小的文件(几十到几百Kb)也是这样吗?

测试很小的json文件上传成功 都是使用-m的方式上传的

上传大文件时用-parts-num参数设置比较大的分片数量试试

fakedon commented 1 year ago

海外服务器上传任何文件都会报下面的错误,不管文件大小超不超过5G 上传第1个分片时出现错误:oss: service returned error: StatusCode=400, ErrorCode=EntityTooLarge, ErrorMessage="Your proposed upload exceeds the maximum allowed size."

上传很小的文件(几十到几百Kb)也是这样吗?

测试很小的json文件上传成功 都是使用-m的方式上传的

上传大文件时用-parts-num参数设置比较大的分片数量试试

设置1、1000和10000报一样的错误,不知道是不是海外ip的问题

jerryandtom007 commented 1 year ago

海外服务器上传任何文件都会报下面的错误,不管文件大小超不超过5G 上传第1个分片时出现错误:oss: service returned error: StatusCode=400, ErrorCode=EntityTooLarge, ErrorMessage="Your proposed upload exceeds the maximum allowed size."

上传很小的文件(几十到几百Kb)也是这样吗?

测试很小的json文件上传成功 都是使用-m的方式上传的

上传大文件时用-parts-num参数设置比较大的分片数量试试

外面的机器没有问题不管文件大小,更新后我一直正常使用

362227 commented 1 year ago

-parts-num 我设置是40,成功率很高
5GB左右的,-u应该也可以

fakedon commented 1 year ago

海外服务器上传任何文件都会报下面的错误,不管文件大小超不超过5G 上传第1个分片时出现错误:oss: service returned error: StatusCode=400, ErrorCode=EntityTooLarge, ErrorMessage="Your proposed upload exceeds the maximum allowed size."

上传很小的文件(几十到几百Kb)也是这样吗?

测试很小的json文件上传成功 都是使用-m的方式上传的

上传大文件时用-parts-num参数设置比较大的分片数量试试

外面的机器没有问题不管文件大小,更新后我一直正常使用

老哥能说下用的哪里的机器吗

SAOJSM commented 1 year ago

海外服务器上传任何文件都会报下面的错误,不管文件大小超不超过5G

上传第1个分片时出现错误:oss: service returned error: StatusCode=400, ErrorCode=EntityTooLarge, ErrorMessage="Your proposed upload exceeds the maximum allowed size."

尝试最新的代码, 用加拿大、美国、日本的机器都没问题 -parts-num=48 文件大小11.92G 使用指令 fake115uploader -v -m "/文件路径" 测试使用秒传上传

SAOJSM commented 1 year ago

提供过程程式码,隐藏隐私data

2023/04/03 03:17:25 Cookies的值为:
2023/04/03 03:17:26 userID和userKey的值分别是:
2023/04/03 03:17:28 排序文件夹 0 成功
2023/04/03 03:17:29 秒传模式上传文件:/root/Aria2/SIRO-3179.m2ts.iso
2023/04/03 03:19:43 initupload的链接是:https://uplb.115.com/4.0/initupload.php?k_ec=
2023/04/03 03:19:43 sig的值是:
2023/04/03 03:19:43 token的值是:
2023/04/03 03:19:43 k_ec的值是:
2023/04/03 03:19:45 initupload的链接是:https://uplb.115.com/4.0/initupload.php?k_ec=
2023/04/03 03:19:45 sig的值是:
2023/04/03 03:19:45 token的值是:
2023/04/03 03:19:45 k_ec的值是:
2023/04/03 03:19:46 秒传模式上传文件 /root/Aria2/SIRO-3179.m2ts.iso 的响应体的内容是:
{"request":"upload","status":2,"statuscode":0,"statusmsg":"","pickcode":"","target":"","version":"4.0","fileid":0,"fileinfo":""}
2023/04/03 03:19:46 秒传模式上传 /root/Aria2/SIRO-3179.m2ts.iso 成功
上传成功的文件(1):
/root/Aria2/SIRO-3179.m2ts.iso
上传失败的文件(0):
保存上传进度的文件(0):
SAOJSM commented 1 year ago

T3rry7f/Fake115Upload#25 115的转存功能应该是彻底寄了

00 渔佬那边似乎昨天晚上已经阶段性胜利了,能上传就行,-r和-m太好用了,又能文件夹又可以大文件给大佬点赞。T3rry7f/fake115upload.py只能传小于5G的...泪奔

大佬这个渔佬在哪看的,在可用的大于5GB的上传方案没?

是我没有明确的断句,他那边是转存,不是上传用的 592767809

能提供下如何在DC找到渔佬吗?想和他讨论下怎么改程式码