有时候,写点自动签到啊,刷帖发评论啊这一类的小脚本的时候,登录态大部分时候那都是必须的。所以呢,模拟登陆神马的,必不可少了。
今天就说说第一步
知己知彼不可少,此时,我们就需要各种抓包利器了,什么httpwatch,firefox和chrome开发者工具,喜欢哪款用哪款。
我就以httpwatch为例,抓包分析新浪微博的登录过程,输入账号密码,登录之后,我们来看看都是有哪些交互过程。
这条请求很明显就是我们需要的登录请求,post方法发送账号密码和相关登录信息。
然后再看看具体的post数据
一大串参数。我们可以根据参数命名,很容易知道部分参数是什么。如果不太好确定,可以尝试登录多个账号,然后把几次登录的参数信息对比一下。就能大致确定各个参数的意义了。
sp和su,应该就是指Password和Username了。这两个就是我们最需要的东西。
encoding,entry,pwencode,returntype,service,url这些个东西,看名字就知道了,基本照抄就行。其余参数,无法确定的话,也全部照搬吧,我们就先依葫芦画瓢。
但值得注意的是,servertime这个时间戳,服务器时间,这个东西我们可没有,另外,如果尝试多个账号登陆对比,会发现,nonce,rsakv 这两个参数也是每次不一样的。这些参数的值从何而来呢,想来应该是在发出这个post请求之前,就应该获取到了才对。
于是我们需要仔细看看之前的抓包结果
原来,在执行登录操作之前,还有一个prelogin的过程。
这是一个get方法,请求的url后面的参数中,su这个参数肯定是需要修改的,其他参数,不知道的话,老规矩,照搬。
然后再看看返回数据里面的都有些什么东西呢。
好家伙,这里全部都有。
至此,登陆的步骤算是搞清楚了:首先从prelogin获取几个参数,然后用这些参数加上账号信息,向服务器请求登录。
进一步分析,发现post的sp,su字段都是加密之后的。接下来,就需要具体分析是如何加密账号密码的了。