之前在做自动登录时,想着能不能通过获取动态javascript代码来获取DIV里的内容,从而获取文件列表和相关的信息,但是一番查阅资料后无果,大家如果有办法请不吝赐教,^_^。
后来在CSDN上看到了通过hook API来监听webbrowser的通信,觉得此法可行,于是在一番尝试之后终于成功了。
链接是Hook浏览器控件WebBrowser对WININET.dll的调用

首先通过httpwatch知道webbrowser获取文件列表的GET 是

/files?aid=0&cid=0&o=user_ptime&asc=0
&offset=0&show_dir=1&limit=24&code=&scid=&snap=0
&natsort=1&source=&format=json HTTP/1.1

有些参数的值可能每次不一样,但是每次前面都是

/files?aid=

所以从这里下手。通过多次调试,我最终留下了两个API:HttpOpenRequestW,InternetReadFile
原来的作者HOOK了很多API,但是对于获取文件列表来说,其它没有作用,我全删了,大家可以酌情增删。

流程大概是:

  1. 在HttpOpenRequestW里判断请求的URL,是不是”/files?aid=”,是的话就设置一个标志flag=1
  2. 在InternetReadFile里,直接判断标志flag是不是等于1,是的话把传进来的指针里的内容全部copy出来,存到一个file.txt中
BOOL WINAPI CWininetHook::_InternetReadFile(HINTERNET hFile,LPVOID lpBuffer,DWORD dwNumberOfBytesToRead, LPDWORD lpdwNumberOfBytesRead)
{//Access violationBOOL result=s_pfnInternetReadFile(hFile,lpBuffer,dwNumberOfBytesToRead,lpdwNumberOfBytesRead);if (flag==1){char tempBuffer[10000]={0};int coun2=dwNumberOfBytesToRead;        memcpy_s(tempBuffer,coun2,lpBuffer,coun2);//打开一个文件,文本格式,如果存在不删为0,只写,文件打开后禁止其他进程对文件的读写操作,CStdioFile myFile("file.txt",       CFile::typeText|CFile::modeCreate|CFile::modeNoTruncate|CFile::modeWrite|CFile::shareExclusive);//追写,因为这个函数对同一个URL可能要执行很多次myFile.SeekToEnd(); myFile.WriteString(tempBuffer);     myFile.Close();}return result;
}
  1. 在MFC界面上添加list control控件,具体设置这里就不说了,可以参考这里点我
  2. 添加按钮,增加按钮事件,在这里做的事情是,
    1. 把file.txt中的内容copy到一个1w字节的char数组里(大小可以适当调整)。
    2. 建一个结构体,保存文件的相关信息。
typedef struct _FileContent
{char fid[100];              //fidchar name[100];             //名字int fSize;                  //文件大小int sta;                    //大小的单位char time[100];             //时间
}fileContent;
fileContent FileName[100];
  1. 循环找到”fid”,把fid后面的内容存到filename[0].fid中,这个值在删除文件时要用到,这里的下标0只是举例说明,需要循环的。
  2. 把”n”后面的值存到filename[0].name中,这就是文件名了,
  3. 把”s”后面的值存到filename[0].size中,这就是size了(不是大小哦)。
  4. .把”sta”后面的值存到filename[0].sta中,这是size的单位,所以说大小是由size和sta一起得出的。sta有两个值,2表示B(字节),1表示KB,等于1时,size可能非常大,需要除以1024往大的单位换算,MB,GB,TB,PB.
  5. 把”t”后面的值存到filename[0].time中,这就是上传时间了.

  6. 接下来就是循环在list控件上显示内容了

效果:

我把修改后的.h和.cpp打包上传了
这个HOOK.zip的使用也非常简单,在你的cXXdlg.cpp中包含hook.h,工程目录视图里把.h和.cpp都添加进去就可以了。

获取115网盘文件列表相关推荐

  1. 支持本地挂载的网盘文件列表工具AList

    什么是 Alist? AList 是一个支持多存储的文件列表程序,使用 Gin 框架和 Solidjs 库.可以将常见的 18 种网盘整合在一起,并支持 WebDAV 客户端访问. 之前老苏写过一篇 ...

  2. IDM下载百度网盘文件,获取百度网盘文件url地址,破解

    下面是谷歌插件,你用这个里面的谷歌进入百度网盘,会有一个显示百度网盘文件链接选项,复制这个链接到IDM就可以了. 链接:https://pan.baidu.com/s/1B0C-VyWvf7xc5Y1 ...

  3. 115网盘链接的使用方法

    别人给了个115网盘的链接,但是是115://开头的,这种类型的链接是怎么下载的?这个链接没有办法直接像磁力链接一样复制就可以下载,复制进去会显示链接地址错误,所以小编今天带来了115网盘链接的使用方 ...

  4. python 百度网盘库 根据文件名获取网盘链接_GitHub - tychxn/baidu-wangpan-parse: 获取百度网盘分享文件的下载地址...

    百度网盘分享文件下载链接解析 功能 获取百度网盘分享文件的真实下载地址 将获取到的下载链接复制到IDM.FDM等下载器即可实现高速下载,避免使用百度网盘客户端 运行环境 Python3 (兼容Pyth ...

  5. 115网盘离线下载升级,支持下载115任何用户分享文件的提取

    今天115网盘离线下载升级了,可以下载之前无法下载的115网盘分享的文件,而且在文件下载的页面也出现了离线下载的字样,在115网盘账户内,离线下载会提示离线下载升级了,通过账户内的离线下载功能,可以批 ...

  6. php服务器文件直链,如何获取百度网盘储存文件直链下载(PHP版)·站内下载

    百度网盘是百度推出的一项云存储服务,首次注册即有机会获得15GB的空间,目前有Web版.Windows客户端.Android手机客户端,用户将可以轻松把自己的文件上传到网盘上,并可以跨终端随时随地查看 ...

  7. 百度网盘助手-获取网盘文件的下载地址,破解限速

    众所周知,百度网盘的文件已经对非会员进行了各种限速.不过由于国内其他网盘基本都残废了,百度网盘作为仅存的少数几个,需求还是很大的,经常会碰到别人分享的百度网盘文件夹.  今天介绍的这种方法就是通过 c ...

  8. 01资源网百度网盘目录索引搭建教程:如何把百度网盘文件做成在线html目录列表?

    本百度网盘目录索引搭建教程是01资源网站长写的网盘群组索引搭建教程,授权转发,觉得很有用,就拿来分享给各位. 场景一: 百度网盘群组没有搜索功能,如果你想把百度网盘的文件目录展示给别人看,如何把百度网 ...

  9. JAVA获取百度网盘下载真实地址

    这是一个java写的获取百度网盘真实下载链接进行下载的程序.  程序里面一些参数拼接是根据浏览器抓包来的.具体的抓包方法网上一大堆,可以参考.这里给出了源码和导出的jar包.  url网址使用于百度分 ...

  10. 一个简易的网盘目录列表PanIndex

    网盘的目录文件列表应用非常多,老苏之前也写过一些,有的支持多种网盘 支持天翼云的在线文件目录ShareList 在线文件目录Z-file 而有的只支持某一种网盘 阿里云盘的目录文件列表程序Alist ...

最新文章

  1. 关于WPS页面横向问题
  2. 【解决方案】from pip import main
  3. java 模板引擎_极简 Spring Boot 整合 Thymeleaf 页面模板
  4. 代理模式coding-动态代理
  5. TortoiseGit拉取或推送,输入账号密码后提示 HTTP Basic: Access denied fatal: Authentication failed 解决方案...
  6. PyCharm+Python3转换xls文件为xlsx文件格式
  7. 爱普生690k打印针测试软件_办公室打印机什么牌子好 办公室打印机怎么选购【详解】...
  8. ora-oracle,oracle:ora-01507错误
  9. 做自媒体和有没有文化没有太大关系
  10. 机器学习之集成算法----Adaboost算法
  11. 在 Linux 系统上源码安装 GTK+ 2.0
  12. Python3.WRF的投影转换
  13. vcenter服务器修改ip,vcSA修改IP或hostname
  14. Geodesic Distance(测地距离)
  15. 我与旧事归于尽,来年依旧迎花开~
  16. 工作中沟通和执行力的重要性-开发、项目经理、需求之间的矛盾冲突
  17. DocumentBuilderFactory.newInstance() 异常解决
  18. android 获取以太网的动态IP地址,子网掩码,DNS地址,网关地址
  19. unity sky Time of Day - Dynamic Sky Dome
  20. 《我的青春谁做主》剧中人物星座分析

热门文章

  1. JUCE学习笔记03-Slider、Listener、Label类
  2. Ubuntu 修改IP地址
  3. 控制工程中的数学建模(1)——二阶有源低通滤波器(之一)
  4. linux打开dwg文件怎么打开方式,dwg文件扩展名,dwg文件怎么打开?
  5. 会员260万,续卡率居高不下,山姆有着怎样的魔力?
  6. 第四章 维纳滤波原理及自适应算法
  7. caffe框架的介绍
  8. 编写程序模拟用户输入手机号码、邮箱号码、座机号码,验证格式是否正确并给出提示,直到格式输入正确为止
  9. anjuta 连接mysql_anjuta的基本使用方法(包括如何设置MYSQL)
  10. 找到自己的优势,才能干活不累,事半功倍!