zoukankan      html  css  js  c++  java
  • 工程点点app爬虫和sign算法破解

    这世界真的什么人都有,哎,继续分析。
    通过对工程点点的逆向和抓包分析,发现工程点点需要x-signtoken验证。
    ``` 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怎么获取呢??
     自己分析登录接口就行了。
     那么```sign```怎么来的呢??
     很明显md5,具体是怎么做的呢,涉及到该公司的利益,不能过多透露,反正是对请求参数进行某些操作之后然后使用md5的。
     对这些参数分析完之后,就需要写爬虫了,
     直接看代码,没写完
    
    
        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)
    
    欢迎关注小白微信公众号【小白技术社】,一起学习一起交流
    
    ![](https://img2018.cnblogs.com/blog/1236139/201909/1236139-20190907114120352-1218272127.png)
  • 相关阅读:
    asp.net 网页标题、关键字、描述
    星级评分jQuery插件
    以jquery为基础的星星评分
    投票系统显示结果jQuery插件
    JAVASCRIPT模拟模式对话窗口
    Repeater 嵌套代码
    window服务程序安装卸载批处理文件
    c#window程序开发入门系列自学笔记
    jquery 模式对话框改进版
    php的正则表达式完全手册
  • 原文地址:https://www.cnblogs.com/xbjss/p/11479848.html
Copyright © 2011-2022 走看看