这个世界还真是人人都有,哎,继续分析。通过工程点点的逆向工程和抓包分析,发现工程点点需要```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);这些agent可以很清楚的看到token和sign是怎么来的,就不赘述了。这个```token```使用了usertoken,如何获取usertoken??自己分析一下登录界面就可以了。那么```sign```是怎么来的呢??显然,md5具体是怎么做的,涉及到公司的利益,所以不能透露太多。反正就是对请求参数进行一些操作后使用md5。分析完这些参数,就需要写爬虫了,直接看代码,没写完classGongCd(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=Nonedefdata_md5(self,data,method):#这里是具体的sign算法,可以关注【小白技术社】公众号讨论技术returnmd5.hexdigest()defspider(self,url,method,data=None):self.headers['X-Sign']=self.data_md5(data)self.headers['token']=self.tokenifmethod=='GET':res=requests.get(url,headers=self.headers)否则:res=requests.post(url,data=json.dumps(data),headers=self.headers)返回resgcd=GongCd()defqiyeke(data):#企业库res=gcd.spider('http://gcdd.koncendy.com/gcddv216/app/scsolrcompany/QueryHighLightList','POST',data=data).text如果不是res:返回res_json=json.loads(res)res_list=res_json.get('data').get('result')pymg=MongoDB('EnterpriseRepository')res_mg_list=[]id_list=[]forresinres_list:id_list.append(res['enterpriseId'])delres['parentId']res_mg_list.append(res)
