[分享] 使用 PHP CURL 模拟登录新浪微博

发表于

有时候我们获取一些新浪微博的数据,但又不想使用API,只好使用模拟登录了.

发现以前可以使用的CURL模拟登录代码失效了,Google一下,发现有很多人碰到这个问题.但是没有找到解决方法,所以就自己研究了一下,发现了原因.

可能是因为新浪限制了不允许模拟登录,同样的登录参数,用网页登录一切正常,用CURL登录,返回的COOKIES竟然是临时的.

所以看起来是登录成功了,并且获取到了用户信息,但是再次访问还是未登录状态.我的解决方法比较简单,直接修改COOKIES的时效这样就行了.

附上我自己测试通过的PHP代码如下,希望有对有同样问题的朋友有用,如果你有更好的方案欢迎分享一下.

[分享]华军软件园免验证码下载

发表于

以前经常去华军软件园下载软件,后来很少上了,最近发现下载需要输入验证码才能下载.

这个验证码是带广告类型的,需要输入中文,很是麻烦,对于我等懒人来说当然是能不用输入就不用输入了.

查了一下网页源码,发现可以直接饶过验证下载.原理有兴趣的自己Google一下.^_^这里就不再啰嗦了.直接进入主题.

方法如下有很多种.

[分享] 华为网盘的直链测试(免费版)

发表于

最近学习了一下PHP,这个其实比金山快盘的直链更早写的,

相比官方的版本,更简单,这个没有限制目录的哦,不需要流量费的,可能会被封锁,不过这个是利用官方提供的API写的,应该不会,关键是华为网盘的速度够快.若是被封锁了就有些可惜.

快盘的那个就明确不会.

嘻嘻,以后就可以把文件上传到网盘上,然后用直链提供下载了.

金山快盘直链

发表于

使用快盘API写了一个直链的应用测试.. 以后可以把文件或图片直接上传到快盘中,然后直链. API有调用限制,好像是一天5000次,对于我等小站来说足够用了,

另外好像快盘的文件下载速度没有华为网盘的给力啊.速度相对比较慢,可以对比一下我的另一个文章关于华为网盘直链的测试,显示图片的速度更快.

网盘外链的简单破解

发表于

目前国内有许多网盘,大都是禁止外链的,即使支持也需要钱的.

一般网盘的下载链接只能从网盘所属域上链接下载,或直接输入地址下载.如果你把这个链接放到你的网站上是不可以用的.

像这种一般情况下是根据来源地址(Referer)判断的,如果来源地址是合法的域则可以下载,否则提示错误.

这种只要伪造一个来源地址就可以突破了.伪造的方法有很多,从Google上找了一下有很多种.

这里介绍一种相对比较简单的,一般的PHP服务器都有支持.相关代码如下.伪造一个referer地址发送过去,请求下载,获取返回的头信息,里面包含了真正的地址.

[原创] 解除华为网盘下载限制[2012-09-18]

发表于

华为网盘其实挺好的,上下载速度都很快。只是下载的时候可以说十之八九会跳出注册登录的窗口,也就是需要登录才能下载。这个本来没有什么,只是我的密码都是随机的,记不住啊,每每下载都要登录太麻烦了。所以就想看看有没有什么办法可以不用登录直接下载的。查看了一下网页源码,发现其实很简单。

如果有关注我微搏的话,应该很早就知道了,当然了网络上也有很多工具可以免登录下载,比如Dbank linker.只是用起来不太方便。

这里分享两个相对比较简单的方法可以直接解除限制,原理是一样的。

  1. 使用书签的方案,优点快速简单,把以下链接保存为书签,以后打开网盘下载页,点击一下该书签就可以直接下载了。

    解除华为网盘下载限制

  2. 使用去广告过滤工具比如admucher(这个更强,连广告都没有了),使用替换工具查找"profile.productid":"*"替换为"profile.productid":30

[记录] 创建不区分大小写的ZFS卷方便使用FreeNas的TFTP服务器

发表于

如题,因为默认情况下创建的卷都是有区分大小写的,这样一来使用TFTP服务就不太方便。而Windows下的TFTP服务器就没有这样的问题,因为WINDOWS都是不区分大小写的,为了方便需要想办法TFTP服务不区分大小写。

查一了些资料,刚开始本来以为TFTP服务有什么参数还是什么的可以不区分大小写的,找了挺久了,没有发现任何有用的信息。

后来仔细看了一下ZFS文件系统部份,发现ZFS上面是可以创建不区分大小写的卷的。相关资料链接如下:

http://docs.oracle.com/cd/E26926_01/html/E25826/gazss.html

以下就是所需要的信息:

casesensitivity 字符串 mixed

此属性指示文件系统使用的文件名匹配算法应当是casesensitivecaseinsensitive,还是允许这两种匹配风格的组合 (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服务的根目录设为上面新创建的卷就行了。不区分大小写用着就是比较方便。

[原创]华为网盘免密码一键登录(2012-08-21更新)

发表于

因为最近在折腾的自动签到程序,之前使用模拟的方法登录,速度慢,而且很容易出错。

所以就想使用post的方法快速登录。

经过抓包分析终于搞定了,以下是原理。

post 的地址是 http://login.dbank.com/loginauth.php?nsp_app=48049

参数如下:

  • response 最关键的参数,经过一系列计算得到
  1. 用户名+”:NSP Passport:”+密码 进行32位md5计算。(小写)
    测试时可以利用以下地址的在线工具进行计算
    http://app.baidu.com/yiten_md5?keyword=MD5
  2. 上面的结果再 + “:” + nonce 进行32位md5计算.(小写),得到的就是response的值。
  • nsp_user 用户名
  • nsp_cid 从表单中提取
  • nonce 从表单中提取
  • m=1 固定值。

提交以上参数之后如果参数正确的话返回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都可以)

http://login.dbank.com/loginauth.php?nsp_app=48049&m=1&nonce=4fdf0b700b0052.91924864&nsp_cid=802fdd1049992984cf49a1cd0fc7545c&nsp_user=test@chenall.tk&response=9cd84c2500a6013ef3bd1441919132b6

返回的数据如下(如果是其它信息肯定是你的参数有误或用户密码错误改正之后重新提交)

{"retcode":0,"k":"IFi6cylxBlRZsRw21JIiDtxO6ORZGun5VLViD52OOuj3dN0ylLoeHDw3ruaa1S4RFTP1Y0q8vazTvjDUjJiSu0aFSWIQ9lEgIbPSdcKCCDo%3D"}

再提交一次就成功登录了 http://login.dbank.com/loginauth.php?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是固定的,表示要进行签到 nsp_svc=com.dbank.signin.signin
  • anticache 是一个随机数字,不重要
  • nsp_sid 身份标志信息,这个就是cookie里面的session的值
  • nsp_sid=kuTubNkuCQi19uaOXxiuu4FjMYp18kTozF5VnBk1HnAkFwEv
  • nsp_ts 这个不需要解释了,是一个时间串,不是很重要,同样可以固定
  • nsp_key 验证信息,通过多种参数进行组合再进行MD5加密的结果 nsp_key=9AC41E0B0DD240F97361F87483131667
  • nsp_fmt=JS&nsp_cb=_jqjsp 这个参数也不重要,可以省略
    看了上面的参数列表,基本上都是现成的,只有nsp_key需要额外获取。
    这个nsp_key的获取方法:
  1. 把上面除了nsp_key之外的参数按字母正向排序一下,得到如下结果。

    anticache=383
    nsp_cb=_jqjsp
    nsp_fmt=JS
    nsp_sid=wuTubNKuCQi1muaOXx-uu4FjnYp182zozF58ZBk1HSNkFwED
    nsp_svc=com.dbank.signin.signin
    nsp_ts=1341032380236
    
  2. 去掉参数中间的=合成一串得到anticache383nsp_cb_jqjspnsp_fmtJSnsp_sidwuTubNKuCQi1muaOXx-uu4FjnYp182zozF58ZBk1HSNkFwEDnsp_svccom.dbank.signin.signinnsp_ts1341032380236

  3. 获取cookie里面的secret的值接在上一步的前面比如是325c8b0ee26aa42cd4a4c20326a97a98那最终得到的字符串如下
    325c8b0ee26aa42cd4a4c20326a97a98anticache383nsp_cb_jqjspnsp_fmtJSnsp_sidwuTubNKuCQi1muaOXx-uu4FjnYp182zozF58ZBk1HSNkFwEDnsp_svccom.dbank.signin.signinnsp_ts1341032380236
  4. 把上一步的字符串进行MD5计算就得到了nsp_key的值了9AC41E0B0DD240F97361F87483131667
  5. 现在所有参数都有了,组合成前面的链接就行了,这个链接经过我测试就像前面的自动登录链接一下一直有效。 需要自动签到很简单,只需要定时打开该链接就行了,根据返回的结果还可以获取签到的结果。

PS: 请继续看本文尾部,有更新的方法哦。

整理一下本文的自动登录和签到链接

自动登录测试
自动签到测试

大家有兴趣可以试试点击以上这两个链接,看看可以用多久,,目前自动登录的链接在本文发表日期6月18日获取的,目前6月30号,依然有效。
EDIT: 发现现在的签到的链接是有限制的(前几天我测试时好像没有限制),所以。。。只好每次都重新生成了,也简单,只需要获取登录之后cookie里面的secretsession的值替换进去就行了,其它的都不需要变。
我算是知道为什么华为网盘的页面打开速度反应偏慢了。你想啊,每打开一个页面,都需要调用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文档中找到,估计上面的链接应该都失效了,懒得重新获取了.留本文作为研究记录,

[原创]各类网站自动签到/带源码[2012-10-10更新]

发表于

鉴于目前的许多网络硬盘,一般初始空间比较小,要获取更多免费的空间除了邀请好友加入以外,就是签到功能了,目前国内的网盘都有类似的功能。

一些人可能同时拥有N个网盘,每天打开然后签到,有点浪费时间,但是为了这一些免费空间还是会有人乐此不疲的。

对于我等懒人来说,最好是有一个工具可以让它帮我们来完成这些事情。

我就打算实现这样的一个功能……