使用fiddler抓包,fiddlerapp抓包
在上一篇文章中,我们通过理论阐述和三个爬虫实例,构建了一个完整的爬虫知识框架,而这三个实例有一个特点就是都是网页爬虫。本文利用Fildder软件和Python实现抓取手机app的爬虫程序,使app的数据隐形!
目录
一、《提琴手》简介
1.1简介。游手好闲的人
2.FiddlerPC侧配置
3.Fiddler手机配置
二、今日头条app抢包。
1.源代码获取
2.json提取
3.信息存储
4.自动履带式建筑
一、Fiddler介绍1.Fiddler简介Fiddler是一款http协议调试代理工具。它可以记录和检查你的电脑与互联网之间的所有http通讯,设置断点,查看进出Fiddler的所有数据(指cookies、HTML、JS、CSS等文件)。Fiddler比其他网络调试器更简单,因为它不仅公开了http通信,还提供了用户友好的格式。
一般来说,提琴手的工作原理相当于一个代理。配置好之后,我们从手机App发出的请求会被Fiddler发送,服务器返回的信息也会被Fiddler中转发送一次。所以我们可以通过Fiddler看到App发送给服务器的请求和服务器的响应。
2.FiddlerPC端配置我们安装了Fiddler之后,首先在菜单ToolOptionsHttps下的这两个地方选中了它。
然后在Connections选项卡下选中Allow remote computers to connect,,以允许Fiddler接受来自其他设备的请求。
同时记住这里的端口号,默认是8888,到时候需要在手机上填写。配置完成并保存后,必须关闭Fiddler并再次打开。
3.Fiddler手机端配置首先按win+R键,输入cmd打开,输入命令ipconfig检查IP地址:
打开手机的无线连接,选择要连接的热点。长按修改网络,在代理中填写我们电脑的IP地址和Fiddler代理的端口。如下图所示:
保存后,在手机默认浏览器(即手机自带的浏览器)中打开上面找到的ip地址http://192.168.0.106:8888(视自身情况而定)。
之后点击上面的蓝色链接安装到手机上,就可以进一步使用电脑代理进行监控了。
二、今日头条app抓包实战1.源代码获取首先我们在上述配置环境下打开手机今日头条app,搜索“疫情”:
之后在Fildder中可以观察到很多弹出的条目。通过检查和实证筛选,发现search的网址就是我们要找的。双击这个URL可以进一步得到requests url和client(也就是我们的客户端请求头)。
稍微梳理一下,就可以得到当前请求的代码:
import requestsimport time from bs4 import beautiful soup import pandas as PD import JSON import random from requests . packages . urllib 3 . exceptions import Inse curerequestwarning requests . packages . urllib 3 . disable _ warnings(insurerequestwarning)head={ Accept :*/* Accept-Encoding : gzip,deflate , Accept-Language: zh-CN,en-US;q=0.8 ,用户代理: Mozilla/5.0(Linux;安卓7.0;华为CAZ-AL10 Build/华为caz-AL10;wv) AppleWebKit/537.36 (KHTML,像壁虎一样)版本/4.0 Chrome/56 . 0 . 2924 . 87 Mobile Safari/537.36 JsSdk/2 news article/7 . 0 . 1 NetType/wifi , X-Requested-With : com . ss . Android . article . news } URL= https://is-LQ . snss dk . com/search/?关键字=. req=requests.get (URL=URL,headers=head,verify=false)。JSON () 2.json提取接下来,我们的任务是分析响应的json文件,通过req.keys()命令获取关键信息。注意搜索,发现键为scripts的值包含了文章的所有信息,而值是一个Javascript代码串,所以通过美丽库解析:
soup=beautiful soup(req[ scripts ], lxml )contents=soup . find _ all( script ,attrs={ type : application/JSON })RES=[]对于contents中的内容:js=JSON . loads(content . contents[0])abstract=js[ abstract ]article _ URL=js[ article _ URL ]comment _ count=js[ comment _ count ]raw _ title=js[ display ][强调][title] title=rawreplace(/em , )source=js[display][强调][source] data={ title:title, article_url:article_url, abstract:abstract,Comment _ count: comment _ count, source :source } RES . append(data) 3.信息存储提取相关文章信息后可以选择信息存储方式。我们通常使用json、csv、xlsx等格式来存储它:
def write 2 excel(result):JSON _ result=JSON . dumps(result)with open( article . JSON , w )as f:f . write(JSON _ result)with open( article . JSON , r )as f:data=f . read()data=JSON . loads(data)df=PD。DataFrame(data,columns=[title , article_url , abstract , comment_count ,Source ])df . to _ excel( article . xlsx ,index=false)4.自动化爬虫构建最后一步是找到翻页规则,完成自动爬虫构建。我们依次手动向下滑动搜索结果页面,发现搜索的网址继续弹出。观察下图:
看这些网址,发现只有参数offset不一样,而且是10的倍数,所以我们的翻页周期代码是:
def get_pages(keyword,page _ n):RES _ n=[]for page _ id in range(page _ n):page=get _ one _ page(keyword=keyword,Offset=str(page _ id * 10))RES _ n . extend(page)time . sleep(random . randint(1,10)) return res _ n到目前为止,手机端app爬虫程序通过使用Fildder软件和python程序已经很容易地构建好了。总结一下,这个爬虫:首先我们设置Fildder软件安装,同时配置PC端和手机端代理,然后在手机上操作反馈给电脑Fildder查看结果;然后根据Fildder的抓包结果判断请求的具体参数和数据格式,再对响应的数据做进一步的加工和存储。结果如下:
完整爬虫代码可在微信官方账号回复“今日头条”获取。也就是说,之前的文章是在单机后台抓取的,抓取效率有限,定制成本高。下面将进一步解释和实践分布式爬虫框架。上一篇文章涉及的基础知识,请参考以下链接:
Python网络爬虫数据收集实践:基础知识
Python网络爬虫数据收集实践:请求和Re库
Python网络爬虫数据采集实践:豆瓣电影top250抓取
Python网络爬虫数据收集实践:网页分析库
Python爬虫数据收集实践:同花顺动态web爬行
Python网络爬虫数据采集实践:硒库抓取JD.COM商品
学数,涉及数据分析与挖掘、数据结构与算法、大数据组件与机器学习等。关注并回复“学习资料”。惊喜~
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。