获取登陆的实际地址

这是一款app,同样使用fiddler进行抓包,抓包之前需要配置手机代理,可自行找教程。

抓包前可以禁用其他app的wifi流量,这样确保所有请求都是该app发出的,当然fiddler只能抓取HTTP/HTTPS,如果要抓取TCP/UDP的需要WireShark。

当然这款app可以使用fiddler抓取。在手机上登陆后,按用户名全局搜索,如下图

获取登陆的实际地址

( ⊙ o ⊙ )!高亮咋没有了,算了,将就着看吧,选中的请求是第一个出现用户名的,可以看到响应内容明显是登陆成功后的,但是在app打开时出现的请求ip并不是这个,而且登陆时填写了三个参数,这个登陆请求只提交了两个,于是按照这个ip全局搜索。

获取登陆的实际地址

这次又高亮了,查看第一个高亮,发现响应内容中出现了那个ip,也有登陆填写的第三个参数。

于是可以写代码了:

self.session = self.gen_session()
url = 'http://app.******.com/v1/Invite?Invite=%s' % self.invite
headers = {
    "User-Agent": "Dalvik/2.1.0 (Linux; U; Android 5.0.2; CHE-TL00H Build/HonorCHE-TL00H)",
    "Connection": "Keep-Alive",
    "Accept-Encoding": "gzip",
}
r = self.session.get(url, headers=headers)
r_dict = demjson.decode(demjson.decode(r.text))
self.web = r_dict.get('web')
if not self.web:
    print ("error with get web url, %s" % r.text)
    exit()
login_url = '%svalidate' % self.web
params = {
    "psw": self.pass_word,
    "user": self.user_name,
}
r = self.session.get(login_url, params=params, headers=headers)
上面的代码是登陆部分的,只是类里面的一个login方法