用fiddler获取微信评论

要获取微信上公众号文章的评论,直接在PC上打开相应网页会发现并没有评论内容,这点和微博移动端不同。所以我只能直接截获手机上的包。这里我使用了Fiddler软件。Fiddler的安装和运行并不复杂,有点麻烦的是配置Fiddler的客户端并让手机安装Fiddler的证书。

1、Fiddler客户端的配置:

Tools->Options...->Connections:

 

1.Fiddler listens on port是手机连接fiddler时的代理端口号,默认8888即可

2.Allow remote computers to connect是允许远程发送请求,需要勾上,会有warning:

意思就是会允许远程客户端的包通过电脑,然后Fiddler必须重启才能生效,重启的过程可能会遇到防火墙要求Remote Access许可。

Tools->Fiddler Options->HTTPS:

勾上Decrypt HTTPS traffic,会抓到手机的https请求,如果想抓到https请求还需要在手机安装证书

 

2、手机端的配置:

前提:必须确保安装fiddler的电脑和手机在同一个wifi环境下,也就是在同一局域网内。我是通过自己电脑上的共享wifi,这样也可以实现。一般的话只要笔记本和手机在一个路由器下就行。如果台式机的话可能需要一根网线。

步骤:

1、查看电脑ip,只要把鼠标放fiddler右上角的Online处,就可以看到:

此时在手机上查看所连接wifi的ip地址,我这里是:192.168.23.2

可见本机和手机在192.168.23.xxx的局域网中。

 

2、打开手机浏览器,输入网址:http://xxx.xxx.xxx.xxx:8888,然后前往,可以进入Fiddler的证书下载页面。

如果进不去可能是地址选错了,比如我这里应该是http://192.168.23.1:8888/而不是其他的3个;

也可能是Fiddler没有重启;

 

3、点击最下端的FiddlerRoot certificate,然后为证书命名后就安装成功了。

如果觉得不安全可以在工作完成后,从手机受信任的凭据里找到DO_NOT_TRUST_FiddlerRoot这个证书并删除。

4、最后在手机的wifi配置里手动设置代理,代理服务器主机名为主机ip,我的是192.168.23.1,代理端口为8888。

这样就可以在Fiddler上抓取手机的包了。

 

 

在微信上截获的公众号的评论及其内容,一般微信评论ip都是/mp/appmsg_comment?...如图左侧所示。点击右侧上方Inspector(有个?) -> 下方json 查看解码结果:

接下来就可以保存JSON进行分析,我尝试用Cookie根据网址爬取数据,但我header没设置好,并没有成功爬到数据,可能需要模仿手机的header发送request请求。(要学习的还有很多哇)

右键选中的那一行按如下操作保存Response Body:

得到的应该是一个json文件,可以用记事本打开(如果是乱码,重新保存一次,或者保存Entire Response...然后删掉文件头保留json本体,去掉头就可以吃):

除此之外还能获得该文章的阅读和点赞数:

附,从json中获取评论的python2代码,输出是一个excel表格weixin.csv:

#python2
import json
import csv
import os
import codecs
import sys    
import time
reload(sys)    
sys.setdefaultencoding('utf8')

#the output of comments is in weixin.csv
path = os.getcwd()+"/weixin.csv"
csvfile = open(path, 'w')
csvfile.write(codecs.BOM_UTF8)
writer = csv.writer(csvfile)

#change the name of 32_.json to your filename
file = open(os.getcwd()+"/31_.json", 'r')
jsondata = json.load(file)
datas = jsondata.get('elected_comment')

for data in datas:
    created_at = data.get("create_time")
    created_at = time.strftime("%Y-%m-%d %H:%M:%S", time.localtime(created_at))
    like_counts = data.get("like_num")
    username = data.get("nick_name")
    comment = data.get("content").decode('utf-8')
    #print comment
    #print json.dumps(comment, encoding="UTF-8", ensure_ascii=False)
    writer.writerow((username,created_at,json.dumps(comment, encoding="UTF-8", ensure_ascii=False),like_counts))

Reference:

[1]http://blog.csdn.net/wnma3mz/article/details/78570580 记一次微信公众号爬虫的经历

[2]https://www.cnblogs.com/meitian/p/4997310.html 使用Fiddler对手机上的程序进行抓包

etc.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值