前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >工程点点app爬虫和sign算法破解

工程点点app爬虫和sign算法破解

作者头像
吾爱小白
发布2020-07-09 15:25:59
1K0
发布2020-07-09 15:25:59
举报
文章被收录于专栏:小白技术社小白技术社

通过对工程点点的逆向和抓包分析,发现工程点点需要 x-signtoken验证。

代码语言:javascript
复制
this.b.a(aVar.b("Accept", "application/json").b("token", userToken).b("X-OS", "2").b("X-Plat", Constants.VIA_SHARE_TYPE_INFO).b("X-Dev", GcddApplication.c).b("X-Dev-Id", GreenDaoUtil.getUid()).b("X-App-Ver", GcddApplication.b).b("X-Sign", mD5String).b("X-Ts", sb5.toString()).a(v.c()).a().d()).a(cVar);

需要通过代理自己抓包,要是不懂抓包,可以看我之前的文章哦,通过代理可以很清楚的看到token和sign是怎么来的。这个 token使用的是usertoken,usertoken怎么获取呢??通过分析登录接口,就可已发现userToken。

那么 sign怎么来的呢??

很明显md5,具体是怎么做的呢,涉及到该公司的利益,不能过多透露,反正是对请求参数进行某些操作之后然后使用md5的。对这些参数分析完之后,就需要写爬虫了, 直接看代码,没写完

代码语言:javascript
复制
    class GongCd(object):
        def __init__(self, token=None):
            self.headers = {
                'Accept': 'application/json',
                'token': '',
                'X-Sign': '',
                'Content-Type': 'application/json; charset=utf-8',
                'Connection': 'Keep-Alive',
                'Accept-Encoding': 'gzip',
                'User-Agent': 'okhttp/3.9.1',
            }
            self.token = None
    
        def data_md5(self, data,method):
            #这里写的是具体sign算法,可以关注【小白技术社】 公众号 讨论技术
            return md5.hexdigest()
    
        def spider(self, url, method, data=None):
            self.headers['X-Sign'] = self.data_md5(data)
            self.headers['token'] = self.token
            if method == 'GET':
                res = requests.get(url, headers=self.headers)
            else:
                res = requests.post(url, data=json.dumps(data), headers=self.headers)
            return res
    
    
    gcd = GongCd()
    
    
    def qiyeke(data):
        # 企业库
        res = gcd.spider('http://gcdd.koncendy.com/gcddv216/app/scsolrcompany/QueryHighLightList', 'POST',
                         data=data).text
        if not res:
            return
        res_json = json.loads(res)
        res_list = res_json.get('data').get('result')
        pymg = MongoDB('EnterpriseRepository')
        res_mg_list = []
        id_list = []
        for res in res_list:
            id_list.append(res['enterpriseId'])
            del res['parentId']
            res_mg_list.append(res)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2019-11-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 小白技术社 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MongoDB
腾讯云数据库 MongoDB(TencentDB for MongoDB)是腾讯云基于全球广受欢迎的 MongoDB 打造的高性能 NoSQL 数据库,100%完全兼容 MongoDB 协议,支持跨文档事务,提供稳定丰富的监控管理,弹性可扩展、自动容灾,适用于文档型数据库场景,您无需自建灾备体系及控制管理系统。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档