前言

到这里,python 爬虫部分的复习也就告一段落了,当然,除了 scrapy,老实说,对于平常爬取几千条这种小打小闹的爬虫,并没有去深入研究 scrapy 的必要(当然,了解还是要了解一下的)。

之前学习爬虫,因为需求的原因,只学习了网页爬虫。趁着寒假有空,再来看一看 app 爬虫是啥样的吧。

mitmproxy

官网

github

安装

s1. 安装本体

brew install mitmproxy

s2. 安装 python 包

pip install mitproxy

s3. 安装证书

  1. shell 中输入 mitmdump

  2. 将/Users/{用户名}/.matplotlib/目录下的 mitmproxy-ca-cert.pem 发送到移动端(隔空投送即可)

  3. 设置 中信任证书

ps.使用 shift+cmd+. 可以查看隐藏文件

s4. 连接代理

  1. 使用 ifconfig 查找本机的 ip 地址

  2. 找到 inet,如下图所示,IP 地址为 192.168.3.6

    image-20200118233542424

​在设置->无线局域网->无线局域网配置->配置代理

ps. mitmproxy 的端口是 8080

配置部分就到这里,然后测试一下配置是否正确。

  1. 在命令行中输入 mitmproxy , 进入 mitmproxy 的数据流界面。

  2. 打开任意的 app,然后发现数据流界面开始跳出很多的响应字段,ok,配置正确。

    image-20200118234716015

上图为结果展示,可以点击字段进入查看详细的信息

image-20200118235147625

ps. 这里列一下流界面的快捷键

?:帮助
q:返回 或退出
z:清屏
j:上一个或向上滑动
k:下一个或向下滑动
回车键:查看选中的请求
h:查看 请求内容 下一个
l:查看请求内容 上一个
tab:查看请求内容 下一个

至此,所有的准备工作就都已经完成了,接下来选择一下实验目标吧

mission start

首先当然是选择一个目标 app,这里我选择的是 超星学习通 。这个寒假学校布置了一个读书笔记的任务,叫做 21 天习惯养成,满满的 形式主义 的感觉,所以,我就把所有的数据都用爬虫爬下来,来分析一下这个 21 天习惯养成的可行性吧。

mitmproxy 只能抓包,但是抓完之后就罢工了。所以这里使用 mitmdump,它可以和 python 结合使用,对返回的数据进行一个处理。

def response(flow):
    url = 'https://groupyd.chaoxing.com/apis/topic/getTopicListWithPoff?'

    if flow.request.url.startswith(url):
        data_list = json.loads(flow.response.text)['data']['list']
        print(data_list)
        json_str = json.dumps(data_list,ensure_ascii=False)
        with open('data.json','a+') as f:
            f.write(json_str)

将上述的代码写入 mitmuse1.py 文件中,然后运行

mitmdump -s mitmuse1.py

这里我先把所有的 json 数据写入到一个文件里面,然后再对数据进行统一的分析,这样的好处是占用内存小。

分析

image-20200119093308992

截屏2020-01-19上午10.05.45

排名第一的竟然是 《活着》 !?因为读过这本书,所以我觉得这个结果过于魔幻现实了。

余华的这本书绝对不是《水浒传》那种老少咸宜的读物,甚至于高中时期我们将他的书戏称为“黑暗圣经”,两倍于第二名《红楼梦》的结果让我有点无法接受(老实说红楼梦排第二也挺魔幻的,但是考虑到院里女生居多就不讨论了…)

排名第三的中规中矩,《平凡的世界》 我也读过,这是如中当年的入学推荐读物(满满的回忆)

第四名。。。???????????????

于是我开始打发假期的无聊时光。

进行文本进行对比筛查,经过一系列的折腾之后,得到如下的结果。

image-20200119094246243

这里只打印出了差异值 <=5 的文本,可以看到,差异值越低,文本的相似度越高。

最终可以得出结论,仅仅是在我院的内部的关于活着的 237 篇笔记,就出现了很多的雷同。所以,这次活动的出发点无疑是好的,但是可笑的地方在于, 主体不明,执行不力 ,到头来只是平白增加了很多同学的负担罢了。

要么本着自愿的原则,鼓励报名,宽松监管,自觉养成。

但是既然选择了强制执行,就有必要搭配强有力的监管机制,不然像现在这样,我有足够的理由相信,这次的活动并非是为了“同学们”,而不过是一次常见的劳民伤财的”面子工程”罢了。

后记

本篇文章是使用 typora 完成的,搭配 ipic 的自动上传图片的功能,确实编辑时的体验比印象笔记好很多。

由于自动化卡在了苹果开发者证书上面(是不是应该配一台安卓机了?),所以本轮的爬虫复习与学习理论上只剩下了 scrapy,接下来几天大概就是佛系生活,等过完年在考虑密码学的事情 8 :dizzy_face:

回家之后,走亲访友,陪老爸看病,经过几天的忙碌,把零零散散的琐事都清了一遍,闲下来之后,主要就干了三件事,一个是涛哥的 XMiner 项目,一个是爬虫,还有就是。。。补电视剧(笑,密码学等爬虫搞完之后再说吧。

做菜方面,也没什么太大的进步,感觉接近一年没有进厨房,很多的手艺都生疏了啊。

久违的和老哥们开黑玩游戏,这才是俺想要的快乐寒假(虽然一直在输 o(╥﹏╥)o