美文网首页
爬虫系列之巧爬Boss某聘,还在为__zp_stoken__参数

爬虫系列之巧爬Boss某聘,还在为__zp_stoken__参数

作者: Minusonewly | 来源:发表于2020-04-01 21:32 被阅读0次

    声明:该文章仅用于学习,不得用于商业用途,如有问题,请联系作者删除!

    前言:相信大家在爬boss网页版的时候都有遇到被zp_stoken这个参数恶心到的情况。下面介绍的这种爬取方式,不用解密任何加密字段只需更换代理ip即可轻松爬取你想要的信息。

    先跟大家介绍爬虫几种常见的爬取方式:

    1. 网页端
    2. APP端
    3. 分享页面(较少)
    4. 小程序端

    前三种这里不做介绍,大家容易忽略的是第四种,小程序端。目前基本很多大厂和中小型公司在打造app的同时都会有自己的小程序,由于小程序也只是最近几年才发展起来的,所以在各项反爬上较APP或网页会简单。这次的Boss也是如此。

    抓包

    image.png

    这里为啥没截结果呢。。。因为IP被封了。。。就不放出来打脸了。
    大家可以看到除了一个mpt看上去是个加密参数,其他都是能直接复制粘贴的东西。

    mpt参数是啥

    首先给出个结论,这参数是个认证参数,在经过几千次测试后,参数不会改变。

    getCodeData: function() {
            var e = this;
            return new Promise(function(t, a) {
                wx.login({
                    success: function(a) {
                        var o = a.code;
                        (0, i.WX_LOGIN)(o).then(function(a) {
                            var i = a.zpData, 
                            o = (i.wt, i.mpt), 
                            s = i.openId;
                            c.data.mpt = i.mpt, c.data.openId = i.openId || "", e.checkAuth().then(function() {
                                (0, r.triggerEvents)("wxReady");
                            });
                            var u = wx.getStorageSync("LOGIN_DATA") || {}, d = (0, n.default)({}, u, {
                                mpt: o,
                                openId: s
                            });
                            d.wt ? (e.afterLogin((0, n.default)({}, d)), e.checkComplete(!0)) : c.logout(), 
                            t(c.data);
                        });
                    }
                });
            });
        },
    
    • c.data.mpt = i.mpt 这里就是给mpt这个参数赋值的地方,我们还可以看到一个wx.login()方法,如果你开发过小程序,对这个方法就再熟悉不过了,小白跳至 wx.login官方文档,猜测该方法不能直接从小程序包里得出,而是微信自身的一个接口,如果想知道该方法做了什么,只有通过逆向微信APP来完成,大佬希望可以私聊我交流下。下面就是调用的后返回的结果:
      image.png
    • code值得出后,你会发现这个code值并不是mpt的值,所以这里面肯定还存在一些处理的逻辑。我们回到抓包


      image.png
    • 刚进入小程序,会进行该请求然后返回一个含有mpt的数据,这个请求含有几个参数一个code,还有一个appId,appId写死即可,下面就是code,这个code即是我们通过wx.login()方法返回的那个code的值。

    若mpt参数失效怎么办

    • 在测试过程中,没有遇到mpt最后失效的情况。但如果真的会失效,在没有逆向APP基础的情况下,也是有办法的。

    在失效后使用airtest进行模拟操作,再通过mitmdump进行中间人拦截从而获取mpt的值即可。

    另外还是强调一点:使用代理IP

    如有错误或不足的地方,希望各位大佬提醒更正!

    相关文章

      网友评论

          本文标题:爬虫系列之巧爬Boss某聘,还在为__zp_stoken__参数

          本文链接:https://www.haomeiwen.com/subject/xyczuhtx.html