bjszz 发表于 2022-4-18 15:06

利用c#.net框架分析百度网盘api数据

https://www.52pojie.cn/thread-1621012-1-1.html

上一篇文章分析了百度网盘官方提供的api,但是官方只提供了转存文件的api,并没有提供获取分享列表的api,有时我们需要获取分享列表后缀文件,来筛选保存对象。
分析百度网盘api,利用浏览器的检查功能,获取不到百度api的接口,需要借助抓包分析工具来获取,
获取工具为,Fiddler Classic,大家都很熟悉,我也不在介绍,我只是给大家分享自己写的c#源码,实现提交,返回的请求。

1、首先要获取到百度网盘bdtoken数据。分析百度网盘的cookie,可以发现,最主要的就是sekey的值,把上一帖子中获取到的sekey加入到cookie中,然后通过
string BDSTOKEN_URL = "https://pan.baidu.com/api/loginStatus?clienttype=0&web=1";
这个链接,通过加入了刚才cookie的get提交方法,然后通过正则就可以获取到bdtoken.

2、写一个递归函数来,提交和获取百度网盘分享文件列表的api接口,通过返回数据判断分析每个文件的后缀。代码为:
public class mulu
    {
      public static bool hdmu(JObject jo,string cookie,string uk,string shareid,string bdtk,bool geshi) {

            if (jo["list"] != null)
            {
                for (int i = 0; i < jo["list"].Count(); i++)
                {

                  var isdir = jo["list"]["isdir"].ToString();
                  if (isdir.Equals("1"))
                  {
                        var server_filename = jo["list"]["server_filename"].ToString();
                        var path = jo["list"]["path"].ToString();
                        string bdapi = "https://pan.baidu.com/share/list?uk=" + uk + "&shareid=" + shareid + "&order=other&desc=1&showempty=0&web=1&page=1&num=100&dir=" + path + "&t=0.049872092412544866&channel=chunlei&web=1&app_id=250528&bdstoken=" + bdtk + "&logid=QTc1M0FFNzczRkI0MTU0RkMxRkE4QUI1Qjk1QzYyQkI6Rkc9MQ==&clienttype=0";
                        var bdhtml = method.GetUrbd(bdapi, "utf-8", cookie);
                        JObject jo1 = (JObject)JsonConvert.DeserializeObject(bdhtml);
                        return hdmu(jo1, cookie, uk, shareid, bdtk, geshi);
                  }
                  else
                  {
                        var server_filename = jo["list"]["server_filename"].ToString();
                        string[] balance = new string[] { "doc", "docx", "dot", "wps", "rtf", "pdf", "xls", "xlsx", "et", "ppt", "xlt", "pptx", "pps","zip","rar","7z" };
                        if (server_filename.Contains("."))
                        {
                            var sfile = server_filename.Split('.');
                            for (int j = 0; j < balance.Length; j++)
                            {
                              if (balance == sfile)
                              {
                                    geshi = true;
                                    return geshi;
                                    break;
                              }
                            }
                        }
                  }
                }
            }
            else { return false; }
            return geshi;
      }
    }
代码中包含了通过抓包工具获取的百度网盘api获取文件列表接口,通过判断语句就可以根据后缀来分来筛选了。
分析比较简单,通过封账就可以和帖子组合使用了。

ljt0606 发表于 2022-4-18 16:22

感谢楼主无私分享,万分感谢~~~

wtuqi 发表于 2022-4-29 13:26

{:1_921:}支持+1

wtuqi 发表于 2022-6-12 11:30

这篇不错,较前章确有很大提深

日比兔 发表于 2022-7-5 23:16

666谢谢楼主分享。。。。

live5566 发表于 2022-7-27 18:33

谢谢楼主分享啊 谢谢啊
页: [1]
查看完整版本: 利用c#.net框架分析百度网盘api数据