admin 管理员组

文章数量: 887007

本小白的第一篇技术分享博客,啊哈哈!!(石乐志)

真好,直接切入正题吧,目前来讲微信公众号文章主要有以下三种渠道可以获取,对应有三种抓取方式,如下~~

  1. 搜狗微信点击跳入,这算是对咱reptiler最友好的方式了(用requests+xpath就可以很轻松抓到),但是但是,点进去结果没有阅读量评论点赞等等关键要素,那还抓个屁@_@!!~~而且在不登录的情况下还是只能抓10篇而已嘛。我弱弱的试着抓了下,发现数据还是很好拿到的,不过没有代理的童鞋就是要费点心思了,因为你会遇到万恶的验证码,啊哈哈!
  2. 微信公众平台点击跳入,进入平台需要注册绑定微信,据说微信公众平台也有一种很鸡贼的方式获取到文章,就是编辑页面多了个转载功能,可以直接搜索公众号文章,从接口就可以获取到文章内容,不过貌似不能按公众号搜索,如下:

    我就呵呵了,TX一点都不大方嘛,而且好像没阅读量这些数据,没什么价值也就没怎么进去看了。随便扔个链接有兴趣可以进去看看。https://blog.csdn/d1240673769/article/details/75907152
  3. Fiddler抓包微信客户端(重点要来了),是的这是目前为止最符合我需求的渠道了,貌似也只有微信客户端有点赞,阅读量了。
    另起一行,首先呢你得下载个Fiddler,以及配置Fiddler,下载链接:https://www.telerik/download/fiddler
    安装好后点击菜单栏的Tool->Options设置一波,差不多下面的样子吧:


    然后好像还需要装一个该死的证书。微信的接口都是https,不装是抓不到数据的,具体方法我忘了,有时间想起来了再贴进去,应该不难。配好后你会看到很多奇奇怪怪的请求,是的fiddler已经在工作了,可是链接太多了看的眼花缭乱的,这时候我们需要过滤掉一些没用的信息,像这样:

    Ok,这一步终于结束了。
    下来就是和微信有关的东西了,首先手机电脑端微信都可以抓,方便起见,用win10微信客户端为例。打开微信扫码登录,麻溜的进入公众号随便点开一片文章,此时你的fiddler应该是打开的状态,那么你会看到一些mp.weixin.qq的https请求,如下所示:

    那么恭喜你,你成功抓到了数据,否则那就什么都没有。
    随意点开一个请求,如下:

    这特么不就是文章内容么,对应网页版的也是一样的,可以可以
    再随意点开一个请求,如下:

    等等右下角的红框内容怎么看起来这么带感呢,稍微有点常识的人应该都知道那是干嘛的,没错就是点赞数和阅读量,右上角对应的就是请求头了,哈哈哈得来全不费功夫。不过这特喵的请求url带的参数够多的:https://mp.weixin.qq/mp/getappmsgext?f=json&mock=&uin=此处隐去敏感参数&key=f650c66250eec4fa16c59b57c5613a692ca9a75e81981e42292f2aafa4f2319a27d5c1010ecf9476ad76b8344d04bd178959a104065b590f7c2db4db499e543b17bbf858f8cbfe47380c9dbf47379d96&pass_ticket=xfXgqWYeNMqkpNmJpDKnvOlwbhiK1awDIt8SE6zeEg4LaVRqI1EfXw5duVmaMTXh&wxtoken=777&devicetype=Windows%26nbsp%3B10&clientversion=62060426&appmsg_token=983_%2BFff6DaA8iICxlfUzTIONkPmo8q7rNq4a95vDjisWwnLS3GeykhsOV77bwcUnQiOj7atgEfCjOmxL6Us&x5=0&f=json
    后面还有一堆就不贴了,不过也别着急,这么长的参数肯定一大堆用不着的。果然在我多次尝试下找到了点赞阅读量接口的必要参数:

    uni:用户唯一识别码,固定值
    key:随机秘钥(10-30分钟的样子,好像不定长)
    __biz :公众号唯一识别码,固定值
    mid:可能是发布日期,固定值
    sn:文章识别码,固定值
    下面的参数就是固定的了,但是也是需要带的
    综上所述,唯一变动的就是key了,这个key很头疼,网页版js找遍了没找到有关联的值,应该是微信客户端内置的加密方式,目前我还没找到破解的方法。好在这个key有相对较长的时间,抓小量数据足够了
    那么我们就来构造这个请求,发现确实可以获取到json格式的数据,那就好办了。示例:
{
    "advertisement_info": [],
    "appmsgstat": {
        "show": true,
        "is_login": true,
        "liked": false,
        "read_num": 2853,
        "like_num": 14,
        "ret": 0,
        "real_read_num": 0
    },
    "reward_head_imgs": [],
    "base_resp": {
        "wxtoken": 777
    }
}

接着只需要整合到代码里去就行了,代码下次更新放出来。到这里基本分析结束,也下班啦!

本文标签: 如何用 阅读数 公众 文章 点赞数