Growth Hacker 奇技淫巧一则:零授权,抓取新浪微博任何用户的微博内容

标签: Coding growth hacker hack | 发表时间:2014-05-08 10:05 | 作者:xdash
分享到:
出处:http://www.fanbing.net

有时或基于以下凡此种种需求,我们会想要去抓取新浪微博的内容:

  • 产品冷启动,导入外部数据,而非从头积累;
  • 通过大数据+语义分析获取用户兴趣行为偏好,提供智能推荐;
  • 监控微博舆情,对特定关键词或是用户行为进行响应;etc

想必新浪深知微博内容本身是最其有价值的资产,一旦被竞争对手大批量抓取导入,则辛苦建立起的门槛将瞬间化作他人之嫁衣,因此做了非常繁复的安全保护,包括强制登录跳转认证、跨域检测、cookie 植入、禁止账号密码登录而启用 OAuth2.0 等等。

近期个人有一些抓取需求,在查询大量过时的网络资料测试无果后,决定另辟蹊径完成这一目标,并最终测试成功。在此分享出来。(这篇文章将提供解决问题的方法思路,但不会给出具体代码。伸手党请移步百度或 Github。)

你需要准备:一个个人微博账号,我们将透过它去访问其他用户页面,从而抓取。除此之外,别无所求。

解题思路:

1.最初我从微博 Web 版入手,发现即使是浏览器中可正常查看的内容,若直接通过 PHP 的 curl 或者 file_get_contents 读取,也无法直接取得,而是读取到一串 js 代码,作用是跨域判断+cookie判断+header跳转。料想要模拟的请求和一重重越过的限制定会很多。

2.转换思路,既然微博的 Web 版限制很多,那就从移动版下手(移动网页 weibo.cn,而非指移动 App)。移动版碍于手机机能的限制,身份验证要求会降低很多。经过实验,微博移动版的展示规则是:加V用户、微博广场,可直接访问其页面;普通用户,则必须登录才能看到。而判定当前登录用户身份的标识,则应该是手机浏览器本身存储的 cookie 与服务端的某个 session 比对。

3.由于我需要获取普通用户的微博内容,因此还要想办法继续绕。你当然可以每次直接模拟用户登录,但相对繁琐,我希望能一劳永逸。既然移动版的身份判定很大程度上依赖手机浏览器 cookie,而一般浏览器 cookie 不那么容易取,且某些土鳖机型连 cookie 都无法记录(号称 1.3 亿月活跃用户的上市公司一定会照顾穷苦大众的),那么微博一定提供了其他退而求其次的解决方法。于是我注意到了登陆框下的「记住登录状态,需支持并打开手机的cookie功能。」选项。

Screen Shot 2014-05-08 at 5.47.19 PM

See?默认是勾上的,也即是说微博团队主观上是希望用户勾上这个,从而借助 cookie 判断来提高登录安全性的。

我遂果断取消勾选该选项,输入任何一个自己的微博账号密码,点击登录。

4.值得注意的情况出现了:登录时的验证网页走的是 newlogin.sina.cn,而非勾选状态下会走的 login.sina.cn。说明此种情况下,登录验证的确是进行了特殊的处理,从而让没有开启 cookie 功能的手机也能被判定为登录。

查看跳转页面的源代码,发现有如下一行:

  如果没有自动跳转,请<a href="http://weibo.cn/?s2w=login&amp;gsid=4uwc8bfa1vnw8ivzI9gUd706F3W&amp;vt=4">点击这里</a>

注意这个 gsid 参数,料想它就是判定本地用户身份的标识,于是整个提取出来(为了我的账号安全,我对这个案例中的 gsid 做了修改,你们直接照搬是无法成功的,还是自己跑一遍登录流程吧)。

Screen Shot 2014-05-08 at 5.56.30 PM

5.最精彩的情况来了。为了验证我们能不能凭这一串 gsid 伪造登录后的身份,我开启 Chrome 的隐身模式,随便找了一个正常情况下必须登录才能看到页面的非加V用户,然后在地址栏后面加上了 gsid 参数,URL 整个变成:

  http://weibo.cn/u/1665167973?vt=4&st=7fe6&gsid=4uwc8bfa1vnw8ivzI9gUd706F3W

(当然这里的 gsid 我也做了改动,只是作为演示,实际 gsid 还请自行获得)

直接回车!擦,虽然此前没有执行过登录动作,但是已经以登录后的的身份在看他的页面内容了哟。这样,我就可以直接凭借上述固定 URL 去爬去用户的内容。

Screen Shot 2014-05-08 at 6.01.28 PM

(上图中的「我们都关注XDash」,你就可以知道当前是登录状态,取到了用户身份的。事实上的确如此。)

背后原理应该是,以 GET 方式在 URL 中发送了本地登录后的身份标识,微博服务器比对这串标识来判定对应的登录用户身份,然后返回到本地,本地于是就以这个用户身份登录,堂而皇之地获取数据了。(大一的时候我曾参与过一个基于 ASP 的校园社区的开发,阅读了帝国 CMS 的代码,那时候对于手机用户的身份认证就是这么原始哒。)

现在想要的尽收眼底了,接下来…Hulk,smash!

hulksmash

微博手机版,阿喀琉斯的脚后跟。

相关 [growth hacker 授权] 推荐:

Growth Hacker 奇技淫巧一则:零授权,抓取新浪微博任何用户的微博内容

- - XDash Weblog 范冰
有时或基于以下凡此种种需求,我们会想要去抓取新浪微博的内容:. 产品冷启动,导入外部数据,而非从头积累;. 通过大数据+语义分析获取用户兴趣行为偏好,提供智能推荐;. 监控微博舆情,对特定关键词或是用户行为进行响应;etc. 想必新浪深知微博内容本身是最其有价值的资产,一旦被竞争对手大批量抓取导入,则辛苦建立起的门槛将瞬间化作他人之嫁衣,因此做了非常繁复的安全保护,包括强制登录跳转认证、跨域检测、cookie 植入、禁止账号密码登录而启用 OAuth2.0 等等.

Growth Hacker 这种职业能在中国互联网行业落地生根吗?

- - 知乎每日精选
growth hacker作为一种职业,在中国互联网行业落地生根是一件困难不是一件容易的事情,但是我相信是可以做到的. 在说明上述论断的原因之前,不妨简单回顾growth hacker概念的提出和流行的过程. growth hacker这一概念来自美国互联网创业圈. 最早是由互联网创业者Sean Ellis在2010年6月27日发表的find a growth hacker for your startup一文中提出来的.

Hacker News 排名算法工作原理

- - python.cn(jobs, news)
这篇文章我要向大家介绍 Hacker News网站的文章排名算法工作原理,以及如何在自己的应用里使用这种算法. 这个算法非常的简单,但却在突出热门文章和遴选新文章上表现的异常优秀. 深入 news.arc 程序代码. Hacker News是用Arc语言开发的,这是一种Lisp方言,由Y Combinator投资公司创始人 Paul Graham创造.

Hacker News的热门排名算法

- - 互联网实践
Hacker News 是一家关于计算机黑客和创业公司的社会化新闻网站,由 Paul Graham 的创业孵化器 Y Combinator 创建. 与其它社会化新闻网站不同的是 Hacker News 没有踩或反对一条提交新闻的选项(不过评论还是可以被有足够 Karma 的用户投反对票,或是投支持票);只可以赞或是完全不投票.

Hacker Typer – 逼真黑客范儿 | 小众软件 > 在线应用

- leplay - 小众软件
Hacker Typer 是不折不扣的装逼应用. 你可以一行程序都不会写,只需要一点黑客范儿,就可以让妹子们刮目相看了. 按钮,然后自然熟练地把键盘按地劈里啪啦,不要激动,不要劲舞范儿. 只见代码喷薄而出,就像飞速拉开的裤子拉链. 当妹子们邀请你去修电脑时,你懂的. 注:在 iOS/Android 上都有同名同种的应用可以下载哦,跨平台装逼.

QR Hacker:个性化QR码制作工具

- huangct - 雷锋网
QR码已经在我们的生活中大行其道,但大多数QR码还是保持着一贯的黑白两色方块风格. 我们介绍的在线自定义QR码制作工具QR Hacker则完全颠覆了QR码的传统印象,用户可以为QR码设置不同的颜色、形状、以及Logo、照片等,让你的QR码更具有个性. 用QR Hacker生成QR码共分5步:. 输入信息(文字、地址、电话等);.

基于用户投票的排名算法(一):Delicious和Hacker News

- - 阮一峰的网络日志
互联网的出现,意味着"信息大爆炸". 用户担心的,不再是信息太少,而是信息太多. 如何从大量信息之中,快速有效地找出最重要的内容,成了互联网的一大核心问题. 各种各样的排名算法,是目前过滤信息的主要手段之一. 对信息进行排名,意味着将信息按照重要性依次排列,并且及时进行更新. 排列的依据,可以基于信息本身的特征,也可以基于用户的投票,即让用户决定,什么样的信息可以排在第一位.

【Hacker News】不,我才不会去下载你的狗屁软件

- - CSDN博客推荐文章
/*------------------------------------------- 程序猿的进化论------------------------------------------------*/. Hacker News上收集了很多IT界牛人的博客,有的文章读后感觉醍醐灌顶,有的文章幽默诙谐,有的文章完全颠覆你的价值观.

Facebook Growth 是一个怎样的团队?定位和主要工作内容是什么?

- - 知乎每日精选
Growth 团队主要的目标是让更多的人成为Facebook的活跃用户. 我们有很多的小组,负责的产品包括 建立好友(friending), 邮箱找人 ( contact importer), 消息(notifications for email,sms,push), 注册,i18n, 低端手机 (Facebook for Every Phone),游戏等.

加密锁和云授权

- MArCoRQ - 月光博客
  在中国,加密锁仍然是占主导地位的软件保护方式. 近30年来,计算机硬件不知更新了多少代,软件技术也从上世纪90年代起进入了互联网时代,而加密锁保护方式却一直没有改变,顶多从原先的并口锁进化到USB锁,这是为什么呢.   这是因为,30年来,软件的盗版依然存在,人们却没有找到应对盗版更好的办法. 另外,传统的观念认为,加密锁具有安全强度高、软件授权可随加密锁移动使用优点.