0%

爬取知乎异步加载页面

几天前知乎上有人问我怎么爬知乎的异步加载页面,他得到的返回页面错误码是401,开始我以为他是参数传错了,因为记得之前爬知乎的时候遇到过,于是问他是不是参数没有传对,结果他说他把能传的都传了。
本来不打算爬的,今晚没事就试了下,用 Chrome 开发者工具很快就得到了第二页的ajax链接,在打开返回的 Json 数据的 paging 数据时发现了一个有趣的事
QQ截图20171115205205.png
发现这里不仅有 next,还有 previous, 我这是就在想,在首页返回的 html 页面数据中是不是会有 next 这个变量呢?不然第二页的链接哪来的。
于是把首页的 html 数据复制下来,搜索 next 果然得到了第二页的 ajax 链接,于是我就直接请求这个链接,果然得到了 401 的错误码。

QQ截图20171115205813.png
查看 Chrome 开发者用具得到的 ajax 链接的请求头,如上图所示,发现了 X-API-VERSIONX-UDID 两个参数,然后在首页搜索 X-UDID 没搜到, 搜索对应的值时,找到了 xUDID 这个 key,于是用正则提取出这个值,将其加到 headers 中,请求之,结果还是 401,于是我就有点不懂了,再去 Chrome 查看请求头,又找到 authorization 这个 key 根据意思,我就懂了 未设置验证方式 的意思了,于是在首页的 html 数据中查找这个数据,找到之后加到 headers 中,请求之,结果还是 401,这下有点懵逼了。。。
再去 Chrome 查看请求头,发现 authorization 的值前面还有个奇怪的 Bearer ,于是在首页得到的 authorization 字符串前加上 Bearer
QQ截图20171115210639.png
请求之,终于成功了!Excited!!!

Welcome to my other publishing channels