共计 1525 个字符,预计需要花费 4 分钟才能阅读完成。
这世界真的什么人都有,哎,继续分析。
通过对工程点点的逆向和抓包分析,发现工程点点需要 ```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) |
正文完