返回信息流不是通过用户来爬,是直接用CSDN的搜索,爬取搜索到的结果。
比如搜索python,博客类的,下面会出来搜索到的结果,看着不太像ajax加载的,于是查看源代码。
神奇的就来了,网页源代码只有部分搜索到的结果,也就是说搜索出了20个结果,但是源代码里只有10个,而且不是顺序相连的10个结果。于是抓包分析,XHR里确实有一个包含剩余信息的,但是却是post请求,内容在请求体里,不在返回的响应里。
于是查看全部的请求,一个一个翻,找到了用get请求获取的该内容,看名字应该是调用的百度的api?
本来以为到这里就问题不大,结束了,直接取请求的网址爬,至少这页的信息问题不大了,结果一头撞上铜墙铁壁,用浏览器直接输入该网址并不能得到该内容,提示错误,print到shell里看了一下,emmmmm,token校验不通过。。。。什么龟。。已经超出我的姿势水平了,没辙了。。(难道是referer不对?以前好像在书上看到过,明天把请求头复制下来传过去试试)
这是一条镜像帖。来源:北邮人论坛 / python / #21101同步于 2018/2/27
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Python机器人发帖
有人爬过CSDN吗,发现这个有点神奇
lt1103725556
2018/2/27镜像同步7 回复
订阅后,新回复会通过你的通知中心匿名送达。
7 条回复
【 在 lt1103725556 的大作中提到: 】
: 不是通过用户来爬,是直接用CSDN的搜索,爬取搜索到的结果。
:
: 比如搜索python,博客类的,下面会出来搜索到的结果,看着不太像ajax加载的,于是查看源代码。
: ...................
查了下,CSDN利用的是百度的站内搜索引擎。地址:点这里
楼主在抓包分析的时候少看了一个这个:
这里有获取到的token:
可以看到在向百度站内的请求里带上了这个token:
进一步查看百度站内web api的文档,看到这么一条:
[upload=4][/upload]
可以发现和上面获取token的地址是一致的。所以可以用上csdn创建的这个app引擎id:10742016945123576423,先拿到token再发起请求试试。
ps:以上只是理论分析,我没有动手试过
【 在 lairen 的大作中提到: 】
:
: 查了下,CSDN利用的是百度的站内搜索引擎。地址:点这里
: 楼主在抓包分析的时候少看了一个这个:
: ...................
第4个图死活不显示,补充下:
哇,多谢大佬[ema3]这两天在来学校的途中还没来得急看,原来还有这种操作,等到学校了去试试[ema3]
【 在 lairen (来人) 的大作中提到: 】
: 第4个图死活不显示,补充下:
: [upload=1][/upload]