本人是运维一枚,使用次数最多的就是Vandyke的SecureCRT.在win系统下面有各种大牛破解的scrt版本,但是在咱debian下面 就只能使用官方正版的,但是因为scrt是收费的,而且还死贵死贵($99), 咱这种中下农,搞不起这货, 只能使用它的免费30天,时间一到,要么就是删除它的认证文件,要么就是卸载原有的,然后重新安装, 非常麻烦…
于是就想着能不能通过cron自动下载安装, 于是就有了第一版本的Vandyke_update.py 脚本,通过抓包分析到Vandyke 的post数据,通过urllib2提交,并下载, 跑了一年都挺好的,
但是今天有同事(ubuntu)使用我的脚本自动更新的时候,发现无效了,返回信息提示”Bad product id”,然后通过chrome的开发者工具跟踪了一下,发现post数据的字段改变了. 不再提供”sid”这个字段(每次Vandyke用户登录之后都会在cookie中分配这个这个id,是不变的),只好重新分析它post内容,
看见它post内容变的非常简单,只有两个字段:
- pid(product id)status
尝试了几次,发现它现在所有认证信息都是从cookies里面获取的, 咱就只能模拟登录,保留cookies,带着cookies访问它的下载页面
模拟登录,及带着cookies访问其他页面代码如下
import urllib2,urllibimport cookielibcj = cookielib.CookieJar()opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))urllib2.install_opener(opener)post = urllib.urlencode({'pid':'securecrt_ubuntu1264_deb_71',\ 'username':'eleven.i386@gmail.com',\ 'password':'*******',\ 'status':'4'})post2 = urllib.urlencode({'pid':'securecrt_ubuntu1264_deb_71',\ 'status':'self'})req = urllib2.urlopen('https://secure.vandyke.com/cgi-bin/account_verify.php',post)req2 = urllib2.urlopen('https://secure.vandyke.com/cgi-bin/download.php',post2)
这是一段测试用的代码,请无视它那掉节操的变量名称,实在不想花费脑细胞在测试代码的变量名称上(虽然正式代码的变量名称一样无节操)
参数说明
第一个post, 用于做登录. 提交用户名和密码,
第二个post,用于发送下载请求,提交请求资源的id,和status(这玩意一直不知道干嘛的),请求资源的文件名称,在第一个post的respose header的Content-Disposition字段里面,