https://www.52pojie.cn/thread-1621012-1-1.html
上一篇文章分析了百度网盘官方提供的api,但是官方只提供了转存文件的api,并没有提供获取分享列表的api,有时我们需要获取分享列表后缀文件,来筛选保存对象。
分析百度网盘api,利用浏览器的检查功能,获取不到百度api的接口,需要借助抓包分析工具来获取,
获取工具为,Fiddler Classic,大家都很熟悉,我也不在介绍,我只是给大家分享自己写的c#源码,实现提交,返回的请求。
1、首先要获取到百度网盘bdtoken数据。分析百度网盘的cookie,可以发现,最主要的就是sekey的值,把上一帖子中获取到的sekey加入到cookie中,然后通过
[C#] 纯文本查看 复制代码 string BDSTOKEN_URL = "https://pan.baidu.com/api/loginStatus?clienttype=0&web=1";
这个链接,通过加入了刚才cookie的get提交方法,然后通过正则就可以获取到bdtoken.
2、写一个递归函数来,提交和获取百度网盘分享文件列表的api接口,通过返回数据判断分析每个文件的后缀。代码为:
[C#] 纯文本查看 复制代码 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"][i]["isdir"].ToString();
if (isdir.Equals("1"))
{
var server_filename = jo["list"][i]["server_filename"].ToString();
var path = jo["list"][i]["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"][i]["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('.')[1];
for (int j = 0; j < balance.Length; j++)
{
if (balance[j] == sfile)
{
geshi = true;
return geshi;
break;
}
}
}
}
}
}
else { return false; }
return geshi;
}
}
代码中包含了通过抓包工具获取的百度网盘api获取文件列表接口,通过判断语句就可以根据后缀来分来筛选了。
分析比较简单,通过封账就可以和帖子组合使用了。 |