fiddler chrome_Python网络爬虫实战之Fiddler抓包今日头条app!附代码

​ 前文中我们通过理论讲解和三个爬虫实例构建了一个比较完整的爬虫知识框架,而这三个实例有一个特点就是都是网页端爬虫,本文借助Fildder软件和Python实现对手机app进行抓包的爬虫程序,使得app的数据也无所遁形!

一、Fiddler介绍

1.Fiddler简介

Fiddler是一个http协议调试代理工具,它能够记录并检查所有你的电脑和互联网之间的http通讯,设置断点,查看所有的“进出”Fiddler的数据(指cookie,html,js,css等文件)。Fiddler 要比其他的网络调试器要更加简单,因为它不仅仅暴露http通讯还提供了一个用户友好的格式。

通俗来讲,Fiddler 的工作原理相当于一个代理,配置好以后,我们从手机 App 发送的请求会由 Fiddler 发送出去,服务器返回的信息也会由 Fiddler 中转一次。所以通过 Fiddler 我们就可以看到 App 发给服务器的请求以及服务器的响应了。

e3f40208f4de172e272fe814a5d0c94e.png

2.FiddlerPC端配置

我们安装好 Fiddler 后,首先在菜单 Tool>Options>Https 下面的这两个地方选上。

3ff52edfe79eb6bc6a132e58fc43ac73.png

然后在 Connections 标签页下面勾选上 Allow remote computers to connect,允许 Fiddler 接受其他设备的请求。

67752c9fb17cfa2b663c1eb59db8d468.png

同时要记住这里的端口号,默认是 8888,到时候需要在手机端填。配置完毕,保存后,一定关掉 Fiddler 重新打开。

3.Fiddler手机端配置

首先按win+R键输入cmd打开,输入命令ipconfig查看IP地址:

89948a3f5a0db81a9a11be6a9d895ed0.png

打开手机无线连接,选择要连接的热点。长按选择修改网络,在代理中填上我们电脑的 IP 地址和 Fiddler 代理的端口。如下图所示:

15004f237085fb1b48d69f8639658110.png
09d00234d7fd71c4005469c37070bcf4.png

保存后,在手机默认浏览器(即手机自带浏览器)中打开上文查询到的ip地址http://192.168.0.106:8888(视自身情况而定)。

f82bb57b00cbea14672b68b176511ca6.png

之后点击上述蓝色链接并安装到手机就可以进一步的使用电脑代理监控了。

d047f2951e69a8ebacd86a39b9edb899.png

二、今日头条app抓包实战

1.源代码获取

首先我们在上述配置环境下打开手机今日头条app,并搜索“疫情”

a82a81a8bc1228ced0b7bf179f37dda3.png

之后可在Fildder中观察到弹出诸多条目,通过查看和经验筛选发现带有search的url即为我们所求,双击这条URL,可以进一步获取到requests urlclient(即我们的客户端请求头)

36e0deafe1eb567dd88f659d029bedc2.png

略微梳理一下就可以得到当前请求的代码:

import requestsimport timefrom bs4 import BeautifulSoupimport pandas as pdimport jsonimport randomfrom requests.packages.urllib3.exceptions import InsecureRequestWarningrequests.packages.urllib3.disable_warnings(InsecureRequestWarning)head = {    'Accept': '*/*',    'Accept-Encoding': 'gzip,deflate',    'Accept-Language': 'zh-CN,en-US;q=0.8',    'User-Agent': 'Mozilla/5.0 (Linux; Android 7.0; HUAWEI CAZ-AL10 Build/HUAWEICAZ-AL10; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/56.0.2924.87 Mobile Safari/537.36 JsSdk/2 NewsArticle/7.0.1 NetType/wifi',    'X-Requested-With': 'com.ss.android.article.news'}url = "https://is-lq.snssdk.com/search/?keyword=..."req = requests.get(url=url, headers=head,verify=False).json()

2.json提取

接下来我们的任务就在于分析响应的json文件,通过req.keys()命令获取键信息,注意查找,发现在key为scripts的value中包含文章的所有信息,而值为Javascript代码字符串,因此通过Beautiful库进行解析:

soup = BeautifulSoup(req['scripts'],"lxml")contents = soup.find_all('script',attrs={"type":"application/json"})res = []for content in contents:    js = json.loads(content.contents[0])    abstract = js['abstract']    article_url = js['article_url']    comment_count = js['comment_count']    raw_title = js['display']['emphasized']['title']    title = raw_title.replace("","").replace("","")    source = js['display']['emphasized']['source']    data = {        'title':title,        'article_url':article_url,        'abstract':abstract,        'comment_count':comment_count,        'source':source    }    res.append(data)

3.信息存储

在相关文章信息提取完之后即可选择信息存储方式,我们通常采用json、csv、xlsx等格式进行存储:

def write2excel(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.自动化爬虫构建

最后一步,也就是找到翻页规律,完成自动化爬虫构建。我们在搜索出的结果页依次用手向下滑动,发现继续弹出search的url,观察下图:

cfc7ac53832e3ee651290f48b7280e8e.png

观察这些url,发现仅仅在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

三、爬虫总结

至此利用Fildder软件结合python程序很容易的构建了手机端app爬虫程序,再通过此爬虫总结一下:首先我们先安装好Fildder软件,并且同时配置好PC端和手机端代理,之后通过在手机上操作反馈到电脑端Fildder查看结果;进而通过Fildder抓包结果判断请求具体参数和数据格式,之后对响应的数据进行进一步的加工存储就ok了。结果如下:

f659aec02ad2d65863b56e1c9e9fe032.png

爬虫完整代码可以在本头条号私信获得。本文即前文都是在单机背景下进行爬虫,爬虫效率有限且定制化成本较高,下文将进一步对分布式爬虫框架进行讲解和实战,前文涉及的基础知识可参考下面链接:

爬虫所要了解的基础知识,这一篇就够了!Python网络爬虫实战系列

一文带你深入了解并学会Python爬虫库!从此数据不用愁

Python爬虫有多简单?一文带你实战豆瓣电影TOP250数据爬取!

一文弄清Python网络爬虫解析库!内含多个实例讲解

谁说同花顺很难爬?一文带你学会用Python爬取财经动态网页!

谁说京东商品很难爬?一文教你用Python构建电商网站爬虫!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值