[原创] 电信天翼云盘直链效果测试
发表于最近在学习PHP,随手做几个基于网盘的直链,,嘿嘿以后不用担心没有地方放文件了.
初步测试,挺稳定的说,放一段时间看一下.
没有什么好说的.直接上效果,
最近在学习PHP,随手做几个基于网盘的直链,,嘿嘿以后不用担心没有地方放文件了.
初步测试,挺稳定的说,放一段时间看一下.
没有什么好说的.直接上效果,
有时候我们获取一些新浪微博的数据,但又不想使用API,只好使用模拟登录了.
发现以前可以使用的CURL模拟登录代码失效了,Google一下,发现有很多人碰到这个问题.但是没有找到解决方法,所以就自己研究了一下,发现了原因.
可能是因为新浪限制了不允许模拟登录,同样的登录参数,用网页登录一切正常,用CURL登录,返回的COOKIES竟然是临时的.
所以看起来是登录成功了,并且获取到了用户信息,但是再次访问还是未登录状态.我的解决方法比较简单,直接修改COOKIES的时效这样就行了.
附上我自己测试通过的PHP代码如下,希望有对有同样问题的朋友有用,如果你有更好的方案欢迎分享一下.
以前经常去华军软件园下载软件,后来很少上了,最近发现下载需要输入验证码才能下载.
这个验证码是带广告类型的,需要输入中文,很是麻烦,对于我等懒人来说当然是能不用输入就不用输入了.
查了一下网页源码,发现可以直接饶过验证下载.原理有兴趣的自己Google一下.^_^这里就不再啰嗦了.直接进入主题.
方法如下有很多种.
最近学习了一下PHP,这个其实比金山快盘的直链更早写的,
相比官方的版本,更简单,这个没有限制目录的哦,不需要流量费的,可能会被封锁,不过这个是利用官方提供的API写的,应该不会,关键是华为网盘的速度够快.若是被封锁了就有些可惜.
快盘的那个就明确不会.
嘻嘻,以后就可以把文件上传到网盘上,然后用直链提供下载了.
华为网盘其实挺好的,上下载速度都很快。只是下载的时候可以说十之八九会跳出注册登录的窗口,也就是需要登录才能下载。这个本来没有什么,只是我的密码都是随机的,记不住啊,每每下载都要登录太麻烦了。所以就想看看有没有什么办法可以不用登录直接下载的。查看了一下网页源码,发现其实很简单。
如果有关注我微搏的话,应该很早就知道了,当然了网络上也有很多工具可以免登录下载,比如Dbank linker.只是用起来不太方便。
这里分享两个相对比较简单的方法可以直接解除限制,原理是一样的。
使用书签的方案,优点快速简单,把以下链接保存为书签,以后打开网盘下载页,点击一下该书签就可以直接下载了。
使用去广告过滤工具比如admucher(这个更强,连广告都没有了),使用替换工具查找"profile.productid":"*"
替换为"profile.productid":30
如题,因为默认情况下创建的卷都是有区分大小写的,这样一来使用TFTP服务就不太方便。而Windows下的TFTP服务器就没有这样的问题,因为WINDOWS都是不区分大小写的,为了方便需要想办法TFTP服务不区分大小写。
查一了些资料,刚开始本来以为TFTP服务有什么参数还是什么的可以不区分大小写的,找了挺久了,没有发现任何有用的信息。
后来仔细看了一下ZFS文件系统部份,发现ZFS上面是可以创建不区分大小写的卷的。相关资料链接如下:
http://docs.oracle.com/cd/E26926_01/html/E25826/gazss.html
以下就是所需要的信息:
casesensitivity
字符串 mixed此属性指示文件系统使用的文件名匹配算法应当是
casesensitive
、caseinsensitive
,还是允许这两种匹配风格的组合 (mixed)。传统上,UNIX 和 POSIX 文件系统的文件名区分大小写。
此属性的值为 mixed 时表示文件系统对区分大小写和不区分大小写的匹配行为要求均可支持。当前,在支持混合行为的文件系统上,不区分大小写的匹配行为仅限于 Oracle Solaris SMB 服务器产品。有关使用 mixed 值的更多信息,请参见casesensitivity 属性。
不管 casesensitivity 属性设置如何,在创建文件时,文件系统都会保留指定的名称的大小写。在创建文件系统后无法更改此属性。
试着直接zfs set
来改变该属性发现是只读的,不可修改。所以只能重新创建一个卷了。
因为使用WEB图形界面创建的ZFS卷不能设置这个属性,所以必须到SHELL下创建,命令举例:
zfs create -o casesensitivity=insensitive zfs0/tftproot
在zfs0上创建一个新的卷tftproot不区分大小写。我们简单一点只需要上面的命令就可以了,其它的容量限制什么的可以直接在图形界面下修改。
然后只要把TFTP服务的根目录设为上面新创建的卷就行了。不区分大小写用着就是比较方便。
因为最近在折腾的自动签到程序,之前使用模拟的方法登录,速度慢,而且很容易出错。
所以就想使用post的方法快速登录。
经过抓包分析终于搞定了,以下是原理。
post 的地址是 http://login.dbank.com/loginauth.php?nsp_app=48049
参数如下:
提交以上参数之后如果参数正确的话返回json数据里面包含了一个k的数据。
最终再提交一下以下地址就行了。k的值从上面的返回中获取,如果没有看到k的值肯定是你前面提交的参数错了。
http://login.dbank.com/loginauth.php?k=K的参数
附,测试登录过程。
测试帐号 test@chenall.tk 密码: wMtA8HscF6G0Zv6V
打开 http://login.dbank.com/loginauth.php?nsp_app=48049
提取到需要的数据
<input type="hidden" id="nonce" name="nonce" value="4fdf0b700b0052.91924864">
<input type="hidden" id="nsp_cid" name="nsp_cid" value="802fdd1049992984cf49a1cd0fc7545c">
2012-08-21 更新: 发现上面这一步可以省略,nonce是一个随机值,你可以自己随便生成一个随机数就行了.nsp_cid参数可以省略,不需要.
首先计算response的值:
test@chenall.tk:NSP Passport:wMtA8HscF6G0Zv6V
经过md5计算后得到
aead43fd1435a2087a12c4ac9d21e56c
再进行一次md5计算
aead43fd1435a2087a12c4ac9d21e56c:4fdf0b700b0052.91924864
得到
9cd84c2500a6013ef3bd1441919132b6
现在参数全部有了直接提交(用get或post都可以)
返回的数据如下(如果是其它信息肯定是你的参数有误或用户密码错误改正之后重新提交)
{"retcode":0,"k":"IFi6cylxBlRZsRw21JIiDtxO6ORZGun5VLViD52OOuj3dN0ylLoeHDw3ruaa1S4RFTP1Y0q8vazTvjDUjJiSu0aFSWIQ9lEgIbPSdcKCCDo%3D"}
另外要说一点,看起来挺安全的,因为没有传输密码。但是好像有一个问题。最终的登录地址目前没有任何的限制。只要得到这个地址,你换一台电脑直接提交这个地址就可以登录了,这也是一个安全隐患。不知有没有时间限制,我试了昨天生成的地址,今天还能用。
大家可以试试点击上面的链接,看看是不是还能正常登录。
2012-06-21 经测试修改了密码之后,上面的自动登录链接依然有效。
2012-06-25 一个星期过去了,依旧。
2012-06-26 发现其它的也是一样,只要获取到最终的API参数,无需登录或密码都可以操作。比如签到不需要登录就行了。
2012-08-21 登录的第一步获取nonce等值的过程可以省略了.具本看前面的介绍
题外话,本来想把网盘签到的post方法也找出来,里面最重要的参数是nspkey,这个是把很多的数据整在一起进行MD5计算,看了好久还没有找全所有的需要的数据。无奈只能放弃,如果您有已经研究出了计算的方法,不妨分享一下。
2012-06-26 已经找出计算方法,现在可以直接快速签到了。^^,chrome真是强大,调试一下很快就找出来了,以前还傻傻的慢慢看JS源码。。
本文测试帐号的自动签到链接如下:
http://api.dbank.com/rest.php?nsp_svc=com.dbank.signin.signin&anticache=383&nsp_sid=wuTubNKuCQi1muaOXx-uu4FjnYp182zozF58ZBk1HSNkFwED&nsp_ts=1341032380236&nsp_key=9AC41E0B0DD240F97361F87483131667&nsp_fmt=JS&nsp_cb=_jqjsp
如何获取到上面的链接呢?最简单的方法直接抓包就行了,用chrome就可以直接抓包了。
当然可以手工打造一个链接,要生成这个链接首先要知道各个参数是如何得来的。
上面的链接参数解释(其中不重要的参数可以不要)
nsp_svc=com.dbank.signin.signin
把上面除了nsp_key之外的参数按字母正向排序一下,得到如下结果。
anticache=383
nsp_cb=_jqjsp
nsp_fmt=JS
nsp_sid=wuTubNKuCQi1muaOXx-uu4FjnYp182zozF58ZBk1HSNkFwED
nsp_svc=com.dbank.signin.signin
nsp_ts=1341032380236
去掉参数中间的=
合成一串得到anticache383nsp_cb_jqjspnsp_fmtJSnsp_sidwuTubNKuCQi1muaOXx-uu4FjnYp182zozF58ZBk1HSNkFwEDnsp_svccom.dbank.signin.signinnsp_ts1341032380236
325c8b0ee26aa42cd4a4c20326a97a98
那最终得到的字符串如下9AC41E0B0DD240F97361F87483131667
PS: 请继续看本文尾部,有更新的方法哦。
整理一下本文的自动登录和签到链接
大家有兴趣可以试试点击以上这两个链接,看看可以用多久,,目前自动登录的链接在本文发表日期6月18日获取的,目前6月30号,依然有效。
EDIT: 发现现在的签到的链接是有限制的(前几天我测试时好像没有限制),所以。。。只好每次都重新生成了,也简单,只需要获取登录之后cookie里面的secret
和session
的值替换进去就行了,其它的都不需要变。
我算是知道为什么华为网盘的页面打开速度反应偏慢了。你想啊,每打开一个页面,都需要调用10个以上的API,每个都需要经过一系列的MD5计算能不慢吗。而且经过这么复杂的计算个人认为没有增加什么安全性可言,只是人为增加客户端和服务端的计算量。
建议参考一下其它的网盘,登录后可以直接调用API,而不需要这么麻烦。像天翼网盘,登录之后直接
http://cloud.189.cn/userInfoJson.action 就可以获取用户信息
http://cloud.189.cn/userSign.action 签到
看起来又直观,又简单,真搞不明白华为为什么要搞得这么复杂,我猜测可能是为了和其它API的调用保持一致吧。
EDIT2: 经测试,那些参数中有一些是可以不要的。重新整理一下必备参数如下.只有需要两个参数了。
nsp_sid=wuTubNKuCQi1muaOXx-uu4FjnYp182zozF58ZBk1HSNkFwED
nsp_svc=com.dbank.signin.signin
nsp_ts 参数后面的值可以不要,但nsp_ts字符串须要有
最终的链接地址为因为参数少了,链接里面的参数也要相应的减少.
http://api.dbank.com/rest.php?nsp_svc=com.dbank.signin.signin&nsp_ts=&nsp_sid=wuTubNKuCQi1muaOXx-uu4FjnYp182zozF58ZBk1HSNkFwED&nsp_key=501171C21D5EDB90BFF7080F2002F348
EDIT3: 2014-01-15 由于搏客转移到HEXO,文章重新整理了下,新的API有改变 nsp_ts是必须的而且不能和服务器的时间差太多,在php中可以用time()获取.
由于API有了一些变化,另外华为网盘已经有相关的API文档了,上面的计算方法大部份都可以从API文档中找到,估计上面的链接应该都失效了,懒得重新获取了.留本文作为研究记录,
鉴于目前的许多网络硬盘,一般初始空间比较小,要获取更多免费的空间除了邀请好友加入以外,就是签到功能了,目前国内的网盘都有类似的功能。
一些人可能同时拥有N个网盘,每天打开然后签到,有点浪费时间,但是为了这一些免费空间还是会有人乐此不疲的。
对于我等懒人来说,最好是有一个工具可以让它帮我们来完成这些事情。
我就打算实现这样的一个功能……