這世界真的什么人都有,哎,繼續分析。
通過對工程點點的逆向和抓包分析,發現工程點點需要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)
歡迎關注小白微信公眾號【小白技術社】,一起學習一起交流

