精华内容
下载资源
问答
  • 爬取手机APP数据

    万次阅读 2019-04-09 10:25:18
    爬取APP数据流程: 1、使用抓包工具; 2、手机使用代理; 3、获取并分析接口; 4、反编译apk获取key; 5、突破反爬限制。 工具: 1、夜神模拟器 2、Fiddler 实现过程: 1、下载夜神模拟器模拟手机,也可用...

    爬取APP数据流程:
    1、使用抓包工具;
    2、手机使用代理;
    3、获取并分析接口;
    4、反编译apk获取key;
    5、突破反爬限制。

    工具:
    1、夜神模拟器
    2、Fiddler

    实现过程:
    1、下载夜神模拟器模拟手机,也可用真机;
    2、下载Fiddler抓包工具,抓取手机APP数据包;
    3、分析接口;
    4、使用Python实现爬虫程序。

    Fiddler安装配置过程:
    1、下载并安装Fiddler;
    2、设置Fiddler (配置完后记得重启Fiddler):
    打开Fiddler,点击Tools(工具)->选中 Fiddler Options(选项…)->选中”Decrpt HTTPS traffic(解密HTTPS通信)”, Fiddler就可以截获HTTPS请求->选中“Ignore server certificate errors(忽略服务器证书错误),会导致浏览器显示不安全。”(如无此项,则点击Actions动作->Reset All Certificates重置所有证书)->选中”Allow remote computers to connect(允许远程计算机连接)”,是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来。


    在这里插入图片描述
    在这里插入图片描述

    记住端口号是:8888

    夜神模拟器安装配置过程:
    1、下载安装夜神模拟器;
    2、配置代理:
    打开cmd,输入ipconfig查看本机IP(每次启动电脑都不一样):


    在这里插入图片描述

    进入夜神模拟器 –>打开设置 –>打开WLAN:

    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

    点击修改网络,点击显示高级选项前的框:

    在这里插入图片描述

    显示代理及IP设置(如未显示,可重启程序),代理模式选手动:

    在这里插入图片描述

    配置完后保存即可(每次重启电脑都需重新设置代理服务器主机名,因为重启后本机IPv4地址都会改变),到这里就设置好所有的配置了。
    3、安装Fiddle证书(如需安装证书则操作此步)
    在模拟器中的浏览器输入 http://ipv4.fiddler:8888,下载安装证书

    在这里插入图片描述
    在这里插入图片描述

    4、在夜神模拟器中安装待爬取的APP,使用Fiddler抓包分析api,最后用python爬取。

    爬取老子搜书APP完整代码:

    #!/usr/bin/env python
    # -*-coding=utf-8-*-
    
    """
    爬取老子搜书,老子搜书用的是追书神器
    """
    
    import requests
    import json
    import urllib.parse 						#url编码、解码
    import re
    
    # 搜书及书目的消息头
    headers = {
    	'Host':'api.zhuishushenqi.com',
    	'Connection':'Keep-Alive',
    	'Accept-Encoding':'gzip',
    	'User-Agent':'okhttp/3.6.0'
    }
    # 查看内容详情的消息头
    headers2 = {
    	'Host':'chapter2.zhuishushenqi.com',
    	'Connection':'Keep-Alive',
    	'Accept-Encoding':'gzip',
    	'User-Agent':'okhttp/3.6.0'
    }
    
    # 搜书并返回书的id列表
    def search(name):
    	url = 'http://api.zhuishushenqi.com/book/fuzzy-search?query={0}'.format(name)
    	html = requests.get(url, headers=headers)
    	content = html.content.decode('utf-8')
    	con = json.loads(content)['books']		#字符串转换成json,并获取books键的值
    	book_list = []							#搜索结果id列表
    	a = 0 									#初始化书号
    	for i in con:
    		a += 1
    		aid = i['_id']
    		title = i['title']
    		author = i['author']
    		body = str(a) + '、 ' + title + ' ' + author
    		book_list.append(aid)
    		print(body)							#打印显示书号、书名、作者
    	return book_list
    
    # 查看目录并返回章节标题及链接字典列表
    def chapters(aid):
    	url = 'http://api.zhuishushenqi.com/mix-atoc/{0}?view=chapter'.format(aid)
    	html = requests.get(url, headers=headers)
    	content = html.content.decode('utf-8')
    	con = json.loads(content)['mixToc']['chapters']
    	chapter_list = []
    	a = 0
    	for i in con:
    		a += 1
    		title = i['title']
    		link = i['link']
    		body = str(a) + '、 ' + title
    		chapter_list.append({title:link})	#将章节标题及链接组成字典并添加到列表
    		print(body)							#打印显示章节号、标题
    	return chapter_list
    
    # 查看内容
    def look(title, url):
    	new_url = 'http://chapter2.zhuishushenqi.com/chapter/' + urllib.parse.quote(url)	#需要url编码,否则路径错误
    	html = requests.get(new_url, headers=headers2)
    	content = html.content.decode('utf-8')
    	con = json.loads(content)['chapter']['body']
    	print('\n' + title + '\n')
    	print(con)
    
    if __name__ == '__main__':
    	while True: 							#确保书名输入正确
    		name = input('请输入书名:').strip()
    		reg = r'[\u4e00-\u9fa5A-Za-z]+.*'	#以汉字或字母开头的正则
    		name_reg = re.compile(reg)
    		res = name_reg.match(name)			#从字符串起始位置匹配
    		if res:
    			book_id = search(name)			#获取搜书结果id列表
    			length = len(book_id)			#获取搜书结果数量
    			break
    		else:
    			print('输入错误!书名必须以汉字或字母开头!')
    	while True: 							#确保书号输入正确
    		book = input('请选择书号:').strip()
    		if book.isdigit():
    			if int(book) > 0 and int(book) <= length:
    				aid = book_id[int(book)-1]	#获取选择的书id
    				chapter_id = chapters(aid)	#获取标题、链接字典列表
    				length2 = len(chapter_id)	#获取章节数
    				break
    			else:
    				print('输入错误!没有该书号!')
    		else:
    			print('输入错误!请输入数字!')
    	while True: 							#确保章节号输入正确
    		chapter = input('请选择章节号:').strip()
    		if chapter.isdigit():
    			chapter2 = int(chapter)
    			if chapter2 > 0 and chapter2 <= length2:
    				while True:							#翻页
    					chap = chapter_id[chapter2-1] 	#获取当前选择章节的标题、链接字典
    					title = list(chap)[0] 			#获取章节标题
    					url = list(chap.values())[0]	#获取章节链接
    					look(title, url)				#查看章节内容
    					while True: 					#按键操作
    						next = input('\n\n\n输入x键进入下一章,q键退出:').strip()
    						if next == 'x':
    							chapter2 += 1 			#下一页章节号
    							break
    						elif next == 'q':			#退出按键操作
    							break
    						else:
    							print('输入错误!请重新输入。')
    					if next == 'q':					#退出翻页
    						break
    			else:
    				print('输入错误!没有该章节号!')
    		else:
    			print('输入错误!请输入数字!')
    		if next == 'q':						#退出章节,结束程序
    			print('已退出程序!')
    			break
    

    总结:
    app里的数据比web端更容易抓取,反爬虫也没那么强,大部分也都是http/https协议,返回的数据类型大多数为json。

    展开全文
  • App是application的缩写,通常专指手机上的应用软件,或称手机客户端。另外目前有很多在线app开发平台。 当然移动互联网时代是全民的移动互联网时代,是每个人的时代,也是每个企业的时代。APP便捷了每个人的生活...
    手机应用软件开发概述
    App开发,是指专注于手机应用软件开发与服务。 App是application的缩写,通常专指手机上的应用软件,或称手机客户端。另外目前有很多在线app开发平台。
    当然移动互联网时代是全民的移动互联网时代,是每个人的时代,也是每个企业的时代。APP便捷了每个人的生活,APP开发让每个企业都开始了移动信息化进程。

    我们的优势
    我们更懂行 多年品牌营销策划及移动营销经验对市场营销了若指掌
    我们更领先 最早涉足移动营销技术/理念/系统更领先
    我们更系统 以品牌营销为导向的全方位移动营销体系囊括推广/转化/咨询
    我们更敏锐 资深市场一线人员、移动领域专业工程师共同参与研发

    手机应用软件开发能给企业带来哪些价值
    1、手机应用软件开发可以帮助企业实现精准营销。APP将企业的最新信息,比如公司最近的新产品上市或优惠促销活动等信息快速精准的传达给目标客户。
    2、可以通过手机APP随时随地传达信息给客户,不会受时间跟空间等原因受阻。
    3、提高用户的粘度,留住新老客户,让他们成为企业中最好的口碑传播者。
    4、企业用最低的广告成本,获得最佳的宣传效果。与传统的广告方式相比,手机APP广告无需按点击和播发次数付费,其图文并茂、形象生动的广告表现形式,无论是费用还是效果方面都比传统的广告更胜一筹。
    5、服务于现有客户,提升客户的满意度,并促成二次消费。

    APP开发流程
    1、制作一款APP,必须要有相关的需求,也就是说,第一步是APP的需求形成。
    2、通过那些需求来进行APP的主要功能设计以及大概界面构思和设计。
    3、大功能模块代码编写以及大概的界面模块编写。在界面模块编写之前,开发者可以在模拟器做大的功能开发。
    4、大概的界面和功能连接后,app的大致demo就出来了。值得一提的是,如果有界面设计师,就能节省大量时间。比如界面设计上,可以编写功能模块和设计师同步进行。这样app的demo出来后,基本上可以有界面可以用了。
    在demo出来之后要自己试用和体验几遍,然后根据情况修改。
    5、如果没有大错误后,能够在产品设计和开发过程中,找一部分测试用户参与是非常有必要的。对他们的回馈的方法,可以在app发布后对这些用户发放免费产品。这个做法即可以提高产品质量,又可令到测试用户拿到免费的软件产品。
    6、根据测试用户的反馈,重复之前demo出来后的一系列步骤。
    7、在app完成后,发不到网站和个大应用市场方便用户下载安装使用。


    APP定制功能
    1、LBS定位(适用场景:签到APP、旅游订房类 APP、打车租车类APP等等)
    2、摇一摇(适用场景:交友APP、彩票APP等等)
    3、二维码(适用场景:二维码扫描、商品比价、添加好友等等)
    4、图形图表(适用场景:走势图、K线图、数据分析等等)
    5、分享到QQ、微信、微博等社交平台功能(适用场景:所有APP)
    6、微信二次开发(适用场景:微信营销、推广等等)
    7、多文件上传(适用场景:图片上传、资料上传、分享等等)
    8、文本、语音、视频即时聊天(适用场景:社交、咨询等等)
    9、与新浪微博、腾讯微博、淘宝、人人等登录系统对接(适用场景:需要用第三方登录系统的APP、淘宝客返利APP)
    10、与业务系统对接(适用场景:与原有的ERP生产系统或CRM或B2C商城等系统进行接口对接,是手机应用成为整套系统的一部分)
    11、支付宝快捷支付、支付宝WAP支付、银联手机支付(适用场景:电商类APP)—— 物联网(适用场景:与硬件设备结合监控设备指标并操控设备、远程控制、智能家具APP)

    APP服务端开发
    1、图文展示(适用场景:产品展示)—— AR识别(适用场景:图像识别,趣味游戏)
    2、电子优惠券
    其他功能可根据用户的需求定制!

    手机APP应用软件开发出来后如何维护?
    1、APP取名于描述设计:好的APP名字要体现出APP的功能,这样能让用户容易记住你的APP,还有好的描述也能提高APP的使用率以及下载率,所以在设计APP描述的时候除了功能描述之外,还要注意到APP相关关键词的挖掘跟布局。
    2、APP上架各大应用市场:与常规APP一样首先第一步是在各大应用市场上架,搭建基本的APP下载条件。这样做有两个好处一是可以为你后续宣传铺下基础,而是会产生自然下载。
    3、组织APP线上线下推广:线上使用软文投放是所有APP推广最常用,也是最容易做的一种方法,这种方法所需要投入的时间、人力成本都是比较低,自然成功的概率也是比较低,还要通过策划事件或者活动为媒介来引导用户接触使用这个APP;线下可以使用公交出租灯箱等地方投广告,用户每天都能看到网批生活APP广告,潜移默化中形成了品牌效应等。

    手机应用软件开发出来之后维护是一件很重要的事情,总而言之,运营核心就是要留住用户,否则投入那么多精力跟钱开发出来的APP没有用户,没有下载率跟使用率,很快就会成为僵尸APP。

    不管怎么样,企业做APP营销的运营核心就是要留住客户!只有提高app的运营质量,乘胜追击,建立属于自己的品牌才能迅速崛起。

    App运营
    1、基础运营: 维护产品正常运作的最日常最普通的工作。
    2、用户运营: 负责用户的维护,扩大用户数量提升用户活跃度。对于部分核心用户的沟通和运营,有利于通过他们进行活动的预热推广,也可从他们那得到第一手的调研数据和用户反馈。
    3、内容运营: 对产品的内容进行指导、推荐、整合和推广。给活动运营等其他同事提供素材等。
    4、活动运营: 针对需求和目标策划活动,通过数据分析来监控活动效果适当调整活动,从而达到提升KPI,实现对产品的推广运营作用。
    5、渠道运营: 通过商务合作、产品合作、渠道合作等方式,对产品进行推广输出。通过市场活动、媒介推广、社会化媒体营销等方式对产品进行推广传播

    App开发需要多少钱
    如今企业开发APP已经不是什么新鲜事了,很多企业都知道专属的独立品牌APP应用开发是企业在移动互联网未来生存发展的重要选择。因此APP开发多少钱也是很多客户最关心的问题。一般决定手机应用开发价格的因素主要是架构的复杂性跟需要投入的人力和时间!以下是小编整理的一些常见问题:
    1、我想找外包公司开发个简单的APP,不需要考虑界面华丽程度和交互效果?
    这种APP基本一个程序员就可以搞定,而且如果有高手指点,一个计算科班的大学生或研究生就可以了。一般在几千到几万元之间。
    2、我想要开发的APP只在固定平台上运行?
    大多数人都会先考虑iOS,因为用iPhone的人群相对高端,具备一定的消费能力,能在iOS上运行良好,界面和交互都良好。价格一般在几万到十几万元之间。
    3、我想要开发APP,需要跨平台,全平台通用?
    目前移动终端主要分为android(安卓),iOS(苹果),其他的比如黑莓等在国内不是太流行,主要就是以上两种。这种开发需要一个团队支持,团队的结构以架构师兼后台开发1名+安卓1名+iOS开发1名+产品经理1名+前端开发1名+设计师1名。价格一般在十几万到几十万元之间。

    伟鹏科技提供哪些开发服务?
    (1)Android应用程序开发:针对目前Android平台日益严重的碎片化问题,我们提供了多种解决方案,针对不同的系统版本,设备型号和设备分辨率,我们提供了全面的兼容性测试。同时,我们为客户的App提供了多平台发布服务,努力让更多的用户可以下载到。
    (2)IOS(iPhone、iPad、Mac os)应用程序开发
    (3)手机移动网站开发:随着智能手机用户数量的爆发式增长,企业在拥有一个桌面版的网站的同时,更需要拥有一个适配智能手机的移动版网站。伟鹏科技为客户提供了基于HTML5+CSS3+JQuery Mobile的移动版网站开发前端技术,使客户的网站在多种平台多种分辨率下拥有统一的显示效果,另外可以实现更炫的动态效果。

    伟鹏科技的差异点在于不断掌握领先的网络技术。后台技术到前端技术,根据项目需求使用适合的编程技术,从而保证项目品质的完美性。


    Q Q:2533950058
    展开全文
  • python 手机app数据爬取

    千次阅读 2019-05-24 23:50:33
    今天向大家介绍app爬取。 文章目录一:爬取主要流程简述二:抓包工具Charles1.Charles的使用2.安装(1)安装链接(2)须知(3)安装后3.证书配置(1)证书配置说明(2)windows系统安装证书配置(3)Android手机安装证书配置4....

    今天向大家介绍app爬取。

    一:爬取主要流程简述

    1.APP的爬取比Web爬取更加容易,反爬虫没有那么强,且大部分数据是以JSON形式传输的,解析简单。

    2.在APP中想要查看请求与响应(类似浏览器的开发者工具监听到的各个网络请求和响应),就需要借助抓包软件。

    3.在抓取之前,需要设置代理将手机处于抓包软件的监听下,就可以用同一网络进行监听,获得所有的网络和请求。

    4.如果是有规则的,就只需要分析即可;如果没有规律,就可以用另一个工具mitmdump对接Python脚本直接处理Response。

    5.抓取肯定不能由人手动完成,还需要做到自动化,还要对App进行自动化控制,可以用库Appium。


    二:抓包工具Charles

    1.Charles的使用

       Charles是一个网络抓包工具,比Fiddler功能更强大,可以进行分析移动App的数据包,获取所有的网络请求和网络内容

    2.安装

    (1)安装链接

       官网:https://www.charlesproxy.com

    (2)须知

       charles是收费软件,但可以免费试用30天。试用期过了,还可以试用,不过每次试用不能超过30分钟,启动有10秒的延迟,但大部分还可以使用。

    (3)安装后

    在这里插入图片描述

    3.证书配置

    (1)证书配置说明

       现在很多网页都在向HTTPS(超文本传输协议的加密版,即HTTP加入SSL层),经过SSL加密更加安全,真实,大部分都由CA机构颁发安全签章(12306不是CA机构颁发,但不被信任)。现在应用HTTPS协议的App通信数据都会是加密的,常规的截包方法是无法识别请求内部的数据的。
       要抓取APP端的数据,要在PC和手机端都安装证书。

    (2)windows系统安装证书配置

       打开Charles,点击Help->SSL Proxying->Install Charles Root Certificate,进入证书的安装页面:
    在这里插入图片描述
       点击安装证书,就会打开证书安装向导,然后点击下一步,此时需要选择证书的存储区域,选择第二个选项”将所有证书放入下列存储”:
    在这里插入图片描述
       然后点击浏览,选择证书存储位置为”受信任的根证书颁发机构”,点击确认并进入下一步:
    在这里插入图片描述

    (3)Android手机安装证书配置

    手机与电脑连接同一个WiFi。
    设置如下:
    可以用操作系统命令ipconfig查看PC端ip:

    在这里插入图片描述
       为10.61.131.172,默认代理端口号为8888。之后代理服务器为电脑的IP地址。端口为8888。设置如下:
    在这里插入图片描述
    会发现360手机的标志
    在这里插入图片描述
    接下来对手机下载证书:
    访问手机访问 chls.pro/ssl ,下载证书:
    在这里插入图片描述
       此时下载的是个.pem 格式的。需要手动更改为.crt 格式,最后随便放进某个文件夹即可:
    在这里插入图片描述
    用手机(我用的360手机)设置里的安全,找到从存储设备安装找到该crt文件进行配置:
    在这里插入图片描述
    此时需要设置锁屏:
    在这里插入图片描述
    就可以完成证书的安装。

    4.开启SSL监听

       点击Proxy->SSLProxying Settings,在弹出的窗口中点击Add按钮,添加需要监听的地址和端口号。需要监听所有的HTTPS请求,可以直接将地址和端口设置为*,即添加*:*设置,就可以抓取所有的HTTPS请求包;如果不配置,抓取的HTTPS请求包状态可能是unknown。
    在这里插入图片描述
    在这里插入图片描述
    这样就指定只监听我们需要的ip和端口的请求和响应。

    5.原理

       Charles运行时会在PC端的8888开启一个代理服务,实际上是一个HTTP/HTTPS的代理。
       可以是用手机通过相同的无线网络连接(这里用的是校园网),设置手机代理为Charles的代理地址,这样手机访问互联网的数据就会经过Charles抓包工具,Charles转发这些数据到真实的服务器,再转发到手机中。这样抓包工具(Charles)就起到了中间人的作用,还有权对请求和响应进行修改。

    6.抓包

       我们可以看到我们已经请求了很多数据了,点击左上角的扫帚按钮即可清空捕获到的所有请求,然后点击第二个监听按钮,表明Charles正在监听App的网络数据流。如下:
    在这里插入图片描述
    抓包后可以看到音乐:
    在这里插入图片描述
       可以通过分析不同的URL请求,获得数据,也可以通过修改数据,得到那些参数是需要的。
    在这里插入图片描述
       这是有规则的,无规则的如果没有规律的url,就可以用另一个工具mitmdump对接Python脚本直接处理Response。



    三:抓包工具mitmproxy(免费的)

    1.简介

       mitmproxy是一个支持HTTP和HTTPS的抓包程序,有类似Fiddler和Charles的功能,但它是一个控制台的形式操作。

    2.关联组件

       mirmproxy还有两个关联组件。一个是mitmdump,是命令行接口,可以对接Python脚本,用Python处理数据;另一个是mitmweb,是一个web程序,可以清楚地查看mitmproxy捕获的请求。

    3.安装和证书配置

    (1)用pip安装

       这个是安装python后就有的安装方法,也是最简单的安装方法,在控制台输入
       Pip install mitmproxy即可,会自动安装mitmdump和mitmweb组件:
    在这里插入图片描述
    但是到最后安装会失败:
    在这里插入图片描述
       是因为安装这个包的 window 系统需要首先安装 Microsoft Visual C++ V14.0以上 才行。
       可以在https://visualstudio.microsoft.com/downloads/
    直接下载即可,安装之后需要c++的库之类的东西都安装了,然后再在命令行进行安装 mitmproxy即可:
    在这里插入图片描述
    然后进入安装目录,我们选择第三个:
    在这里插入图片描述
    在“安装 Visual Studio”屏幕中找到所需的工作负载,选择"使用的桌面开发C++"工作负荷:
    注:这里的文件太大,我直接安装到E盘。
    在这里插入图片描述
    之后再安装就可以安装成功了:
    在这里插入图片描述

    (2)在GitHub或官网上安装

    GitHub:https://github.com/mitmproxy/mitmproxy
    官网:https://mitmproxy.org
    下载地址:https://github.com/mitmproxy/mitmproxy/releases

    3.证书配置

    (1) 产生CA证书

       对于mitmproxy来说,如果想要截获HTTPS请求,也需要设置证书。它在安装后会提供一套CA证书,只要客户端信任了mitmproxy的证书,就可以通过mitmproxy获取HTTPS请求的具体内容,否则无法解析HTTPS请求。
       在cmd中输入命令行接口命令mitmdump,产生CA证书,在用户目录找到CA证书:
    在这里插入图片描述
    在这里插入图片描述
    这里的目录可以自行指定,但必须是在第一次运行mimdump时。
    (2)PC端安装
       电脑是Window系统,因此用mitmproxy-ca.p12,双击后出现导入证书的引导页:
    在这里插入图片描述
    点击下一步,不需要设置密码:
    在这里插入图片描述
    接下来点击下一步,需要选择证书的存储区域,和配置Charles一样:
    在这里插入图片描述
    最后会有警告,选择是即可,证书就安装到我们的电脑上了:
    在这里插入图片描述
    在这里插入图片描述
    (3)手机端安装
       我的手机是Android系统,直接把mitmproxy-ca.pem文件发送到手机上即可。
       配置方法和Charles类似。HTTPS请求。
       手动更改为.crt 格式,最后随便放进某个文件夹即可,用手机(我用的360手机)设置里的安全,找到从存储设备安装找到该crt文件进行配置:
    在这里插入图片描述
    在这里插入图片描述

    4.抓包原理

       在mitmproxy中,会在PC端的8080端口运行,然后开启一个代理服务,就是一个HTTP/HTTPS代理,类似ip代理。
       手机和PC在同一局域网内,设置代理为mitmproxy的代理地址,抓包工具mitmproxy就相当于中间人的作用,数据就会流经抓包工具。这个过程还可以对接mitmdump,抓取到的请求和响应都可以直接用Python来处理,然后分析,存到本地,或存到数据库。

    5.设置代理

       在抓包前需要先设手机局域网置代理为抓包工具mitmproxy代理。

    (1)启动代理服务

       在cmd中输入mitmproxy,会在8080端口运行一个代理服务,由于该命令不支持Windows系统,因此在Windows系统中用mitmdump命令:
    在这里插入图片描述
    用mitmdump启动代理服务,监听8080端口:
    在这里插入图片描述

    (2)设置当前代理

       将手机和电脑连到同一局域网下,先用操作系统命令ipconfig查看PC端当前局域网的ip:
    在这里插入图片描述
    为10.61.131.172,在手机端设置代理如下:
    在这里插入图片描述
    这样就配置好了mitmproxy的代理。

    6.抓包

       运行mitmweb(由于mitmproxy不能用),就可以看到手机上的所有请求:
    在这里插入图片描述
    网页呈现如下:
    在这里插入图片描述
       随便打开一条网络请求,发现和在网页的开发者工具下,监听到的一样:
    在这里插入图片描述
    在这里插入图片描述

    7.mitmproxy的高级功能mitmdump

       上面的功能与方法在Fiddler和Charles中也有,那么mitmproxy的优势何在?
       在mitmproxy中它的强大体现到mitmdump工具,可以对接Python对数据请求进行处理。
       它是mitmproxy的命令行接口,可以对接python程序对请求进行处理,不需要手动截取和分析HTTP请求和响应,进行数据存储和解析都可以通过Python来完成。

    (1)简单获取数据(随便一个app)

    我们先创建一个文件夹:
    在这里插入图片描述
    然后打开转到该文件夹下:
    在这里插入图片描述
       输入mitmdump -w outfile(outfile名称和扩展名可以自定义,文件放到当前cmd打开目录下,也可以用绝对相对路径,但比较麻烦):
    截取广播页面:
    在这里插入图片描述
    在这里插入图片描述
    之后把截获的数据保存到文件夹下:
    在这里插入图片描述
    打开文件,发现好多乱码:
    在这里插入图片描述
    下面会对其进行处理。

    (2)可以指定一个脚本来处理截获的数据:

       Mitmdump -s script.py(脚本名字可以自定义),需要放在cmd当前目录下,也可以用绝对相对路径,但比较麻烦。
    写入如下代码:
    在这里插入图片描述
       就是定义了一个request()方法,参数为url,其实是一个HTTPFlow对象,通过request属性即可获取到当前请求对象。然后打印出请求头,将User-Agent(用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言浏览器插件等)修改为MitmProxy。
    运行之后手机端访问http://httpbin.org/get,可以看到请求头:
    在这里插入图片描述
    PC端如下:
    在这里插入图片描述
       手机端请求的Headers实际上就是请求的Headers,User-Agent被修改成了mitmproxy(防反爬),PC端显示修改后的Headers内容,其User-Agent正是MitProxy。
       这样就可以让服务器识别不出我们的是爬虫程序了。

    (3)日志输出

       mitmdump提供了专门的日志输出功能,就是设定输出到控制台的颜色,可以分别为不同级别配置不同的颜色,更加直观:
    在这里插入图片描述
    效果如下:
    在这里插入图片描述

    (4)输出请求数据

       可以输出一些请求信息,比如请求连接(url),请求头(headers),请求Cookies(cookies),请求Host(host),请求方法(method),请求端口(port),请求协议(scheme)等。
       还可以把这些请求的信息进行修改后,再发送到服务器中,这样,服务器返回的可能不是app想请求的网页,这就是为什么一些app打开后却访问到了其他网址的原因。
       也可以通过该用法,通过修改Cookies,添加代理等方式来尽可能避免反爬。
    这里就先进行略过。

    (5)获得响应

       响应就是请求后服务器返回的信息,也就是我们需要的,大部分是json格式文件。
       对于json格式文件,mitmdump也提供了对应的处理接口,就是response()方法。
       我们可以打印各个http/https请求的响应内容,不过text才是我们想要的json格式文件,也可以用content,不过返回的是二进制文件。
    代码如下:
    在这里插入图片描述
    我们先试一下:
    在这里插入图片描述
    内容有些乱,接下来我们就进行分析得到我们需要的数据。



    四:利用mitmproxy进行app数据获取

    1.获取请求url

    获取http/https请求url,也可以认为是接口:
    修改python文件,获得请求的url:
    在这里插入图片描述
    然后停留在该页面:
    在这里插入图片描述
    会发现出现了好多url:
    在这里插入图片描述
    我们一一分析一下,发现接口信息分别是:
    这个接口
    https://images.sanmaoyou.com/img/new_images/5ac83890033ec.jpg
    是GET请求获取文件:
    在这里插入图片描述
    这个接口的为json文件,为GET获取方式:
    在这里插入图片描述
    在这里插入图片描述
    这个接口
    https://images.sanmaoyou.com/audio/library/2018-04/5ac83887c5263.mp3
    是下载音乐,为GET获取方式:
    在这里插入图片描述
    这个接口
    http://sdk-open-phone.getui.com/api.php?format=json&t=1&d=76060FDC1EFFF74C1956225F1DBEE6AF006578C33658C4AF90D802512BF321C8&k=2是POST方式,是传文件。
    我们在向右点击下一个广播,进行验证:
    在这里插入图片描述
       发现基本上,新打开一个广播后,会加载mp3文件,图片文件,比较长的接口就返回json文件:
    在这里插入图片描述

    2.接口url文件

    把接口保存到txt文件中:
    在这里插入图片描述
    发现只有很长的接口才返回json文件。因此下面就需要对这些接口进行筛选。

    3.爬取json

    代码在pa_qu_json.py文件中,需要先创建一个json爬取数据文件夹,爬取后的结果如下:
    在这里插入图片描述
    在这里插入图片描述

    接下来用Python处理即可,这里只是简单爬取。在实际应用中,不是人工的,是用代码自动化进行分析各个请求和响应进行爬取。这里有个跨平台的移动端自动化测试工具,可以很方便地进行自动化爬取,在下一个爬虫博客中会详细讲到,希望大家把宝贵意见提出来一起学习进步。

    展开全文
  • 使用python抓取App数据

    万次阅读 多人点赞 2018-07-24 12:50:37
    答案是完全肯定的:凡是可以看到的APP数据都可以抓取。 下面我就介绍下自己的学习经验和一些方法吧 本篇适合有过web爬虫基础的程序猿看 没有的的话学的可能会吃力一些 App接口爬取数据过程 使用抓包工具 手机...

    App中的数据可以用网络爬虫抓取么

    答案是完全肯定的:凡是可以看到的APP数据都可以抓取。
    下面我就介绍下自己的学习经验和一些方法吧 本篇适合有过web爬虫基础的程序猿看
    没有的的话学的可能会吃力一些

    App接口爬取数据过程

    • 使用抓包工具
    • 手机使用代理,app所有请求通过抓包工具
    • 获得接口,分析接口
    • 反编译apk获取key
    • 突破反爬限制

    需要的工具:

    实现过程

    首先下载夜神模拟器模拟手机也可以用真机,然后下载Fiddler抓取手机APP数据包,分析接口完成以后使用Python实现爬虫程序

    Fiddler安装配置过程

    第一步:下载神器Fiddler

    Fiddler下载完成之后,傻瓜式的安装一下!

    第二步:设置Fiddler

    打开Fiddler, Tools-> Fiddler Options (配置完后记得要重启Fiddler)
    选中"Decrpt HTTPS traffic", Fiddler就可以截获HTTPS请求
    选中"Allow remote computers to connect". 是允许别的机器把HTTP/HTTPS请求发送到Fiddler上来
    这里写图片描述
    这里写图片描述
    记住这个端口号是:8888

    夜神模拟器安装配置过程

    ######第一步:下载安装
    夜神模拟器下载完成之后,傻瓜式的安装一下!
    ######第二步:配置桥接 实现互通
    首先将当前手机网络桥接到本电脑网络 实现互通
    这里写图片描述这里写图片描述
    安装完成桥接驱动后配置IP地址,要配成和本机互通的网段,配置完成后打开主机cmd终端ping通ok

    第三步:配置代理
    1. 打开主机cmd
      这里写图片描述
    2. 输入ipconfig查看本机IP
      这里写图片描述
    3. 配置代理
      进入夜神模拟器–打开设置–打开WLAN
      这里写图片描述
      点击修改网络–配置代理 如下图:
      这里写图片描述
      配置完后保存
      到这里我们就设置好所有的值,下面就来测试一下,打开手机的超级课程表APP
      这里写图片描述
    4. 在夜神模拟器上下载你想爬取得App使用Fiddler抓包分析api后使用python进行爬取就可以了

    ####爬取充电网APP实例
    爬取部分内容截图:
    这里写图片描述
    部分python代码分享:

    import requests
    import city
    import json
    import jsonpath
    import re
    
    city_list = city.jsons
    tags_list = city.Tag
    
    def city_func(city_id):
        try:
            city = jsonpath.jsonpath(city_list, '$..sub[?(@.code=={})]'.format(int(city_id)))[0]["name"]
        except:
            city = jsonpath.jsonpath(city_list, '$[?(@.code=={})]'.format(int(city_id)))[0]["name"]
        return city
    
    def tags_func(tags_id):
        tags_join = []
        if tags_id:
            for tags in tags_id:
                t = jsonpath.jsonpath(tags_list,'$..spotFilterTags[?(@.id=={})]'.format(int(tags)))
                tags_join.append(t[0]["title"])
    
        return ('-'.join(tags_join))
    
    def split_n(ags):
        return re.sub('\n','  ',ags)
    
    
    def request(page):
        print('开始下载第%d页'%page)
        url = 'https://app-api.chargerlink.com/spot/searchSpot'
        two_url = "https://app-api.chargerlink.com/spot/getSpotDetail?spotId={d}"
        head = {
            "device": "client=android&cityName=%E5%8C%97%E4%BA%AC%E5%B8%82&cityCode=110106&lng=116.32154281224254&device_id=8A261C9D60ACEBDED7CD3706C92DD68E&ver=3.7.7&lat=39.895024107858724&network=WIFI&os_version=19",
            "appId": "20171010",
            "timestamp": "1532342711477",
            "signature": "36daaa33e7b0d5d29ac9c64a2ce6c4cf",
            "forcecheck": "1",
            "Content-Type": "application/x-www-form-urlencoded",
            "Content-Length": "68",
            "Host": "app-api.chargerlink.com",
            "Connection": "Keep-Alive",
            "User-Agent": "okhttp/3.2.0"
        }
    
    
        data = {
            "userFilter[operateType]": 2,
            "cityCode": 110000,
            "sort": 1,
            "page": page,
            "limit": 10,
        }
    
        response = requests.post(url,data=data,headers=head)
        #获取数据
        data = response.json()
        for i in data['data']:
            c = []
            id = i['id']
            name = i["name"] #充电桩名
            phone = i["phone"] #手机号
            num = i['quantity'] #有几个充电桩
            city = city_func(i["provinceCode"]) #城市
            tags =tags_func(i["tags"].split(','))#标签
            message = c + [id,name,phone,num,city,tags]
            parse_info(two_url.format(d=id),message)
    
    def parse_info(url,message):
    
        #打开文件
        with open('car.csv','a',encoding='utf-8')as c:
            head = {
                "device": "client=android&cityName=&cityCode=&lng=116.32154281224254&device_id=8A261C9D60ACEBDED7CD3706C92DD68E&ver=3.7.7&lat=39.895024107858724&network=WIFI&os_version=19",
                "TOKEN": "036c8e24266c9089db50899287a99e65dc3bf95f",
                "appId": "20171010",
                "timestamp": "1532357165598",
                "signature": "734ecec249f86193d6e54449ec5e8ff6",
                "forcecheck": "1",
                "Host": "app-api.chargerlink.com",
                "Connection": "Keep-Alive",
                "User-Agent": "okhttp/3.2.0",
            }
            #发起详情请求
            res = requests.get(url,headers=head)
            price = split_n(jsonpath.jsonpath(json.loads(res.text),'$..chargingFeeDesc')[0]) #价钱
            payType = jsonpath.jsonpath(json.loads(res.text),'$..payTypeDesc')[0] #支付方式
            businessTime =split_n(jsonpath.jsonpath(json.loads(res.text),'$..businessTime')[0]) #营业时间
            result = (message + [price,payType,businessTime])
            r = ','.join([str(i) for i in result])+',\n'
            c.write(r)
    
    def get_page():
        url = 'https://app-api.chargerlink.com/spot/searchSpot'
        head = {
            "device": "client=android&cityName=%E5%8C%97%E4%BA%AC%E5%B8%82&cityCode=110106&lng=116.32154281224254&device_id=8A261C9D60ACEBDED7CD3706C92DD68E&ver=3.7.7&lat=39.895024107858724&network=WIFI&os_version=19",
            "appId": "20171010",
            "timestamp": "1532342711477",
            "signature": "36daaa33e7b0d5d29ac9c64a2ce6c4cf",
            "forcecheck": "1",
            "Content-Type": "application/x-www-form-urlencoded",
            "Content-Length": "68",
            "Host": "app-api.chargerlink.com",
            "Connection": "Keep-Alive",
            "User-Agent": "okhttp/3.2.0"
        }
    
        data = {
            "userFilter[operateType]": 2,
            "cityCode": 110000,
            "sort": 1,
            "page": 1,
            "limit": 10,
        }
        response = requests.post(url, data=data, headers=head)
        # 获取数据
        data = response.json()
        total = (data["pager"]["total"])
        page_Size = (data["pager"]["pageSize"])
        totalPage = (data['pager']["totalPage"])
        print('当前共有{total}个充电桩,每页展示{page_Size}个,共{totalPage}页'.format(total=total,page_Size=page_Size,totalPage=totalPage))
    if __name__ == '__main__':
        get_page()
        start = int(input("亲,请输入您要获取的开始页:"))
        end = int(input("亲,请输入您要获取的结束页:"))
        for  i in range(start,end+1):
            request(i)
    

    总结:

    app里的数据比web端更容易抓取,反爬虫也没拿么强,大部分也都是http/https协议,返回的数据类型大多数为json

    联系v:17610352720(收费)

    展开全文
  • 手机APP软件测试点详解

    千次阅读 2017-07-26 17:19:01
    功能测试:手机软件的基本功能。倒不一定完全由测试人员来完全执行,但却是所有测试中最重要的,需要测试人员做很好的测试策略和职责划分。 稳定性测试:大多数手机应用是需要保证能够稳定运行一定时间的(尤其是...
  • 2、开始对 PC 端 的charles进行配置,点击proxy(代理),找到代理设置对代理端口进行进行配置,端口号默认8888,你可以自己修改,选中 enable transparent http prxying,代表启用http代理;点击OK,完后配置。...
  • Python爬取手机APP数据(抖音)

    万次阅读 多人点赞 2019-03-07 09:50:44
    (1)、手机(安卓、ios都可以)/安卓模拟器,今天主要以安卓模拟器为主,操作过程一致。 (2)、抓包工具:Fiddel 下载地址:(https://www.telerik.com/download/fiddler ) (3)、编程工具:pycharm (4)、...
  • Python爬取手机APP上面的数据

    千次阅读 2018-12-31 15:50:47
    在我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取。今天就教大家如何爬取手机APP上面的数据。 环境配置 1、Fidder的安装和配置 下载Fidder软件地址:https://www.telerik.com/download/fiddler ...
  • 有时候我们是需要与第三方APP对接共享数据的,例如:淘宝与支付宝许多数据共享,这就产生了第三方APP调用接口共享数据,发送数据与接收数据。 一、发送数据 1、在构建一个intent时,必须指定这个intent需要触发的...
  • 如何进行手机APP数据爬取?

    千次阅读 2018-12-16 14:44:52
    平时我们的爬虫多是针对网页的,但是随着手机APP应用数量的增多,相应的爬取需求也就越来越多,因此手机APP数据爬取对于一名爬虫工程师来说是一项必备的技能。我们知道,网页爬取的时候我经常使用F12开发者...
  • 可根据不同职位的账号登录APP来管理电话营销、客户签约、签单管理、客户回访、回款提成等功能,实现无纸化跟踪所有数据资源; 主要功能描述: 1.呼叫任务:业务管理员将电话号码导入系统,APP上领取任务后跟踪...
  • 这里主要介绍fiddler的安装与使用,本文采用的不是真的手机,而是采用的手机模拟器(这里使用的是雷电模拟器),利用真实的手机来抓包,操作方法大同小异 一.Fiddler安装 1.打开官网,官网下载地址是...
  • 我们都知道uiautomatorviewer无法获取动态页面的数据,而我发现monitor有的界面却可以,所以使用monitor,下面开始 首先用鼠标点击左边画蓝色圈的地方获取当前手机界面数据,然后鼠标点击我们需要的控件,之后右边...
  • 1.安装 fiddler4_4.6.2.0_setup.1453708442.exe软件 2.打开软件,在工具栏,找到Tools-》 Fiddler Options    3.在HTTs选项卡中选中decrypt https traffic和ignore servercertificate errors两项    4...
  • 先配置好fiddler和手机(模拟器也可以),然后用手机或者模拟器运行app,用fiddler抓包找到自己想要的内容,然后可以自定义script保存数据。(实属无奈,用python模拟不了一些东西) 电脑最好是笔记本,这样能和手机...
  • 小编介绍过很多在网页上面爬取数据的案例,很多人就问小编了,手机APP上面的数据可不可以爬取呢? 答案肯定是:当然可以啊~ 环境配置 1、Fidder的安装和配置 下载Fidder软件地址:...
  • QTouch手机组态软件APP

    千次阅读 2017-03-02 12:45:51
    QTouch-Android-App使用
  • 手机 App 测试

    2020-08-24 15:45:41
    App 安装完成后的试运行,可正常打开软件App 打开测试,是否有加载状态进度提示。 App 打开速度测试,速度是否可观。 App 页面间的切换是否流畅,逻辑是否正确 注册 用户名密码长度 注册后的提示页面 前台注册...
  • Appium抓取app数据

    千次阅读 2019-02-18 12:52:01
    主流APP数据抓取难点:     1.请求参数加密  -sign签名,使用sha1加上md5做辅助加密   2.请求body加密  -整个请求体使用DES算法做加解密   3.代理检测反爬  -抓包设置代理后,直接不再加载数据 ...
  • 软件测试—手机APP测试几个要点 1.运行 1)App安装完成后的试运行,可正常打开软件。  2)App打开测试,是否有加载状态进度提示。  3)App页面间的切换是否流畅,逻辑是否正确。  4)注册  · 同表单编辑页面  ...
  • 一、手机APP远程监控PLC的意义 随着物联网的快速发展,通过手机APP对设备系统的控制单元PLC的运行进行远程预警监控的技术已经非常成熟。基于手机APP的PLC远程监控控制系统能给设备的生产厂家和使用方都带来极高的...
  • 移动手机app开发

    千次阅读 2014-12-04 22:01:46
    App开发,是指专注于手机应用软件开发与服务。 App是application的缩写,通常专指手机上的应用软件,或称手机客户端。另外目前有很多在线app开发[1] 平台,比如应用之星平台很好用。 App开发,是指专注于手机应用...
  • 大厂的流行App都用技术手段检测手机硬件环境,标识用户的唯一性。这样的技术手段有两个目的,一个是为了更加精准的广告投放,另外一个原因是防止被薅羊毛等。其实无论是那种目的都是对个人隐私的侵犯。从Android10...
  • 一个偶然的机会,我在抖音上面发现了一个类似钢琴的APP,然后就试着用App inventor做一个可以实现音乐功能的软件,暂且可以把它叫做木琴。经过3次的修改,最终成了下面的样子。让我们来一起看看吧! 一、简单的作品...
  • python 爬取手机app的信息

    千次阅读 2020-06-28 23:11:14
    我们在爬取手机APP上面的数据的时候,都会借助Fidder来爬取。今天就教大家如何爬取手机APP上面的数据。 Python学习资料或者需要代码、视频加Python学习群:516107834 环境配置 1、Fidder的安装和配置 下载Fidder...
  • 但是如果我们想在APP端爬取数据时,我们就需要去借助抓包软件来获取我们想要的内容了。比较常用的抓包软件有:Filddler和Charles等。这两个抓包工具的原理是大致相同的,我们可以通过设置代理的方式将手机处于抓包...
  • 三、APP抓包时的手机代理设置 一、fiddler的下载和安装 参照我的另一博文 :【fiddler】fiddler的下载和安装 博文地址:https://blog.csdn.net/qq_39720249/article/details/80724652 点击前往博文 二、...
  • ESP8266之DHT11温湿度数据上传+手机App反向控制

    千次阅读 多人点赞 2020-04-26 00:14:09
    ESP8266读DHT11温湿度传感器------APP inventor实时显示原理讲解ESP8266读取DHT11温湿度推送到云端app inventor 制作app 接收实时数据关键程序讲解效果展示 只上传温湿度数据的参考:帖子 上传各种监控数据的参考:...
  • APP数据的爬取

    2019-04-09 22:22:00
    App 的爬取相比 Web 端爬取更加容易,反爬虫能力没有那么强,而且数据大多是以 JSON形式传 输的,解析更加简单。在 Web 端,我们可以通过浏览器的开发者工具监听到各个网络请求和响应过程, 在 App 端如果想要查看...
  • 手机APP测试

    千次阅读 2018-10-17 10:09:00
    一、手机APP测试类型 1.1 接口协议测试 在APP客户端开发设计时,一般服务端会提供相应的接口协议文档,接口协议文档的质量,决定了APP的开发进度。此部分的测试,应首先检测接口的完整性, 根据APP需求,检查是否...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 44,408
精华内容 17,763
关键字:

修改手机app数据的软件