在爬取一个需要登录的网站时,请求headers中包含一个关键参数‘token’,而经过搜索后发现,这个token是通过js生成,而非像cookie一样通过服务端返回的包进行设置。
再进一步搜索后发现疑似生成该token的js代码
var referUUIDMaker = ((function (uuidRegEx, uuidReplacer) {
return function () {
return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(uuidRegEx, uuidReplacer).toUpperCase()
}
})(/[xy]/g, function (c) {
var r = Math.random() * 16 | 0, v = c == 'x' ? r : (r & 3 | 8)
return v.toString(16)
}))
这种8-4-4-4-12的编码长度和UUID一致
且这里的代码和这篇文章中介绍的UUID生成的代码很类似
总而言之由于目前js代码理解起来有困难,暂时无法继续进行爬虫
设想通过Selenium定时登录获取token,将token缓存至redis中,也算是曲线救国了