Crazy开发仔 发表于 2019-8-3 15:53

实战:某文档在线导出工具,E语言下载器简易实现

本帖最后由 Crazy开发仔 于 2019-8-3 15:58 编辑

  测试网站:http://wenku.baiduvvv.com/
  所用工具:E语言,FD(Fiddler,抓包神器),精易编程助手,notepad++(可选)
  测试环境:win7 x64
  测试人员:Crazy开发仔(以下简称:小C)
  前情摘要
  ①如果不熟悉或者不懂E语言,请自行百度学习
  ②不懂FD,也可以找百度
  ③HTTP协议请自行百度学习,特别是GET、POST请求等
  分析数据
  一把梭哈就是干!!!首先打开FD,然后启动浏览器访问http://wenku.baiduvvv.com/,映入眼帘的是这个画面(画面太美,不忍直视)
  
  接下来,小C大致浏览了一下页面内容,此在线导出工具主要是实现下载某文库的文档功能。废话不多说,本人没什么需要下载的文档,故使用页面上的一个文档地址来简单的做一下演示吧。
  https://wenku.baidu.com/view/3e6d30b2fd0a79563c1e72bd.html
  貌似是中学化学,回忆我的学习时光,化学里边就对CaO(氧化钙)记忆尤新,不要问我为什么,自己脑补。
  将文档地址拷贝到网页地址框,姿势如下图:
  
  小C选择,导出为pdf(随便选的),然后点击【下载】按钮。这个时候,你也不要闲着(说的就是你),看一下FD窗口。
  
  一开始你可能看不懂,这是什么玩意。莫慌,跟着小C一起来撸。鼠标选中第一行
  
  我们再来看一下右边的面板,详细数据面板。如图:
  
  Headers代表请求头信息,红色圈部分代表这个请求为GET请求,再看后面的信息:
  /ds.php?url=https%3A%2F%2Fwenku.baidu.com%2Fview%2F3e6d30b2fd0a79563c1e72bd.html&type=pdf&t=1564815056000&sign=d3addcff32062b3490a3f49983e9b93c
  Url(蓝色):显然是经过url编码过的,通过精易编程助手解码之后是这个样子滴。
  
  也就是说,那个url就是我们在地址框中输入的地址。
  type(红色):是不是很熟悉,我们选择的格式就是pdf,那么你是不是可以举一反三呢?
  t(绿色):很明显就是一个时间戳,不知道什么是时间戳,自行移步百度。
  Sign:这个可以忽略,保持默认就可以。

  分析完上面的内容之后,看下返回的内容是什么,如图:
  
  JSON数据(什么?不知道json?自行移步百度),分析参数
  
  code:返回请求的状态
  f:文件名(随机的),数了一下大概32位,可能是随机md5,反正我们就认为它是一个文件名
  h:这个不知道是什么值,可以略过
  s:服务器ip和端口

  至此,第一条数据分析完了,建议将返回上面的数据拷贝到notepad++中暂存,方便后面的分析对比。
  接下来分析第二条数据,前面的已经讲过,套路一样,自己分析。我们直接看Headers部分:
  
  也是个GET请求,看一下详细数据吧。
  /wkc.php?url=https%3A%2F%2Fwenku.baidu.com%2Fview%2F3e6d30b2fd0a79563c1e72bd.html&type=pdf&t=1564815056000&sign=d3addcff32062b3490a3f49983e9b93c&f=1c54b323ae4fcaf5e7b02e0ccd56c9d3&h=3909524402&btype=down
  对比之前的数据,看看有什么不同的地方。
  
  不难发现,第一次请求返回的json数据中部分字段的值,要作为第二次请求的参数。讲到这里,原理大致就清楚了。
  撸代码
  打开E,新建工程,随便拖个按钮,具体代码如下:
  
  用到了精易模块7.11,获取文件名和时间戳,这个不用讲吧。
  文件名,我这里偷懒用了 文本_取出中间文本()。
  时间戳,直接使用 时间_取随机时间戳 ()。
  下载文件 直接用 文件_下载()。

  小C只是简单做演示,至于是否要扩展成批量下载器,大家自行脑补和编写。
  调试篇
  
  点击保存,就可以下载完成。教程结束,希望能帮助到你。大神勿喷!!!

识趣呀 发表于 2019-8-3 16:00

感谢分享

Crazy开发仔 发表于 2019-8-8 11:47

Crazy开发仔 发表于 2019-8-8 11:42
自己定义一下,文本常量



能看明白吗??

袁煜914 发表于 2019-8-3 15:54

袁煜914 发表于 2019-8-3 16:10

w110f 发表于 2019-8-3 16:25

谢谢   老师分享

wang19940311 发表于 2019-8-3 17:05

感谢分享

netCheney 发表于 2019-8-3 17:10

get到了新技能,谢谢楼主贡献这么详细的技术贴

hill_king 发表于 2019-8-3 17:22

飞豆用得好,监狱蹲到老:Dweeqw

Crazy开发仔 发表于 2019-8-3 17:33

hill_king 发表于 2019-8-3 17:22
飞豆用得好,监狱蹲到老

what?难道不是牢底坐穿吗?

cikeysb 发表于 2019-8-3 19:43

这个厉害了,学习了
页: [1] 2 3
查看完整版本: 实战:某文档在线导出工具,E语言下载器简易实现