115网盘真实下载地址解析工具(Bookmarklet版)

标签: , ,

昨天firefly在《115网盘真实下载地址解析工具及其原理(VBS版)》中留言:

最好是做成JS的Bookmarklet,这样在下载页面点击一下书签就打开真实下载地址页面了,这样也不会拘泥于浏览器,况且下载地址都是出现在网页里面,也免得再去打开解析工具“复制-解析-粘贴”这些繁琐的动作了!最好是能出三个版本:电信的、网通的、备份的。
只是建议,增加易用性(代码本来就是服务于应用的),呵呵~~

说来惭愧,这是我第一次听到Bookmarklet这个名词,查阅了一下维基百科

小书签(Bookmarklet),又叫书签小程序,是一种小型的程序(Applet),以网址(URL)的形式被存为浏览器中的书签,或是网页上的一个链接。小书签的英文名,Bookmarklet是由BookmarkApplet组合而来。无论小书签如何以什么形式储存,它们都是用来对浏览器或是网页添加一些特定功能的。点击时,小书签会执行这些操作,从执行搜索到导出数据。小书签一般是JavaScript应用程序。

看完维基百科的介绍,我的第一反应是搜狗云输入法,以前用Wubi安装Ubuntu的时候懒得装输入法,用的就是这个所谓的云输入法。今天才知道,原来专业名称叫做书签小程序。

书签小程序,说白了就是一段保存成书签形式的JavaScript脚本,该脚本可以在当前页面执行,这样就能引用和修改当前页面的元素。比如,搜狗云输入法书签的代码:

javascript:void((function(){var e=document.createElement('script');e.setAttribute('src','http://web.pinyin.sogou.com/web_ime/init.js');document.body.appendChild(e);})())

由于是代码以URL的形式保存的,受URL最大长度的限制(具体是多少自己查),代码不能太长,所以用较短的代码动态加载了另一个JS脚本,以打破长度限制。

其实在firefly留言之前,linkanyway和我就已经讨论过弄一个115网盘真实下载地址的在线解析页面。然而,把服务器上在线解析得到的下载地址用浏览器打开却无法下载,返回HTTP 403错误。百思不得其解,浪费了一整个下午的时间,最后才发现u.115.com返回的JSON是和发送GET请求的IP有关的。也就是说,服务器解析得到的地址在客户端并不能下载。怪不得现在网上不存在一个在线解析115下载地址的工具。

再后来,也就是第二天早上,我打算用客户端JavaScript来实现在线解析。稍有常识的人都知道,一般来说,JavaScript的AJAX是无法跨域了,从我的网站上无法向u.115.com发送GET请求。我Google了一个早上,尝试了所有解决JavaScript跨域请求的方法,最后再次失望的发现,那些方法根本就不符合我的实际,因为大多数方法都需要我有u.115.com的修改权限才能实现。D大开玩笑说,那你把115黑了吧。

而书签小程序是运行在当前页面的,也就是115网盘的文件提取页面,这样就不会存在跨域的问题,于是一切都迎刃而解了。下面是我写的书签小程序:

115网盘真实下载地址解析书签小程序

鼠标右键单击上面的链接,选择右键菜单中的“添加到收藏夹”,或者直接拖拽到收藏夹。当打开一个115网盘的文件下载页面时,点击收藏夹中保存的这个小书签,就能解析出下载地址(由于需要从本网站动态加载JavaScript,速度可能会有点慢,请耐心等待),如图:

Untitled

非常感谢firefly的建议,但是“不会拘泥于浏览器”无法实现。这个小书签只能在IE内核的浏览器下使用,具体原因详见《FireFox插件User Agent Switcher》。

我也尝试过在AJAX请求中修改User-Agent,但是在客户端脚本中User-Agent似乎无法修改的。如果哪位高手知道怎么在AJAX中修改User-Agent,请不吝赐教。

4月1日补充:仅过了一天,该书签小程序就被115封杀了,详见《鄙视雨林木风》。

赞赏

微信赞赏支付宝赞赏

随机文章:

  1. 在Raspberry Pi树莓派上编译Node.js
  2. 火狐(FireFox)中的onkeydown事件
  3. 为HG255D编译OpenWrt Barrier Breaker固件
  4. PHP读取纯真IP数据库QQWry.dat
  5. VBS里的变量名和标识符(Identifiers)

9 条评论 发表在“115网盘真实下载地址解析工具(Bookmarklet版)”上

  1. Firefly说道:

    不错,我以前就隐约发现:如果同一个115地址在IE里面不能下载,但是在Chrome里面就可以,并且Chrome里面不用安装其他解析工具,三个下载按钮对应的就是真实的链接地址(当然Chrome也没有安装115的解析工具,不需要切换UA,虽然Chrome也有UA切换的扩展)!当时只是感觉奇怪,并没有深思。Demon有机会也可以试用一下Chrome。

    其实我以前一直感觉所有的Bookmarklet是不分浏览器的,所以我说“不会拘泥与浏览器”,今天又长了见识了,呵呵~~

    • Demon说道:

      Bookmarklet理论上是不分浏览器的,但是115验证User Agent,导致在FireFox下不能用。
      至于Chrome,本来想安装个测试一下的,后来忘记了。

    • Demon说道:

      今天装了个Chrome,才发现真的不需要任何解析工具和插件,根据我的测试,依然是User-Agent的问题。

      对于Chrome的User-Agent,115会直接显示下载地址,用FireFox的User Agent Switcher插件改成Chrome的也会直接显示下载地址。而且不仅仅是Chrome的,改成其他的User-Agent(比如Googlebot的)还是会直接显示地址……

      不得不说,115做得太垃圾了。最起码,IE、FireFox、Chrome都要测试一遍吧?难道说,他得到了Google的赞助?

      • himandy说道:

        不是很明白怎样用chrome user-agent进行测试,我装了Chrome,发现115一样没有显示下载地址。(另外,你这个博客的留言编辑框里面,好像不支持Home键和End键?)

        • Demon说道:

          就我和Firefly的测试而言,Chrome浏览器是可以直接看到下载地址的,我也不知道为什么你那里不显示。(另外,根据我的测试,Home和End键是支持的)

          • himandy说道:

            我这边是winXP sp3系统,用最新的firefox4.0,发现了按键问题。

            我装了最新版的chrome,发现没显示115的下载地址。算了,先看在线的视频凑合着,哈哈

  2. RandomOS说道:

    今天悲剧的发现115.com升级了, 方法失效了。

  3. himandy说道:

    做技术的朋友好认真啊!谢谢分享

留下回复