大多数APP里面返回的是json格式数据,或者一堆加密过的数据 。这里以超级课程表APP为例,抓取超级课程表里用户发的话题。

1、抓取APP数据包

方法详细可以参考这篇博文:Fiddler如何抓取手机APP数据包

得到超级课程表登录的地址:http://120.55.151.61/V2/StudentSkip/loginCheckV4.action

表单:

表单中包括了用户名和密码,当然都是加密过了的,还有一个设备信息,直接post过去就是。

另外必须加header,一开始我没有加header得到的是登录错误,所以要带上header信息。

2、登录

登录代码:

import urllib2

from cookielib import CookieJar

loginUrl = 'http://120.55.151.61/V2/StudentSkip/loginCheckV4.action'

headers = {

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'User-Agent': 'Dalvik/1.6.0 (Linux; U; Android 4.1.1; M040 Build/JRO03H)',

'Host': '120.55.151.61',

'Connection': 'Keep-Alive',

'Accept-Encoding': 'gzip',

'Content-Length': '207',

}

loginData = 'phoneBrand=Meizu&platform=1&deviceCode=868033014919494&account=FCF030E1F2F6341C1C93BE5BBC422A3D&phoneVersion=16&password=A55B48BB75C79200379D82A18C5F47D6&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&'

cookieJar = CookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))

req = urllib2.Request(loginUrl, loginData, headers)

loginResult = opener.open(req).read()

print loginResult

登录成功 会返回一串账号信息的json数据

和抓包时返回数据一样,证明登录成功

3、抓取数据

用同样方法得到话题的url和post参数

做法就和模拟登录网站一样。详见:Python爬虫模拟登录带验证码网站

下见最终代码,有主页获取和下拉加载更新。可以无限加载话题内容。

#!/usr/local/bin/python2.7

# -*- coding: utf8 -*-

"""

超级课程表话题抓取

"""

import urllib2

from cookielib import CookieJar

import json

''' 读Json数据 '''

def fetch_data(json_data):

data = json_data['data']

timestampLong = data['timestampLong']

messageBO = data['messageBOs']

topicList = []

for each in messageBO:

topicDict = {}

if each.get('content', False):

topicDict['content'] = each['content']

topicDict['schoolName'] = each['schoolName']

topicDict['messageId'] = each['messageId']

topicDict['gender'] = each['studentBO']['gender']

topicDict['time'] = each['issueTime']

print each['schoolName'],each['content']

topicList.append(topicDict)

return timestampLong, topicList

''' 加载更多 '''

def load(timestamp, headers, url):

headers['Content-Length'] = '159'

loadData = 'timestamp=%s&phoneBrand=Meizu&platform=1&genderType=-1&topicId=19&phoneVersion=16&selectType=3&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&' % timestamp

req = urllib2.Request(url, loadData, headers)

loadResult = opener.open(req).read()

loginStatus = json.loads(loadResult).get('status', False)

if loginStatus == 1:

print 'load successful!'

timestamp, topicList = fetch_data(json.loads(loadResult))

load(timestamp, headers, url)

else:

print 'load fail'

print loadResult

return False

loginUrl = 'http://120.55.151.61/V2/StudentSkip/loginCheckV4.action'

topicUrl = 'http://120.55.151.61/V2/Treehole/Message/getMessageByTopicIdV3.action'

headers = {

'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',

'User-Agent': 'Dalvik/1.6.0 (Linux; U; Android 4.1.1; M040 Build/JRO03H)',

'Host': '120.55.151.61',

'Connection': 'Keep-Alive',

'Accept-Encoding': 'gzip',

'Content-Length': '207',

}

''' ---登录部分--- '''

loginData = 'phoneBrand=Meizu&platform=1&deviceCode=868033014919494&account=FCF030E1F2F6341C1C93BE5BBC422A3D&phoneVersion=16&password=A55B48BB75C79200379D82A18C5F47D6&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&'

cookieJar = CookieJar()

opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cookieJar))

req = urllib2.Request(loginUrl, loginData, headers)

loginResult = opener.open(req).read()

loginStatus = json.loads(loginResult).get('data', False)

if loginResult:

print 'login successful!'

else:

print 'login fail'

print loginResult

''' ---获取话题--- '''

topicData = 'timestamp=0&phoneBrand=Meizu&platform=1&genderType=-1&topicId=19&phoneVersion=16&selectType=3&channel=MXMarket&phoneModel=M040&versionNumber=7.2.1&'

headers['Content-Length'] = '147'

topicRequest = urllib2.Request(topicUrl, topicData, headers)

topicHtml = opener.open(topicRequest).read()

topicJson = json.loads(topicHtml)

topicStatus = topicJson.get('status', False)

print topicJson

if topicStatus == 1:

print 'fetch topic success!'

timestamp, topicList = fetch_data(topicJson)

load(timestamp, headers, topicUrl)

结果:

本文标题: Python爬虫抓取手机APP的传输数据

本文地址: http://www.cppcns.com/jiaoben/python/140854.html

python爬app_Python爬虫抓取手机APP的传输数据相关推荐

  1. python爬虫app步骤_Python爬虫抓取手机APP的传输数据,python爬虫抓取app

    Python爬虫抓取手机APP的传输数据,python爬虫抓取app 大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1. ...

  2. python爬虫抓取数据的步骤-Python爬虫抓取手机APP的传输数据

    大多数APP里面返回的是json格式数据,或者一堆加密过的数据 .这里以超级课程表APP为例,抓取超级课程表里用户发的话题. 1.抓取APP数据包 得到超级课程表登录的地址:http://120.55 ...

  3. Python爬虫+夜神模拟器+Fiddler抓取手机APP数据接口 -- 图文教程(霸霸看了都说好)

    Fiddler的抓包原理 Fiddler是强大的抓包工具,它的原理是以web代理服务器的形式进行工作的,使用的代理地址是:127.0.0.1,端口默认为8888,我们也可以通过设置进行修改. 代理就是 ...

  4. python3 爬虫实战 :用 Appium 抓取手机 app 的 数据

    http://www.ziksp.com/%e5%ad%a6%e4%b9%a0%e8%b5%84%e6%96%99/python%e7%bc%96%e7%a8%8b/  python资料站 From: ...

  5. python3 爬虫实战 :用 Appium 抓取手机 app 微信朋友圈的数据

    From:https://blog.csdn.net/Fan_shui/article/details/81413595 本编教程从 appium 的环境配置开始,到抓取手机 app 微信朋友圈结束. ...

  6. python爬取百度贴吧中的所有邮箱_使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号...

    原标题:使用 Python 编写多线程爬虫抓取百度贴吧邮箱与手机号 不知道大家过年都是怎么过的,反正栏主是在家睡了一天,醒来的时候登QQ发现有人找我要一份贴吧爬虫的源代码,想起之前练手的时候写过一个抓 ...

  7. fiddler抓取手机app数据(手机开热点)

    一.准备工作 1. 下载并安装fiddler抓包工具.手机提前安装好fiddler证书,这个可以看以往的文章 二.手机配置 手机打开热点,电脑连接成功后 1.首先需要知道电脑ip地址.电脑ip地址可通 ...

  8. burpsuite抓取手机app数据包(通过笔记本开热点方式)

    burpsuite抓取手机app数据包(通过笔记本开热点方式) 1,点击笔记本右下方网络图标,出现移动热点,右键转到设置 进去之后设置热点名称密码,手机连接热点,笔记本查看连接设备的网段,这儿可以看到 ...

  9. Fiddler抓取手机APP报文

    Http协议代理工具有很多,比如Burp Suite.Charles.Jmeter.Fiddler等,它们都可以用来抓取APP报文,其中charles和Burp Suite是收费的,Jmeter主要用 ...

最新文章

  1. 教你在Linux中如何归档和备份
  2. MySQL中MyISAM 与innoDB的区别(转)
  3. SSH port forwarding: bind: Cannot assign requested address
  4. 查看安装的react-native和react版本
  5. win10计算机右键属性打不开,win10系统右键计算机无法打开属性窗口的解决技巧...
  6. 安卓清理垃圾清理代码_从战中清理代码
  7. BugkuCTF-MISC题split
  8. 在家用计算机相亲,和相亲男吃完饭后,他默默打开了计算器
  9. Uber发布的CoordConv遭深度质疑,“翻译个坐标也需要训练?”
  10. linux图形界面setup,linux setup命令参数及用法详解--linux图形界面设置命令
  11. 在Fedora 14 alpha 下测试Kvm情况(视频)
  12. Google 发布首款微信小程序,各种灵魂画作出没!
  13. Eviews创建散点图的具体方法
  14. Ubuntu安装谷歌浏览器Chrome
  15. shanzhi -接小球游戏2.0
  16. 实验三-RIPv2基本配置实验
  17. IDEA修改中文字体为微软雅黑
  18. fatal: You have not concluded your cherry-pick (CHERRY_PICK_HEAD exists). Please, commit your change
  19. 评价PE基金绩效的常用指标IRR、MIOC、DPI、TVPI意义
  20. 啤酒每罐2.3元,饮料每罐1.9元

热门文章

  1. Java千百问_03基本语法(002)_java都有哪些关键字
  2. Unity3D 渲染统计窗口
  3. uva 10985 Rings'n'Ropes
  4. Eclipse3.2下JFace和SWT工程环境配置方法
  5. 该省代码的地方要省,反之亦然。
  6. Captaris Workflow开发系列课程介绍。
  7. 1081 n个数求和 (多实例测试)
  8. 信息学奥赛一本通 2005:【20CSPJ普及组】直播获奖 | 洛谷 P7072 [CSP-J2020] 直播获奖
  9. 信息学奥赛一本通 1125:矩阵乘法 | OpenJudge NOI 1.8 08
  10. 信息学奥赛一本通(1109:开关灯)