首页投稿(暂停使用,暂停投稿)

云通讯抓取余额信息

2016-09-18  本文已影响0人  CHUWT

0x00

由于最近的app项目用到云通讯的语音验证码,几次出现余额不足的情况,虽然网站自带余额提醒,可是又繁琐界面。所以打算在项目管理端增加爬余额显示的接口。

0x01

首先最简单的进入官网的登录界面http://www.yuntongxun.com/user/login,模拟登录.

# coding: utf-8
import requests

url = 'http://www.yuntongxun.com/user/login'
# f12,可以看到登录需要的是loginName, loginPwd
data = {
    'loginName': '',
    'loginPwd': '',
}
r = requests.post(url, data=data)
print r.text.encode('utf-8')

结果发现返回的还是登录页面。
判断可能是headers和cookies没有设置。通过抓包,设置好cookies重新发送,结果也病没有什么乱用。

0x02

web端太麻烦,正好又开了抓包工具,那顺便抓下手机端的数据是什么样子的吧。正好微信搜到云通讯的公众号,立马抓一下。
通过抓包发现,需要这3个参数才可以登录。

  1. JSESSIONID
  2. gr_session_id_xxxx
  3. gr_user_id

反复试验发现gr_user_id 是固定的,JSESSIONID是网站返回的,而gr_session_id_xxxx是怎么产生的呢?
经过一番折腾,发现并不知道gr_session_id_xxx是怎么产生的,又抓不到js文件,所以放弃手机端,重新转向web端。

0x03

重新抓包可以发现一些js文件,有些可以直接看到js代码,而有一些则抓不到js代码。
重新阅读/user/login页面,发现登录的源码

$.ajax({
    type : "POST",
url : "/user/doLogin",
data{
     loginName:$("#loginName").val(),loginPwd:$.md5($("#loginPwd").val()),loginCode:$("#loginCode").val(),remeberMe:remeber,preUrl:$("#preUrl").val()},
     dataType : "json",
    success : function(data) {
    }
    };

原来真正的登录是/user/doLogin
重新编辑代码,登录,提示用户或密码不正确。
重新阅读代码,发现密码是加密过后发过去的,所以md5是关键。正好抓包的时候可以看到抓到的jquery.md5.js,可是并没有源码,把文件路径粘贴到url上提示404,决定把域名换成ip试试,结果得到源码,然后加密自己的密码重新发送,最终得到返回值。

0x04

得到返回值之后带着cookies访问/member/main,最终访问成功。源码如下:

import requests

url = 'http://www.yuntongxun.com/user/doLogin'

data = {
    'loginName': '',
    'loginPwd': '',
}

r = requests.post(url, data=data)

cookies = dict(r.cookies)

url = 'http://www.yuntongxun.com/member/main'

r = requests.get(url, cookies=cookies)

print r.text.encode('utf-8')

0x05

最后就是分析html,在此就不做分析了。

上一篇 下一篇

猜你喜欢

热点阅读