通过关键词采集文章采集api(实战|*敏*感*词*教你如何使用抓包神器MitmProxy分析接口)

优采云 发布时间: 2022-04-17 13:00

  通过关键词采集文章采集api(实战|*敏*感*词*教你如何使用抓包神器MitmProxy分析接口)

  前提:在学习本文中的采集小程序数据之前,相信大家已经掌握了抓包的技巧,比如使用Mitmproxy抓包。如果看到这里还没有掌握,可以参与陈哥写的一篇关于mitmproxy的使用文章的文章(实战|教你抓包神器MitmProxy的使用方法)。

  本文目标:利用Mitmproxy抓取某小程序的景区数据,实现翻页(下一页)循环爬取。

  想法:

  1、使用Mitmproxy抓包并分析

  2、利用分析结果,编写Python代码提取数据,实现下一页采集

  mitmproxy 抓取数据包

  1.启动mitmproxy

  首先配置手机的代理IP,启动mitmproxy

  

  在终端启动 mitmweb

  mitmweb

  

  在浏览器中查看数据包(输入mitmweb会在浏览器中自动打开网页,如果没有打开则手动输入)

  http://127.0.0.1:8081/#/flows

  2.访问小程序

  打开桐城旅游小程序,点击所有景点

  

  您可以看到页面上出现的景点列表:

  

  3.在浏览器中查看数据包

  

  上图中红框是景点列表的API接口。点击响应查看返回的数据。

  

  Python解析数据包

  1.分析界面

  分析后发现这个接口没有反爬(签名验证),所以通过这个接口可以直接爬取多页数据,比如修改接口链接中的参数

  范围:

  页数 页数

  PageSize 数量

  CityId 城市

  关键字关键词

  ...

  因此,通过修改页面,就可以得到所有的景区数据。

  

  知道了接口链接,我们就可以通过python中的requests来获取数据了。

  import requests

### 获取第1页~第10页数据

for p in range(1,11):

# 页数

url = "https://wx.17u.cn/scenery/json/scenerylist.html?PosCityId=78&CityId=53&page="+str(p)+"&sorttype=0&PageSize=20&IsSurrounding=1&isSmallPro=1&isTcSmallPro=1&isEncode=0&Lon=113.87234497070312&Lat=22.90543556213379&issearchbytimenow=0&IsNeedCount=1&keyword=&IsPoi=0&status=2&CityArea=5&Grades=&IsSearchKeyWordScenery=1"

response = requests.get(url).json()

print(response)

  今天我们用另一种方法获取数据,可以用来绕过接口签名验证的反爬,比如sign或者x-sign等签名加密参数。

  2.直接解析数据包

  相信看过陈哥文章文章(实战|教你如何使用抓包神器MitmProxy)的读者都知道,mitmproxy抓包的数据包除了在浏览器中查看外,还可以写。python 代码在抓取数据包时对其进行解析。

  再来看看python能拿到数据包的数据(下图只写一些常用的)

  

  在终端调用上面的py代码,结果如下:

  

  下面开始实际编写python代码,将景区数据直接保存为txt。

  

  在chenge.py文件中,修改响应函数部分(如上图)

  启动程序:

  mitmdump.exe -s chenge.py

  

  

  api接口返回的数据包括:

  "state":"100","error":"查询成功"

  因此判断响应的数据中收录这个内容,说明收录景点列表。

  

  景点列表数据在json数据的sceneryinfo字段中。我们把字段的内容(姓名、地址、等级)取出来保存到一个txt文件中,命名为tractions.txt

  

  在小程序中向下滑动加载更多数据,同时mitmproxy继续抓包,对应的python程序会继续将数据保存到txt。

  ps:这里只是技术的使用,没有完全爬取数据,为了演示数据可以保存,暂时保存为txt,读者可以根据需要保存到数据库或excel。

  概括

  本文目标:使用Mitmproxy抓取一个旅游小程序的景区数据,实现翻页(下一页)循环爬取。还介绍了如何通过mitmproxy绕过接口签名验证的反爬,比如sign或者x-sign等签名加密参数(虽然本文没有加密参数,但是大家可以先掌握技术,也可以当你遇到它时使用它)

  原创:李云辰

0 个评论

要回复文章请先登录注册


官方客服QQ群

微信人工客服

QQ人工客服


线