想抓取链家的 app 数据,在 github 上找到一个看上去不错的项目: https://github.com/CaoZ/Fast-LianJia-Crawler,
但是我对代码有两处有点疑惑,没看懂是怎么来的。
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 不知道作者是怎么试出来的。
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 等相关信息。看看能不能找出相关规律。
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.