V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
macken
V2EX  ›  程序员

如何抓取微信公共帐号发布的文章的阅读数和赞数

  •  4
     
  •   macken · 2014-10-10 16:11:03 +08:00 · 36665 次点击
    这是一个创建于 3458 天前的主题,其中的信息可能已经有所发展或是发生改变。
    RT 求指教
    第 1 条附言  ·  2014-12-24 22:17:03 +08:00
    107 条回复    2018-07-04 11:27:22 +08:00
    1  2  
    withrock
        1
    withrock  
       2014-10-10 16:47:32 +08:00
    withrock
        2
    withrock  
       2014-10-10 16:48:17 +08:00
    我也很想知道,而且我还加了这个作者聊天,但是估计是不会开源的,我想我还是再琢磨琢磨吧。
    macken
        3
    macken  
    OP
       2014-10-10 16:48:55 +08:00
    @withrock 这只能看到文章,无法拿到文章的阅读数和赞数
    macken
        4
    macken  
    OP
       2014-10-10 16:51:32 +08:00
    @withrock 抓文章好弄了,可以直接抓搜狗的就好了,传送门弄的时候搜狗还没出微信搜索,估计作者肯定有方法越过验证了
    withrock
        5
    withrock  
       2014-10-10 16:52:04 +08:00
    @alexzhan 我知道你在这里 嘿嘿 传送门的作者
    shiny
        6
    shiny  
       2014-10-10 16:54:48 +08:00
    @macken 有没有试过对微信 app 抓包?
    withrock
        7
    withrock  
       2014-10-10 17:02:59 +08:00
    @macken 除了直接抓搜狗,还有其他方法么?
    iyaozhen
        8
    iyaozhen  
       2014-10-10 20:07:28 +08:00
    阅读数和赞数估计不好拿,内置浏览器打开才看得见。
    cheny95
        9
    cheny95  
       2014-10-10 20:53:12 +08:00   ❤️ 1
    确实是需要内置浏览器才可以看到赞和阅读数.新版的微信就是这样,链接做了改动,每个文章的Key都是随机生成并且又是有时效性的,所以2个办法,1.按键精灵模拟用户点击,一 个文章一个文章点,2.反编译微信安装包,找到关键代码..



    抓取了一下,人工访问的,同一个文章每次key都不一样,只能模拟用户点击.安卓的按键精灵吧.


    key: 92d93ba1b575468c7ff6c0fd655e1e8eaad445eb195c636072ba1c39f5a57765c635d71eee25c80ab97f81ddb181f2bb
    文章标题: 古风歌曲TOP10,听了一定会喜欢!
    文章描述: TOP10 断弦古人以弹琴为雅兴,常云:人生得一知己足以。弦则为琴弦,断弦则指琴弦已断,表达心中的悲愤之情。
    阅读数量: 58
    赞: 没有人赞呢
    key: 94a250db12b2a6e1e9177653ea7dcb39eb38ef8d11dda4825596f02dd1eed5705177ffe464e23ff66fe59e681d5407e2
    文章标题: 戴上耳机全世界都与我无关
    文章描述: ?1.你哭-Nico你笑,全世界都跟著你笑。你哭,全世界只有你一个人哭。?2.Happiness-爱的魔幻爱
    阅读数量: 47
    赞: 1
    key: 6b49eeb57a8e66392d7b51c7d5d783463cef9689d177cd84774d84af3acc1e5dc8562458ef565f0c64930f6aa6ceb967
    文章标题: 戴上耳机全世界都与我无关
    文章描述: ?1.你哭-Nico你笑,全世界都跟著你笑。你哭,全世界只有你一个人哭。?2.Happiness-爱的魔幻爱
    阅读数量: 48
    赞: 1
    key: 5f545a9ae2d1a64bff0d2045d1d568efb25395e786cedc767483529410d7aadc0727cb3aee00fc3110f5e39a7fbd8dc8
    文章标题: 戴上耳机全世界都与我无关
    文章描述: ?1.你哭-Nico你笑,全世界都跟著你笑。你哭,全世界只有你一个人哭。?2.Happiness-爱的魔幻爱
    阅读数量: 48
    赞: 1
    cheny95
        10
    cheny95  
       2014-10-10 20:58:04 +08:00
    @shiny 抓包貌似是抓不到的.通过端口监听可以实现.
    zhaohai
        11
    zhaohai  
       2014-10-10 23:12:44 +08:00
    想知道在吗刷阅读量
    zhaohai
        12
    zhaohai  
       2014-10-10 23:12:58 +08:00
    想知道怎么刷阅读量
    macken
        13
    macken  
    OP
       2014-10-11 00:17:20 +08:00 via Android
    @cheny95 我今天用tcpdump抓了下包,可以抓到数据包,微信除了心跳以外,用的都是短连接,分析了下包,我估计key的值的是通过ssl传递的,每次打开文章前都会有一个ssl的数据通信
    macken
        14
    macken  
    OP
       2014-10-11 00:19:39 +08:00 via Android
    @cheny95 你这个监视软件是个什么东东?
    macken
        15
    macken  
    OP
       2014-10-11 00:20:23 +08:00 via Android
    @iyaozhen 有了key无需内置浏览器也可以拿到
    macken
        16
    macken  
    OP
       2014-10-11 00:21:02 +08:00 via Android
    @withrock 搜狗的数据也没有阅读数据
    cheny95
        17
    cheny95  
       2014-10-11 08:26:19 +08:00
    @macken 朋友写的一个小程序,凑合玩...
    xmvagrant
        18
    xmvagrant  
       2014-10-12 15:11:54 +08:00
    @macken key也有可能是客户端和服务器端通过某种相同的规则生成/验证。SSL的通信也可以抓包来看的。
    macken
        19
    macken  
    OP
       2014-10-13 09:58:42 +08:00 via Android
    @xmvagrant ssl的包抓了怎么看?看到的都是乱码
    aaronleo
        20
    aaronleo  
       2014-10-25 20:34:27 +08:00   ❤️ 1
    我正在做的也是微信文章聚合平台,微口网 - http://www.vccoo.com/

    所以以我的经验来回答一下楼主的问题吧。

    思路一,利用rss生成工具,将搜狗的微信搜索结果生成一个rss,然后通过rss监控这个公众号的文章是否更新。(理论上应该可行,但没试过)

    思路二,自己做一个桌面浏览器,IE内核。用这个浏览器登录web微信,这个微信帐号关注你想抓取的公众号,这样就可以监控到是这些公众号是否已更新,更新后链接是什么,从而达到抓取数据的目的。(使用过,效率不高,但非常稳定)

    思路三,通过修改android的微信客户端来实现(这个方法是我们曾经使用过一段时间的)

    思路四,想办法越过验证直接取到链接,再通过链接取到数据。

    补充一下:阅读数和赞数内置浏览器打开才看得见。
    lomanyong
        21
    lomanyong  
       2014-10-25 22:25:40 +08:00
    @aaronleo 这几天也在做微信抓取的练习....感觉抓取文章内容是没问题的...但是想要获取阅读数和点赞数实在是难以下手...不知道还有什么抓包的思路嘛...
    lomanyong
        22
    lomanyong  
       2014-10-25 22:50:43 +08:00
    @macken 不知道解决了木有,可以交流一下...其实我也是做到了抓取公众平台的内容,但是后面的浏览量和点赞数就很捉急了...
    macken
        23
    macken  
    OP
       2014-10-26 10:20:50 +08:00 via Android
    @aaronleo 如果能够拿到微信的授权key是可以通过修改浏览器的ua,直接访问文章可以获取到阅读数和赞数的
    macken
        24
    macken  
    OP
       2014-10-26 10:23:48 +08:00 via Android
    @lomanyong 这个确实很难拿到,需要拿到授权key,但是key也是有效时间的
    aaronleo
        25
    aaronleo  
       2014-11-23 11:36:29 +08:00   ❤️ 1
    前天下午,微信公众平台更新了算法。 拿到key,修改浏览器的ua,也不行了。
    不过现在可以得到10万+的精确数据了。已经有很多网站抓到这个数据了。
    macken
        26
    macken  
    OP
       2014-11-23 11:59:49 +08:00 via Android
    @aaronleo 怎么抓到的
    hzq888
        27
    hzq888  
       2014-11-25 15:44:15 +08:00   ❤️ 1
    我有个思路可以试试。
    首先修改手机的 dns
    然后劫持 微信文章页面里"http://res.wx.qq.com 这个域名,
    然后在微信是会加载 <script type="text/javascript" src="http://res.wx.qq.com/mmbizwap/zh_CN/htmledition/js/biz_wap/moon2107db.js"></script> 这个文件的,然后你从腾讯拿到这个文件,加上你自己的js。
    这样你就能在这台手机上微信里执行你自己的js 了
    然后通过js 拿到 阅读数。


    ----------------不知道你们懂了没,我太懒,不愿意去试,你们成功了告诉我结果!!
    llhh
        28
    llhh  
       2014-12-15 18:31:34 +08:00
    楼主知道如何抓取了吗?
    macken
        29
    macken  
    OP
       2014-12-15 22:49:21 +08:00
    @llhh 没有 没找到好方法
    dsy2008bob
        30
    dsy2008bob  
       2014-12-23 15:03:28 +08:00
    @macken 现在有什么解决思路么?
    yzimhao
        31
    yzimhao  
       2014-12-24 21:23:56 +08:00
    我已经抓取到了。目前开放接口给大家 http://www.kjson.com/weixin/?fm=v2ex
    macken
        32
    macken  
    OP
       2014-12-24 22:14:28 +08:00
    @yzimhao 求指教
    leeray
        33
    leeray  
       2015-01-07 09:22:00 +08:00
    @macken 找到方法了么?
    macken
        34
    macken  
    OP
       2015-01-07 09:39:18 +08:00
    @leeray 有间接的解决方法获取key
    leeray
        35
    leeray  
       2015-01-07 14:24:14 +08:00
    @macken 求分享
    mingyun
        36
    mingyun  
       2015-01-11 21:34:41 +08:00
    @yzimhao 求分享 开源吗
    icewent
        37
    icewent  
       2015-02-01 09:52:19 +08:00
    我也做了一个 http://wx5s.coding.io/stat
    docee
        38
    docee  
       2015-02-02 15:34:47 +08:00
    @icewent 求分享key获取方法。。。
    macken
        39
    macken  
    OP
       2015-02-02 16:20:04 +08:00   ❤️ 1
    @docee 看看前面别人的回复吧 方法目前来说也就这些了
    docee
        40
    docee  
       2015-02-03 22:23:13 +08:00
    @macken Key会失效让人很头疼啊。
    icewent
        41
    icewent  
       2015-02-09 21:42:04 +08:00   ❤️ 1
    @docee 公众平台后台,文章发布前,Inspector 修改一下内容,把你要放的动态图片放进去。
    macken
        42
    macken  
    OP
       2015-02-10 14:42:12 +08:00   ❤️ 1
    @icewent 恩 基本都是这个思路
    docee
        43
    docee  
       2015-02-10 14:43:48 +08:00
    @icewent 也就是说有人阅读,就获取到他的url了,url中就哟OpenID了???
    docee
        44
    docee  
       2015-02-10 14:58:22 +08:00
    @macken 哈哈。瞬间明白了!感谢感谢!~
    daijia1123
        45
    daijia1123  
       2015-02-18 11:55:43 +08:00
    @icewent
    @macken
    @docee
    请问这个“动态图片”是怎么放进去的?每次修改之后都提示图片粘贴失败,并自动替换成腾讯自己的图。头大。
    macken
        46
    macken  
    OP
       2015-02-18 12:31:49 +08:00 via iPhone
    这个你得直接修改html
    cncba
        47
    cncba  
       2015-03-11 09:10:46 +08:00
    偶尔用两次, http://www.kjson.com 这个就够用. 但还是要人工参与操作, 比较麻烦.

    这个是收费的, http://www.dexj.net:82/​​ , 提供API, 用起来比较爽.
    weiguang3100
        48
    weiguang3100  
       2015-04-13 23:47:22 +08:00
    http://51tools.info/wx/weixin.aspx 实现了,而且提供免费的接口,一般的采集够用
    weiguang3100
        49
    weiguang3100  
       2015-04-13 23:48:31 +08:00
    @cncba http://51tools.info/wx/weixin.aspx 思路跟第一个一样
    hzq888
        50
    hzq888  
       2015-04-28 10:33:47 +08:00 via iPhone
    @macken
    直接修改了html 貌似还是会被替换成微信的url,求教了
    macken
        51
    macken  
    OP
       2015-04-28 10:51:43 +08:00
    @hzq888 什么意思?
    hzq888
        52
    hzq888  
       2015-04-28 17:54:42 +08:00
    @macken 按你说的,在文章里面插入自己的一张图片,但是获取不到来源地址。你的能吗?
    macken
        53
    macken  
    OP
       2015-04-29 08:26:03 +08:00 via iPhone
    @hzq888 插入图片不是上传一张图片,而是通过修改html的增加一个img标签,它的img指向你的服务器的图片地址
    Ourobotos
        54
    Ourobotos  
       2015-07-23 23:53:07 +08:00
    @macken 在chrome的开发者工具里修改了HTML 插入图片以后保存,那张图片还是会自动替换成腾讯的图……
    hjue
        55
    hjue  
       2015-07-30 21:15:57 +08:00
    @macken 这个漏洞应该已经修复了

    @Ourobotos 的确有文章有外站图片,这个文章第一张就是外站的 http://mp.weixin.qq.com/s?__biz=MzAxODIxNTM4MA==&mid=205751888&idx=1&sn=a5043dd7a77e7d4a4fd46752dfba0d79
    macken
        56
    macken  
    OP
       2015-07-30 21:43:06 +08:00
    @hjue 有可能是,以前保存的老的图文素材估计还是可以的
    hjue
        57
    hjue  
       2015-08-01 00:29:00 +08:00
    @macken 发现微信的浏览器做了特殊处理,图片访问的refer为空

    https://www.kjson.com/weixin/?fm=v2ex 特别提示是需要QQ浏览器的微信查看文章

    http://51tools.info/wx/weixin.aspx 这个不需要,不知道是怎么实现的
    macken
        58
    macken  
    OP
       2015-08-06 10:41:01 +08:00
    @hjue 51tools.info这个也是要关注微信,查看文章的
    rogeecn
        59
    rogeecn  
       2015-09-22 16:27:03 +08:00
    你是在说这个么? http://qoofan.com/tool/article/get-view-cnt.html ,我做出一个 DEMO 来。
    macken
        60
    macken  
    OP
       2015-09-23 10:00:05 +08:00
    @rogeecn 是的 你是怎么搞 key 的?
    Lukin
        61
    Lukin  
       2015-11-12 10:03:14 +08:00
    反编译微信的 apk 文件能拿到 key 吗?
    macken
        62
    macken  
    OP
       2015-11-12 10:05:55 +08:00
    @Lukin 拿不到 key 是每次请求服务端获得的
    Lukin
        63
    Lukin  
       2015-11-12 10:40:13 +08:00
    @macken 我反编译了一下微信的 Android 客户端,发现很多用 C 写的模块,没办法反编译。
    macken
        64
    macken  
    OP
       2015-11-12 11:36:21 +08:00
    @Lukin 是的,加密认证都是 c 写的,可以用 ida 反编译 so
    denghongcai
        65
    denghongcai  
       2015-11-18 00:21:44 +08:00
    @macken key 和公众号是绑定的,当前公众号的 key 不能用来抓其他的公众号的
    @rogeecn 的 API 特别稳定而且响应速度快,能给个思路提示吗?
    macken
        66
    macken  
    OP
       2015-11-18 10:13:02 +08:00
    @denghongcai 是的 现在更新策略了,早前一个 key 是一个通用的
    denghongcai
        67
    denghongcai  
       2015-11-18 10:35:30 +08:00
    @macken 好想知道 regeecn 是怎么解决的,我感觉我现在已经走到邪路上了
    wenfan
        68
    wenfan  
       2015-11-19 13:18:21 +08:00 via iPhone
    我也一直有个项目 需要找到 key 和 pass_ticket , pass_ticket 已经基本解决了,还需要 key ! 如果有人会解决 可以有偿!!! wechat : 23511839
    macken
        69
    macken  
    OP
       2015-11-19 16:30:33 +08:00
    @wenfan pass_ticket 怎么拿到的?据我所知 这两个应该是一起返回的
    wenfan
        70
    wenfan  
       2015-11-19 20:02:51 +08:00
    @macken 有联系方式可以私聊么?求大神赐教。我的微信: 23511839
    kuskyfei
        71
    kuskyfei  
       2015-12-08 09:39:54 +08:00 via Android   ❤️ 1
    @rogeecn 求原理和方法
    21212121
        72
    21212121  
       2015-12-08 10:30:46 +08:00
    g080166
        73
    g080166  
       2016-01-08 17:48:49 +08:00
    @macken 请问你现在还能抓取到阅读数和点赞数了吗?
    macken
        74
    macken  
    OP
       2016-01-09 09:34:30 +08:00 via iPhone   ❤️ 1
    @g080166 可以抓到啊
    g080166
        75
    g080166  
       2016-01-09 16:38:05 +08:00
    @macken 不知道你有没有 demo 之类的,我这边愿意出价求合作
    macken
        76
    macken  
    OP
       2016-01-09 17:03:50 +08:00   ❤️ 1
    @g080166 你要抓的数据是什么量级的?
    g080166
        77
    g080166  
       2016-01-09 18:03:26 +08:00
    @macken 不多,目前暂时是一万多,但是以后随着业务扩展,很难说。主要先你那边有没有 demo 看下,我看别人的都有网页可以尝试下,但是目前都挂了而已
    g080166
        78
    g080166  
       2016-01-09 18:03:56 +08:00
    @macken 另外接口调用的收费标准你这里有吗?
    macken
        79
    macken  
    OP
       2016-01-09 21:50:43 +08:00   ❤️ 1
    @g080166 不好意思 我这没有具体的接口,我有技术实现方案,你可以加我微信聊一下 id 就是微信号
    g080166
        80
    g080166  
       2016-01-10 00:15:45 +08:00
    @macken 已经添加
    ACzero
        81
    ACzero  
       2016-01-19 16:35:38 +08:00
    请问现在是用什么方法解决的?
    ganjingui
        82
    ganjingui  
       2016-01-23 19:51:42 +08:00
    @macken 怎么获取到 KEY 呀,能交流交流吗?
    haoning747
        83
    haoning747  
       2016-01-28 13:29:46 +08:00
    这是之前做的网盘引擎: www.quzhuanpan.com ,现在想搞个微信爬虫,发现很多人都是搜狗为入口,大家有新思路吗?
    bojone
        84
    bojone  
       2016-02-02 00:39:46 +08:00
    @g080166 我目前有个方案,可以获取到阅读数,还有抓取到微信文章列表(跳过搜狗),成本很低。有兴趣请邮箱联系~~
    bojone
        85
    bojone  
       2016-02-02 00:40:59 +08:00
    @g080166 万级数据是很轻松的。
    yangyong
        86
    yangyong  
       2016-02-15 08:06:42 +08:00
    @bojone 您是怎么做的 我 q 250218783
    ganjingui
        87
    ganjingui  
       2016-02-16 21:03:03 +08:00
    @bojone 您好,你的方案是怎么做的 我的 QQ 是 18470338
    7zheng
        88
    7zheng  
       2016-02-26 11:34:33 +08:00
    @bojone 邮箱在哪里?
    JoeyDeng
        89
    JoeyDeng  
       2016-03-10 05:33:35 +08:00
    @bojone 我的 qq 402682376 谢谢
    bojone
        90
    bojone  
       2016-03-13 09:37:49 +08:00
    czzsean
        91
    czzsean  
       2016-03-29 15:19:57 +08:00
    @bojone 您好,你的方案是怎么做的 我的 QQ 是 946817112
    p5er
        92
    p5er  
       2016-04-17 20:29:41 +08:00
    @macken 我用微信桌面版抓包发现。当我用微信搜狗获得的 URL ,粘到微信桌面版点开后,在第一个 get 请求的 URL 里,就已经带上了 key ,说明微信桌面版的程序,会自动把不带 key 的 URL 经过计算变成带 Key 的。然后第二个请求,就是通过 post 方法,带着 key 去请求 getappmsgext ,从而获得阅读数。所以我觉得 key 是在桌面版程序里计算出来的。
    macken
        93
    macken  
    OP
       2016-04-17 22:50:17 +08:00
    @p5er 微信是 TCP 通信的, HTTP 抓包是抓不出来的
    p5er
        94
    p5er  
       2016-04-18 01:38:35 +08:00
    @macken 我在 win7 上,开着 finddler 抓的, finddler 可以抓 https ,我粘到微信桌面版的连接是: http://mp.weixin.qq.com/s?__biz=MzA5NDE0MzIyOQ==&mid=204008313&idx=3&sn=90448d00d2e845efb7501ba627a930d6&3rd=MzA3MDU4NTYzMw==&scene=6#rd

    然后,我能明显看到两条请求:
    1 、 get 方法
    http://mp.weixin.qq.com/s?__biz=MzA5NDE0MzIyOQ==&mid=204008313&idx=3&sn=90448d00d2e845efb7501ba627a930d6&3rd=MzA3MDU4NTYzMw==&scene=6&key=b28b03434249256bac1ce522598d7a9a5e52cf754d3e7e991b9e221da19c4f11f547ee26842e06679e87bc7df3d6ab39&ascene=1&uin=MTEyNDA3ODkyMA%3D%3D&devicetype=Windows+7&version=62000025&pass_ticket=gsFoBLv2Z2XwQM3jUq2Oi9qIqK5L2QNPxrNcKNvX6brw0vTvl4aMbxa0DQnGJYep

    2 、 post 方法
    http://mp.weixin.qq.com/mp/getappmsgext?__biz=MzA5NDE0MzIyOQ==&appmsg_type=9&mid=204008313&sn=90448d00d2e845efb7501ba627a930d6&idx=3&scene=6&title=%E3%80%90%E6%9F%AF%E6%83%A0%E6%96%B0%E8%80%81%E5%B8%88%E5%B0%8F%E7%A4%BC%E5%8C%85%E7%B2%BE%E9%80%89%E3%80%91%E7%BB%B4%E5%A4%9A%E5%88%A9%E4%BA%9A%E5%A5%B3%E7%8E%8B%E7%9A%84%E7%A7%98%E5%AF%86&ct=1425391891&devicetype=Windows&nbsp;7&version=&f=json&r=0.7216593634802848&is_need_ad=0&comment_id=0&is_need_reward=0&both_ad=1&reward_uin_count=0&uin=MTEyNDA3ODkyMA%253D%253D&key=b28b03434249256bac1ce522598d7a9a5e52cf754d3e7e991b9e221da19c4f11f547ee26842e06679e87bc7df3d6ab39&pass_ticket=gsFoBLv2Z2XwQM3jUq2Oi9qIqK5L2QNPxrNcKNvX6brw0vTvl4aMbxa0DQnGJYep&wxtoken=2028779324&devicetype=Windows%26amp%3Bnbsp%3B7&clientversion=62000025&x5=0

    从原始连接,到第 1 条请求,我觉得这个是微信软件自动生成的 key ,这个 key 应该有规律。
    p5er
        95
    p5er  
       2016-04-18 01:40:28 +08:00
    macken
        96
    macken  
    OP
       2016-04-18 15:06:48 +08:00
    @p5er key 的获取是通过 tcp 通信获取的, finddler 是抓不到 tcp 的包的。
    tinkerz
        97
    tinkerz  
       2016-06-20 17:04:57 +08:00
    @macken 请问下,之前有过爬取公众号历史文章的经验不? 我这边现在要爬这部分内容,貌似只能登陆关注才能全部爬取,而且还要获取 key- -。 不知这儿用到的 key 跟文章阅读的 key 是不是同一类?
    macken
        98
    macken  
    OP
       2016-06-20 17:36:55 +08:00
    @tinkerz 确实是只有关注以后才能抓取全部历史, key 是否一样这个我也没研究过
    FANNG
        99
    FANNG  
       2016-06-30 14:18:39 +08:00
    tinkerz
        100
    tinkerz  
       2016-07-11 16:15:02 +08:00
    @macken 现在获取 key 还有其他什么思路吗? 编辑器里面插入 html 片段好像不好使了... 只能按键精灵了么- -

    另外 知乎上有人说什么万能 key 这个是个什么东东啊? 有了解过么?
    1  2  
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5167 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 667ms · UTC 09:30 · PVG 17:30 · LAX 02:30 · JFK 05:30
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.