这世界真的什么人都有,哎,继续分析。 经过对工程点点的逆向和抓包分析,发现工程点点须要x-sign
和token
验证。 ``` 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) 欢迎关注小白微信公众号【小白技术社】,一块儿学习一块儿交流 