1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 爬虫笔记37:android控件ListView的讲解 fiddler的安装与使用 fiddler和模拟器的配

爬虫笔记37:android控件ListView的讲解 fiddler的安装与使用 fiddler和模拟器的配

时间:2022-09-23 13:37:59

相关推荐

爬虫笔记37:android控件ListView的讲解 fiddler的安装与使用 fiddler和模拟器的配

一、android控件ListView的讲解(了解即可)

ListView的用处:可以用来开发app

环境:

1 、安装jdk :就可以使用java这门语言进行开发了。安装过程中提示jre是否要安装,不用安装:因为jdk里包含了jre。

2 、安装android studio (ec),需要专门单独学习这个开发工具的使用。(就是用这个开发app)

二、fiddler的安装与使用

1、fiddler是什么?

是一个HTTP协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,简单来说就是一个抓包工具。官网 /fiddler

​2、fiddler的优势

(1) 简单好用

(2)它有一个友好的和用户做交互的界面

(3)支持市面上大多数的浏览器

(4)支持大多数的移动设备

3、fiddler的安装

第一步 :安装fiddler

(1)选择安装路径,完成安装后,在安装路径中找到fiddler.exe建立桌面快捷方式。

(2)fiddler设置:

在桌面双击快捷键进入fiddler交互界面,依次完成设置:

第二步 :switchomega插件的安装

(1)点击网页右上角的图标按步骤完成插件的安装,

(2)安装完成后,依次点击下图红框,

进入到选项页面:

并按下图设置数据:

最后点击:应用选项(即上图中绿色处)

或者也可以参考这篇文章:/nicole-zhang/p/11955881.html

4、fiddler的页面结构

五、fiddler的使用(可以百度一个基础视频看看基本操作介绍)

capture traffic 是否启动抓包

save保存数据包

六、模拟器的配置

(1)在cmd查找ip: 输入ipconfig回车

(2)在夜神模拟器上的设置:

(2.1)点击系统设置 – 开启网络桥接模式( 第一次需要安装驱动点击确认即可)

(2.2)点击手机设置–WLAN – WiredSSID(鼠标左键长按直到出现弹框为止) – 修改网络 – 代理服务器主机名(即cmd-ipconfig查询到的ip) --端口(fiddler设置的端口8888) – 保存

七、fiddler和模拟器的配合使用(即验证上述配置是否成功)

(1)双击打开夜神模拟器(这是必须的,不然会提示错误)

(2)启动夜神模拟器,双击其界面上的浏览器:

提示有证书问题,我们来安装证书,点击继续

在浏览器输入框输入我们的ip地址(即cmd-ipconfig查询到的ip)和fiddler设置的端口号8888,回车

点击弹出字段的蓝思部分,安装diddler证书。

并自定义命名:

点击确定,

点击密码,输入zq159821…(因为这里设置了密码,以后登录模拟器的时候,也会要求输入该密码登录)

弹出这个吐司证明安装成功了。

(3)验证:

首先fiddler打开着,在模拟器的浏览器输入框,输入:,回车;

浏览器访问到盗墓笔记的网页后,在fiddler里find按钮,查找:盗墓笔记,

得到结果,即证明上述设置步骤成功了。

八、案例(爬取豆果美食app)

1 、在模拟器是安装豆果美食app

在豌豆荚官网搜索豆果美食,下载该apk文件,并直接拖进模拟器界面内,就完成了安装。

2、爬取

需求: 菜谱分类里面所有分类的数据,如下图:

第一步 页面结构分析

(1)先打开fiddler,然后在模拟器界面点击进入豆果美食,可以看到fiddler流在不停刷新。

(2)点击find按钮,输入,找到recipe行(中文意思是菜谱)并点击选中它,右边的http请求栏和http响应栏,就会跳出,我们都点击Raw按钮。

(2.1)复制http请求栏的内容,如下:

POST /recipe/flatcatalogs HTTP/1.1client: 4version: 6922.2device: MI 6sdk: 19,4.4.2imei: 863254010385929channel: zhuzhanmac: 38:59:F9:B4:F8:D5resolution: 1440*900dpi: 2.0android-id: 3859f9b4f8d53198pseudo-id: 9b4f8d531983859fbrand: Xiaomiscale: 2.0timezone: 28800language: zhcns: 0carrier: CMCCimsi: 460073859249180user-agent: Mozilla/5.0 (Linux; Android 4.4.2; MI 6 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36reach: 1newbie: 0lon: 104.526038lat: 25.835099cid: 50Content-Type: application/x-www-form-urlencoded; charset=utf-8Accept-Encoding: gzip, deflateConnection: Keep-AliveCookie: duid=69083915Host: Content-Length: 68client=4&_session=1633786016309863254010385929&v=1503650468&_vs=2305

其中,第一行POST中就体现了我们的目标url,即:

/recipe/flatcatalogs

而最后一行就是我们向目标url发起请求时要携带数据data,即:

client=4&_session=1633786016309863254010385929&v=1503650468&_vs=2305

(注意,要把它改成字典格式)

剩下的中间部分,就是headers,当然了,其中有些是不用一定要的数据,在具体的实践中,我们可以一个个去试,哪些是可以不要的,比如:cookie可以先注释掉,不行再开。

(2.2)复制http响应栏中的内容,如下:

{"state":"success","result":{"nv":"1633780900","cs":[{"name":"\u70ed\u95e8","id":"1","ju":"recipes:\/\/\/search?key=\u70ed\u95e8&_vs=400","cs":[{"name":"\u5bb6\u5e38\u83dc","id":"18","ju":"recipes:\/\/\/search?key=\u5bb6\u5e38\u83dc&_vs=400","cs":[{"name":"\u7ea2\u70e7\u8089","id":"7891","ju":"recipes:\/\/\/search?key=\u7ea2\u70e7\u8089&_vs=400","cs":[],"image_url":""},{"name":"\u53ef\u4e50\u9e21\u7fc5","id":"7892","ju":"recipes:\/\/\/search?key=\u53ef\u4e50\u9e21\u7fc5&_vs=400","cs":[],"image_url":""},{"name":"\u7cd6\u918b\u6392\u9aa8","id":"7893","ju":"recipes:\/\/\/search?key=\u7cd6\u918b\u6392\u9aa8&_vs=400","cs":[],"image_url":""},{"name":"\u9c7c\u9999\u8089\u4e1d","id":"7894","ju":"recipes:\/\/\/search?key=\u9c7c\u9999\u8089\u4e1d&_vs=400","cs":[],"image_url":""},{"name":"\u7ea2\u70e7\u6392\u9aa8","id":"7895","ju":"recipes:\/\/\/search?key=\u7ea2\u70e7\u6392\u9aa8&_vs=400","cs":[],"image_url":""},{"name":"\u5bab\u4fdd\u9e21\u4e01","id":"7896","ju":"recipes:\/\/\/search?key=\u5bab\u4fdd\u9e21\u4e01&_vs=400","cs":[],"image_url":""},{"name":"\u897f\u7ea2\u67ff\u7092\u9e21\u86cb","id":"7897","ju":"recipes:\/\/\/search?key=\u897f\u7ea2\u67ff\u7092\u9e21\u86cb&_vs=400","cs":[],"image_url":""},{"name":"\u6e05\u84b8\u9c88\u9c7c","id":"7898","ju":"recipes:\/\/\/search?key=\u6e05\u84b8\u9c88\u9c7c&_vs=400","cs":[],"image_url":""},{"name":"\u9178\u83dc\u9c7c","id":"7899","ju":"recipes:\/\/\/search?key=\u9178\u83dc\u9c7c&_vs=400","cs":[],"image_url":""}],"image_url":"https:\/\/\/upload\/article\/d\/3\/d\/d3dde5f60ee0ab38430ef180fa7203dd.jpg"},{"name":"\u4e0b\u996d\u83dc","id":"660","ju":"recipes:\/\/\/search?key=\u4e0b\u996d\u83dc&_vs=400","cs":[{"name":"\u6cb9\u7116\u5927\u867e","id":"7900","ju":"recipes:\/\/\/search?key=\u6cb9\u7116\u5927\u867e&_vs=400","cs":[],"image_url":""},{"name":"\u9ebb\u5a46\u8c46\u8150","id":"7901","

我们可以将它在网站中查看,具体是什么内容:

我们随意选取name字段的值,通过下面代码,转化成中文:

import urllib.parsea='\u70ed\u95e8'result=urllib.parse.unquote(a)print(result)

或者,我们直接点击模拟器http响应栏中的json按钮,如下:

由此,这里就是我们要爬取的数据。

第二步 实现步骤

import requestsimport json# 发请求获取响应结果def handel_request(url,data):header = {"client": "4","version": "6922.2","device": "MI 6","sdk": "19,4.4.2","imei": "863254010448503","channel": "qqkp",# "mac": "44:85:00:5E:5B:28","resolution": "720*1280","dpi": "1.5",# "android-id": "4485005e5b281516",# "pseudo-id": "05e5b28151644850","brand": "Xiaomi","scale": "1.5","timezone": "28800","language": "zh","cns": "3","carrier": "CMCC",# "imsi": "460074485009491","user-agent": "Mozilla/5.0 (Linux; Android 4.4.2; MI 6 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/30.0.0.0 Mobile Safari/537.36","reach": "1","newbie": "1","lon": "116.568176","lat": "26.997867","cid": "361000","Content-Type": "application/x-www-form-urlencoded; charset=utf-8","Accept-Encoding": "gzip, deflate","Connection": "Keep-Alive",# "Cookie": "duid=57158696","Host": "",# "Content-Length": "68",}response = requests.get(url=url,headers=header,data=data)return response# 解析数据def handle_index():# 目标urlurl = '/recipe/flatcatalogs'data = {"client": "4",# "_session": "1537295931652863254010448503",# "v": "1503650468","_vs": "2305",}response = handel_request(url=url,data=data)index_response_dict = json.loads(response.text)for index_item in index_response_dict['result']['cs']:for index_item_1 in index_item['cs']:for item in index_item_1['cs']:print(item)if __name__ == '__main__':handle_index()

运行结果:(可以直接运行py文件,不用打开fiddler和模拟器,它们只是分析工具)

补充:爬取全民小视频

import requestsimport jsondef handel_request(url, data):header = {"Referer": "/","User-Agent": "Mozilla/5.0 (Linux; Android 5.1.1; MI 6 Build/NMF26X) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 bdminivideo/3.2.0.10 arsdk/5030 (Baidu; P1 5.1.1)","Host": "",# 'Cookie': 'BAIDUID=35116BA5B916871829C37B1C4CFDF85D:FG=1; BAIDUZID=HIBz0cAVtiQTSJXkx3W19OACU9gPP9ZM2dHuCmGVx-BFhHUBTr2PLvEzV-aACilkuQ1g2LpuJnHD4PZmiCO9pFcO1vfYMO35P1ZsHbl8hZLw; BAIDUCUID=luvI80u-2i0ki2af_aHa8_uU28gqOS8K_u-1u08rva8ykS8xlNWpRyxPA'}response = requests.post(url, headers=header, data=data)return responsedef handle_index():url = '/appui/video/feed?log=vhk&tn=1021212e&ctn=1021212e&imei=0&od=&cuid=F551E670DB1D64B2047009C5569DFF2E|VC3EYOTK5&bdboxcuid=null&os=android&osbranch=a0&ua=900_1440_320&ut=MI%206%20_5.1.1_22_Xiaomi&uh=Xiaomi%20,qcom,msm8998,1&apiv=1.0.0.10&appv=3020010&version=3.2.0.10&life=1624977343&clife=1624977343&hid=664A787BC87F85BC5D09FB2E535CF8C5&network=1&network_state=20&sids=10012_3-10033_3-10034_4-15014_2-15094_1-3258_2&teenager=0&oaid=&activity_ext=&c3_aid=A00-5KIB3QK746NCOXYCHF6GPEXXJF6MNJDE-VQWTG7CI&push_source=no_push&yyuser=1&api_name=feed&sign=f22d45e5b28873d3431b610e3c4fe85c'data = {'subTab': 'faxian','subTag': 'immersion','conf': '%7B%22autoplay%22%3A%220%22%7D','location': '%7B%22prov%22%3A%22%E5%AE%89%E5%BE%BD%E7%9C%81%22%2C%22city%22%3A%22%E5%AE%89%E5%BA%86%E5%B8%82%22%2C%22county%22%3A%22%E5%AE%BF%E6%9D%BE%E5%8E%BF%22%2C%22city-code%22%3A%22130%22%2C%22street%22%3A%22%22%2C%22latitude%22%3A30.004295%2C%22longitude%22%3A116.574989%7D','refresh_type': 'init','is_close_individual': 0,'param_ext': '%7B%22entrance_vid%22%3A%220%22%2C%22tabfrom%22%3A%22detail%22%7D','visit_id': '1625033654','refresh_state': 6,'refresh_index': 1,'confirmed_interes': '%7B%22confirmed_list%22%3A%5B%5D%2C%22threshold%22%3A0%2C%22is_triggered_refresh%22%3A0%7D',}response = handel_request(url=url, data=data)index_response_dict = json.loads(response.text)lst = []for index_item in index_response_dict['feed']['data']['list']:for index_item_1 in index_item['content']['videoInfo']['multiClarity']:video_urls = index_item_1['videoPlayUrl']lst.append(video_urls)# print(lst)return lstdef write_data():name = 1lst = handle_index()# print(lst)for url in lst:video_res = requests.get(url)video_result = video_res.contentwith open('video/%s.mp4'%name,'wb') as f:f.write(video_result)name += 1write_data()

结果:

爬虫笔记37:android控件ListView的讲解 fiddler的安装与使用 fiddler和模拟器的配合使用 案例(爬取豆果美食app)

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。