对百度网盘API的一些分析(非OAuth) - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
yangff
V2EX    分享创造

对百度网盘API的一些分析(非OAuth)

  •  
  •   yangff 2013-09-16 20:33:1 +08:00 19697 次点击
    这是一个创建于 4409 天前的主题,其中的信息可能已经有所发展或是发生改变。
    这 **不是** 使用OAuth认证授权的百度网盘API。

    先上github,https://github.com/Yangff/node_pcsapi 。
    首先这是个坑爹玩意(我自己这么认为的),之所以这么说是因为我被jugglingdb 这奇葩玩意恶心到了。如果要用的话,我想你只需要pcsapi.js和baiduapi.js的内容就行了,一看就懂很容易的……

    然后来说说API,因为手中条件有限,所有所有的API都是针对
    http://pan.baidu.com
    结合开发者的PCS api手册分析得到的(因为他们的接口几乎一样……)

    直接使用百度的API,需要用到baidu的cookie(不要session……真神奇)。然后根据相关的RestfulAPI直接请求就行了。API列表可以抓包,或者在源代码里面搜索RestfulAPI.XXX,XXX可以在源代码里面找,或者直接看这个https://github.com/Yangff/node_pcsapi/blob/master/apilist.txt
    删除有点问题,因为删除用到了一个Token,这个Token似乎是直接塞在pan.baidu.com下一个script标签里面的……

    主要写的还是baidu登录的验证……那个比较蛋疼,登录的相关流程我写在这里了:
    https://github.com/Yangff/node_pcsapi/blob/master/baidulogin.md

    最后写完发现我特么应该针对手机客户端抓包的……

    最后,最后,请允许我黑jugglingdb ,jugglingdb-mysql 和 requestify,这也是我为什么没有直接打包成package的原因之一,另一个原因是我根本不会(雾)。请不要尝试更换这三个东西……代码我都改过,原版的都有问题,我也懒得去gituhb上提了,都是泪。这也是我为什么说最好不要管除了pcsapi.js和baiduapi.js以外的文件……另一方面我相信我的代码风格会严重破坏你现有的代码可维护性。

    另外说一句,百度可能会要求你输入验证码,所以我在baiduapi里面塞了一个http。
    使用的时候需要baiduapi.start(port),如果出现验证码要求,访问这个地址:port,点击验证码输入……
    不过也因此,如果出现异常程序不会自动退出……如果卡太久大概是异常了……

    还有一个问题想要问一下,
    JSON.parse的时候Failed parsing expected JSON response, returned raw response
    然后我输出来看,似乎是百度在返回的时候把“"”写成“'”了,但是我替换之后,实际上JSON确实成功转变成对象了……可是还报这个错,但是不影响登录结果,Cookie也能取到……这是为啥。
    26 条回复    1970-01-01 08:00:00 +08:00
    yangff
        1
    yangff  
    OP
       2013-09-16 20:36:18 +08:00
    对了,我还要黑一下百度PCS的rapidupload,特么,MD5是hex的,CRC用数字,还提示md5错误,多大仇。
    sanddudu
        2
    sanddudu  
       2013-09-16 20:39:54 +08:00
    顺毛
    msg7086
        3
    msg7086  
       2013-09-16 21:58:45 +08:00
    @yangff 啥?

    /rest/2.0/pcs/file?method=rapidupload&access_token=喵喵喵&path=/apps/喵/喵喵喵&content-length=228842501&content-md5=f8ff63ffa65d2c812334bd337e361e5d&slice-md5=54abccf0eaec7b777cce183c5e86bd5e&content-crc32=25de6716

    这里的CRC32,其实不填也能秒,因为有一次我用cksfv算crc的时候解析字符串错误,填了奇怪的符号进去,结果竟然秒成功了……

    不知道从Pan API能不能这么做。
    msg7086
        4
    msg7086  
       2013-09-16 22:03:12 +08:00
    顺便md5错误其实挺正常。我本地有2个文件,上传完以后再当场秒,结果竟然秒不到……

    从API拿文件信息里的md5是正确的,但是rapidupload死活说找不到md5我顿时就跪了
    yangff
        5
    yangff  
    OP
       2013-09-16 22:20:31 +08:00
    @msg7086 ><真是无情,反正这就是坑爹。
    我说的md5错误是说,crc错了,然后报md5错误……
    至于pcs那里的rapidupload不填crc行不行我不清楚……反正网盘那里是要正确的。
    yangff
        6
    yangff  
    OP
       2013-09-16 22:22:11 +08:00
    另外,Pan的api很多自相矛盾的地方,比如content-crc32,这是文档里写的,contentcrc32这是他实际用的……
    yangff
        7
    yangff  
    OP
       2013-09-16 22:24:14 +08:00
    msg7086
        8
    msg7086  
       2013-09-16 22:51:59 +08:00
    @yangff 这个是4楼说的bug对应的错误样本啊。另外access_token是api token。贴出来我只是举个栗子而已……

    反正我还是偏向于走正常的API而不是抓包或者逆向。实在没有的功能 (比如抓下载链接或者转存) 才考虑用奇怪的API来做。
    yangff
        9
    yangff  
    OP
       2013-09-17 10:03:33 +08:00 via Android
    @msg7086 api拿到的外链会泄漏ak。个人倒没有什么问题。做文件存储不行。
    taobeier
        10
    taobeier  
       2013-09-17 12:31:22 +08:00
    辛苦了
    msg7086
        11
    msg7086  
       2013-09-17 17:29:09 +08:00
    @yangff 先把整个apps目录共享出来,然后从wap端抓下载地址,然后拿第一跳302的Location就行了。
    yangff
        12
    yangff  
    OP
       2013-09-17 20:58:35 +08:00
    @msg7086 ……这是靠共享拿外链吧,怕被暴菊
    @orzFly 快来献身说法。
    msg7086
        13
    msg7086  
       2013-09-17 21:08:04 +08:00
    @yangff 何菊之爆?不懂
    yangff
        14
    yangff  
    OP
       2013-09-17 21:36:23 +08:00
    @msg7086 随手举报……幸福一生……
    msg7086
        15
    msg7086  
       2013-09-18 22:03:11 +08:00
    @yangff 你可以试试看 http://lc.7086.in/set.php?sid=20 我觉得一般人应该拿不到原始账号才对……
    yangff
        16
    yangff  
    OP
       2013-09-18 22:27:04 +08:00
    @msg7086 访问不了0 0
    moonlightheng
        18
    moonlightheng  
       2013-09-27 10:23:10 +08:00
    新手求指教啊,用秒传参数没太懂,content-md5=f8ff63ffa65d2c812334bd337e361e5d&slice-md5=54abccf0eaec7b777cce183c5e86bd5e&content-crc32=25de6716 这三个参数怎么从文件获得呢,有没有工具类,最好是java的
    yangff
        19
    yangff  
    OP
       2013-09-27 10:24:57 +08:00 via Android   1
    byniu
        20
    byniu  
       2013-10-09 18:15:44 +08:00
    @msg7086 求教,slice-md5是什么MD5,怎么算出来的?
    yangff
        21
    yangff  
    OP
       2013-10-09 18:35:49 +08:00 via Android   1
    msg7086
        22
    msg7086  
       2013-10-09 18:35:59 +08:00   1
    loveshouhu
        23
    loveshouhu  
       2014-02-20 17:14:48 +08:00
    请注意,如果有验证码……恭喜悲剧再见。 这句话好欠啊。。23333
    yangff
        24
    yangff  
    OP
       2014-02-20 20:04:53 +08:00
    @loveshouhu 登录验证码我处理了。下载自己网盘里面的东西是不用验证码的。
    loveshouhu
        25
    loveshouhu  
       2014-02-20 23:16:30 +08:00
    @yngff 我就在想,为什么百度不能提供一套针对个人使用自己网盘的api。。。
    yangff
        26
    yangff  
    OP
       2014-02-20 23:27:37 +08:00
    @loveshouhu pcs除了只能在工作目录使用外基本满足要求,其他的可以直接用百度网盘在web上的api,其实挺清晰的。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2785 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 14:27 PVG 22:27 LAX 07:27 JFK 10:27
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86