简介
微博不知道什么时候改了热搜的页面,爬热搜增加了一点点的难度,也就是要拿到cookie才可以访问到热搜了
操作
首先观察请求,页面url还是下面这个
https://s.weibo.com/top/summary?cate=realtimehot
但是在没有cookie的时候会直接给你一个302到下面这个url
https://passport.weibo.com/visitor/visitor?entry=miniblog&a=enter&url=https%3A%2F%2Fs.weibo.com%2Ftop%2Fsummary%3Fcate%3Drealtimehot&domain=.weibo.com&sudaref=&ua=php-sso_sdk_client-0.6.29&_rand=1657674728.5131
这个时候这个页面会加载下面这个js
https://passport.weibo.com/js/visitor/mini_original.js?v=20161116
这个js会向下面一个url发一个post请求
https://passport.weibo.com/visitor/genvisitor
带两个参数
1 | cb: gen_callback |
会返回下面的信息
window.gen_callback && gen_callback({"retcode":20000000,"msg":"succ","data":{"tid":"yfUitgX0O4Qh4CWXpO7f+PkuCHWchnXFguyPWBySm1w=","new_tid":false,"confidence":95}});
返回来的东西我们只要拿到tid就好了,之后会跳转到下面这个url
https://passport.weibo.com/visitor/visitor?a=incarnate&t=9vxFhlRT0xasvUO711X1Jp5HM1Ol0pNMj8WiFn4PhuU%3D&w=2&c=095&gc=&cb=cross_domain&from=weibo&_rand=0.015638318399351148
这个url中包含下面参数
1 | a: incarnate |
t就是post请求拿到的tid,_rand这个你可以直接random.random()生成一个
访问完成之后你会发现response header中会多了set-cookie这个头,也就是你拿到了cookie,那么之后你再去请求
https://s.weibo.com/top/summary?cate=realtimehot
你就可以拿到页面了
欢迎关注我的博客www.bboy.app
Have Fun