想抓取链家的 app 数据,在 github 上找到一个看上去不错的项目: https://github.com/CaoZ/Fast-LianJia-Crawler,
但是我对代码有两处有点疑惑,没看懂是怎么来的。
- 首先是 app/config.py 下面的这段代码
self.lian_jia = {
'ua': 'HomeLink7.7.6; Android 7.0',
'app_id': '20161001_android',
'app_secret': '7df91ff794c67caee14c3dacd5549b35'
}
作者是怎么知道 app_id 和 app_secret 的,我通过 Charles 抓包工具,看到 header 头信息有一大堆东西,没看到 app_id 和 app_secret 不知道作者是怎么试出来的。
- app/util/init.py
get_token 这个方法,为什么作者知道 token 是这么产生的。
def get_token(params):
data = list(params.items())
data.sort()
token = config.lian_jia['app_secret']
for entry in data:
token += '{}={}'.format(*entry)
token = hashlib.sha1(token.encode()).hexdigest()
token = '{}:{}'.format(config.lian_jia['app_id'], token)
token = base64.b64encode(token.encode()).decode()
return token
如果有哪位同学可以试试用 charles 抓取链家的包,查看 header 等相关信息。看看能不能找出相关规律。