wusisu

wusisu 查看完整档案

深圳编辑中山大学  |  信息与计算科学 编辑深圳市扣钉科技有限公司  |  全干工程师 编辑 wusisu.com 编辑
编辑

hello world

个人动态

wusisu 赞了文章 · 2018-08-14

台北 ModernWeb.tw 参会流水账以及感想

概要

大会的主页可以看 http://modernweb.tw/agenda.html
大部分的 slides 已经放出, 有兴趣可以点开看看.
这次我是跟随勾股去提供分享, 另外还有几个同行做分享的朋友,
我没出去过, 一路是跟着赵洋走的, 算是有惊无险. 手续上有点麻烦.

大会主要是两天, 每天上午是 Keynote, 下午是分开会场做分享,
总共有 4 个分会场, 我在第二天下午 D 会场, 应该说就是最小的一个会场了.
我跟赵洋周二到台北, 会议是周三周四, 下午结束时候太阳是没下山的.
第一天上午 Keynote 是 Google 和 Slack 的讲师分享, 还有勾股,
第二天上午记不清了, 记得有个是新加坡的, 但是我只听了他场外的回答.

因为早上开始是 9:30, 我实际上两天都是迟到的, 有讲师保留的席位还好.
晚上准备 Slides 其实觉得挺紧张的, 加上陌生的地方没睡好, 作息乱了.
会议结束后没有 after party 之类的, 所以都是自由活动了.
周三晚上跟着韦字还有勾股活动了一下然后吃晚饭,
周四一起去 Hacking Thursday 看了, 跟台北的一些朋友聊天了一会.
两天会议就结束了. 跟主办方跟其他讲师交流的机会少.

另外最后一天快结束的时候拍了一个 AMP 的 Keynote, 以及几个 Lighting talk.
Lighting talk 上讲的内容也是挺有料的, 长度短, 但精彩不输平时的分享.

会议的印象

  • React

主要是我个人印象, 以及一些新奇的地方, 不是成熟的意见, 只是分享.
我听到台湾那边关于 React 的一个分享, 对讲师的印象挺好的:

鍾曜年 (Jay Chung) / 趨勢科技 Sr. Front End Developer

https://weibo.com/1651843872/...
https://weibo.com/1651843872/...

算是唯一一个聊得比较多的其他讲师吧, 在会后在门外聊了一下.
他对 React 社区的任务非常熟悉, 我当时很惊艳, 就去问了,
他说都是 Twitter 上看的, 而且给我看了他的 Twitter 上的消息.
我当时想, 台湾接触到 Twitter 应该更多吧, 而且对英文社区更了解.
后面跟他交换了一些 React 跟函数式编程之类的看法, 其实差不多,
毕竟都是跟着社区在学习, 知识面覆盖相似度挺高的.
但是他对每个用法的掌握程度还是让我满惊讶的, 大陆都很少看到.

  • 网络

会后的 Lighting Talk 有个是会场的网络提供商做的,
他们大致介绍了一下, 给很多大型的活动做过网络支持, WiFi 网络.
他们调侃了一下大会当天流量太大, 很多人可能在备份 iOS 上的数据,
总之就是说会场网络很快了. 我也有印象, 讲师专用的 WiFi 非常快.
回想一下大陆技术大会的渣网络, 这方面真的非常值得提高.

  • QA 环节

一般分享结束是会有提问题的机会的, 大陆还有英文社区都会拿话筒给提问者,
这次会上挺特别的, 这个环节叫做"讲师面对面", 并不是放在演讲结尾进行的,
而是在门外边有一排桌椅分别对应四个会场, 摆着牌子, 方便人上去提问,
分享完的时候工作人员就把讲师请到外面去了, 然后想提问的就自己去找.
这样提问多也不影响其他的分享继续进行了, 而且很多人去提问也没关系.
当然坏处也有, 在提问的人就听不到接下来马上进行的分享了.

  • 聊天室

胸牌背面有个"共笔", 我当时看不懂事什么, 后来提到了, 是个 Wiki,
后面 Wiki 上也加上 Gitter 的聊天室, 整个挺有意思的.
记得勾股当时还说他们习惯真好, 还有人去共笔上记会议的概要.
我看了看 Gitter, 人数 70+ 的, 但是聊天聊不起来.
我也问了下认识的台北的朋友, 说是很少有群聊的习惯, Line 上面就很少,
这个跟我们我们这边每个活动有微信群有知乎问题还是差挺远的.

  • 午饭和零食

大会的午饭是便当, 两天不一样. 大致就是肉配一些蔬菜跟饭吧.
大致是领了便当然后回到会场的座位上吃的, 也是比较直接.
吃便当的时候回听到前排后排的年轻人自己相互之间在聊天, 挺好玩.
场外零食挺多的, 还有放在楼下展厅的冰的饮料. 可以说是很多了.

  • 女性开发者

我承认我不少时间是在看妹子. 年轻的妹子挺多, 至少比我在大陆大会遇到的多.
除了女性开发者大会逆天的女男比例, 其他大会一眼能看到连着几个女生不多吧.
整体上当然是男生多的. 还是不好确定到场的女生技术实力如何.
至于具体的人数多少, 着装怎样, 等等看大会是否放出照片吧.
会后的提问也遇到过一两次女性开发者提问的, 感觉深度也有.

  • 演讲技巧

从 Lighting Talk 看, 上场的人演讲技巧, 至少在幽默感方面挺赞的,
个别讲师讲着讲着就欢声笑语了, 极个别人还是段子手.
不过那边的笑点我并不是都能 Get 到, 有几次还是看着他们笑的.
我听的有一场讲前端图像识别的, 全程 Demo, 反正 Demo 是很有意思的,
而且 Demo 中间还很自然插进去笑点, 这个还是有点厉害.
总体感觉他们在驾驭演讲上面很好, 至少看过当中演讲技巧能耐的很多.
拿我自己上台紧张的跟他们比, 这个是有很大差距的. Lisp 也没笑点.

  • 举办活动

Lighting Talk 有几个是上去做活动预告的, AngularConf 之类的,
听下来觉得他们年度的会议可能还挺规律的, 预告也很明确,
不知道是专业团队在举办还是怎么样, 总之至少预告了两个活动,
天珑书局的人也提到会把一些店面用来做共享空间之类的, 没记清楚.
大陆这边活动相对来说没有那么明确. 但也不好对比, 其实小型活动挺多.

  • 敏捷开发

提到了很多次敏捷, 我以前反而没怎么听到. 但是大家对敏捷的定义似乎也不同.
搞不清楚, 总之 agile 听到了很多次, 也可能只是说小步迭代.

  • AMP

有两个 Keynote 是关于 AMP 的, 说的好像整个是很大的趋势似的.
前几年在大陆也听过, 但是 PWA 不是没有推动好嘛. 那边雅虎奇摩却做了.
好像他们挺感兴趣的, 这个让我觉得挺费解的. AMP 很强大的?

  • Vue React

遇到过讲师询问用过 React 举手, 用过 Vue 举手, 看下来真的挺多了.
大概的感觉一半一半? 可能 Vue 更多? 记不清了. Angular 反正是少的.
大会赞助方站台有看到 Laravel 社区的字样, 看上去也不少 PHP.
大会议题似乎是 Vue 多一些, 而且勾股毕竟是在 Keynote 上讲的.

  • Lisp

我分享的时候问 Lisp 多少人了解, 两个人举手都是我认识的, 尴尬呀.
应该是 Lisp 社区跟前端社区很疏远吧, 到场都没这方面的人.

  • 工作人员

会场工作人挺热情的感觉, 好几次引导我到前排讲师席就坐, 也蛮踏实了.
总是会一些感觉吧, 那边的人笑得时候多一点, 不像我整天老脸.

台北的印象

主要是为了去参会, 所以对于游玩没有做攻略, 台币也大部分靠赵洋帮忙了.

  • 街道

非常干净, 真的, 很多地方都是, 跟勾股还专门聊到了, 干净得不习惯.
而且我出捷运的时候, 地面, 天空, 墙体, 都是很干净的样子.
我们首先在的地方是 101 大楼附近, 算是繁华地段, 后面看很多都是.
勾股说很少看到灰尘, 我后来还注意找了找, 除了工地附近, 真的很少.
台北城区的绿化也是蛮不错的, 植物比上海杭州肯定高大繁茂.

  • 垃圾分类

夜市吃完有时候要分类, 会场的便当吃完要分类, 也还好.
夜市看下来地面也蛮干净的, 要找垃圾还是能找得到, 但想想差别已经很大了.

  • 支付

全家和 7-eleven 好像支持支付宝的, 其他就很少了.
至少夜市还有捷运站都要用到台币, 而我算钱已经很慢了.
夜市总共也就看到一两家是支持支付宝的, 少得可怜.
台币经常是即使的硬币, 还有上千的纸币, 汇率关系, 真是触目惊心.

  • 食物

两天被拉着吃海鲜我当时还是很害怕的, 万一吃了闹肚子, 我有前科的,
但结果料理很好吃, 我也一直没事. 夜市的东西也没怎么样.
那么我只能认为大陆的海鲜处理的不够干净所以我才闹肚子了.

  • 河道

几天去过的地方基本是韦字攻略上的, 自己找着去的只有河滨了,
不知道叫什么河, 我当时为了拍日落, 直接从西门町暴走过去,
但是隔着一道墙, 似乎是高速公路之类的, 有看到立交桥,
找着楼梯才走过去的, 感觉挺不容易了. 似乎只有一两个月出入口.
这跟上海杭州这边随随便便走到江边看江景差别还是有点的.

因为空气好, 整个日落其实很漂亮吧, 跟在陆家嘴江滨看到很像了.
不过江滨没有好好规划的感觉, 有些东西看着老旧, 虽然也挺干净.
我是在东岸靠近西门町位置看的, 不知道西岸怎么样.
我个人觉得江景比较能展现一个城市规划的眼界吧, 对于空间感的控制.
这一点上我觉得上海杭州还是很厉害的, 只是空气跟植被真的不如台北.

  • Hacking Thursday

会场遇到了一个 Clojure 台湾 telegram 群的朋友, 搭上话了,
然后去了趟 H4, 听了一些介绍, 没什么区块链, 倒是物联网有几个,
其他就是一样会提 Clojure, 会提 Nix, 会提代数, 会提算法,
也是在咖啡馆, 场面大小是差不多的, 其他没有仔细看了.

  • 天珑书店

关于天珑书店, 我在微博上发了, 那么多技术书真的觉得很震撼,
希望有一天国内也有类似的书店能出现吧, 对于程序员来说很赞了:
https://weibo.com/1651843872/...
https://photos.app.goo.gl/AHa...

其他

第一次出去看到比较不同的文化氛围, 还是很开眼界的.
不过技术方面, 因为都是跟随着英文社区, 似乎没有太多隔阂.
除了某些地方闻到几次汽车尾气, 整体的感觉空气是很好, 视野开阔.
没有机会去趟海边有点可惜了, 毕竟看海的机会真的是挺少的.

街上拍的照片 https://photos.app.goo.gl/mjs...
夜市扫的照片 https://photos.app.goo.gl/j7e...

查看原文

赞 9 收藏 0 评论 5

wusisu 赞了文章 · 2018-08-14

用程序员的方式打开台湾

参加这个会议是临时兴起,就是在一个非常巧的时间和地点做的一件恰如其分的事情,简直没有不参加的理由。再加上考虑到,只要有足够资本,谁都可以去台湾浪半个月,但不是谁都有机会到海峡对面去参加本行业内的技术交流,所以觉得这个机会更难能可贵。
我不是受邀嘉宾,而是作为普通参会者的身份,门票988人民币。这个身份有一个好处,在很多方面是利益无关的,比较不存在商业互吹的嫌疑,以下所有言论仅代表本人观点。

ModernWeb 的前一天晚上就和勾股、题叶、赵洋碰头去了趟饶河夜市吃各种好吃不贵的台湾小吃。

。。
在35度的高温下穿着长袖长裤的题老师,和又换了新发型的996勾股。
图片描述

ModernWeb 是18、19日两天在台北101旁边的一个会议中心举行,之前有听闻一些台湾互联网现状的评价,对此我还是非常好奇的。总的来说会议的流程、选题质量和大陆的会议没有差很多,有讲得特别好的,也有水到爆炸的,不过很多细节上融入了当地的文化氛围,更诙谐活泼和标题党。
图片描述

共笔

比较不同的地方在于台湾的听众普遍很喜欢拿着电脑在台下做笔记(而不是在埋头干自己的活写代码、聊微信,假装自己听了这个议题),大会也提供了这么一个叫“共笔”的共同笔记平台,大家会在积极地在上面公开分享自己的会议笔记,这是非常正向的交流;当然他们大会也应要求临时开了一个聊天室平台,但里面居然一直特别安静几乎没人说话。这要是放在我们大陆的会议上,想想都能知道肯定聊天室(微信群聊)热闹得不得了,各种刷屏的招聘广告和吐槽空调太冷了之类的,而“共笔”无人问津。

开场的小插曲

开场主持人就 cue 了一个我们的几个来自大陆讲师和我听了以后都立刻特别好奇和敏感的事,这个事是我们来自大陆的所有人之前都不知道的,甚至勾股作为出品人也是一脸懵逼,起码在我看来事情已经是非常严重了才会在主会场开场就提这茬,所以会后我们私底下也讨论了不少。按下不表。

印象比较深的议题

18日:
Jeremy Keith《Web的层次》
从社会学的角度去回顾了一下 web 的发展史,我觉得这个角度还是挺有意思的。
这张图感觉是又黑了一把 JS 吗哈哈哈哈……
图片描述

勾股《我为什么选择 Vue.js》
看标题会觉得是一个常规入门级别的安利会(我们事前还揶揄大陆的讲师过去的都是在做基础安利,放眼过去都是 Vue.js 入门,echarts 入门,ClojureScript 入门简直 low 爆了……开个玩笑啦:P)。但事实上不是这样的。从核心开发者的角度去讲这个关于选择的故事,比像我这种小白去讲关于选型的故事肯定有质的区别。其实我特别欣赏勾股的地方是每一个技术点他都能用有别于一般开发者的角度去思考,不局限于业务也不局限于工具和框架的“技术用户”的角度,包括会后和他讨论的一些关于 webpack 和 houdini 相关的东西也是,感觉这是另一个高度了。

19日:
尹哲《遗留代码经济学》
图片描述
我觉得这一场讲得非常好,内容是关于接手前人的坑的大众痛点,单测、内聚与解耦合、成本与技术债相关的软件工程管理方面的敏捷开发经验,信息量很大,例子有趣引人入胜,看得出是一个有自己沉淀的布道师,也因为议题说的是大众痛点,所以会后 Terry 的交流桌被围的水泄不通。(我们原以为 Terry 是新加坡人,后来得知 Terry 是大陆的,2011年才肉翻到新加坡)

Neo《From Traditional Web to Modern Web》
我去,我简直忍不住不单独挑出来吐槽这个议题,非常纯粹的标题党,水出了天际,整个议题内容随便找个在校的实习生学一天就能掌知识积累,真心还不如讲个 Vue 的 api 入门介绍都来得更有深度。(作为一个利益无关的普通参会者吐槽起来就是没包袱~哈哈哈!)

左耳朵耗子《Amazon 和 Alibaba 软件架构和工程》
这也是整体效果非常棒的一场演讲。标题就起得特别宏大,实际内容上也特别宏大,光看 slides 就特别能唬住像我一样的小白:P……大致说的是我们国内甚至全球的用户基数就摆在那里,不复杂是不可能的,这两家全球知名以电商为核心的平台,在面对那么大量级的用户数做的非常多的努力,叠了一层又一层的技术保障和管理思考。会场挤满了人,演讲结束后听众的掌声相当热烈,从会后收到的反馈来看也是最受欢迎的。耗子叔流弊~
image by 左耳朵耗子

刘艾霖 《使用 Swagger 协助你设计出更好的 API》
选择听这一场实际是因为对这个讲师本身的经历好奇,一个从业好多年依然在一线 coding 的自由职业 soho 女工程师,使用 Swagger 也是为了前后端及测试能有一个更好的协作文档存留,解决的是远程协作的开发模式遇到的沟通上的问题。议题本身的内容质量很一般,就是常规工具的 API 级别的安利,以及 get 到了大量的台湾软体开发上的与大陆不同的专业术语和俚语。

李维翰《SOLO - AMP》
这一次的 ModernWeb 上有两个大的议题都在说 AMP,感觉有点怪怪的,也许是因为国内墙的原因,AMP 几乎没多少动静(不要提搜狗搜索和谷歌的那个没什么实质作用的合作),而且我个人觉得 AMP 带来的新能力和体验远不如 PWA ……这个议题也是属于 AMP 及它的最新的特性的常规安利,不过讲师貌似是在台湾特别出名的布道师,印象比较深是因为用的雅虎奇摩的 Demo 略微奔放限制级。

我听了的议题不局限于以上几个,羡辙女神、赵洋等等等等我也有听,由于时间冲突而错过了题老师的那场我也是很无奈的哇。

闪电分享

还有闪电分享环节,光看标题就觉得特别有趣是不是:D,实际上就是非常有趣啊~~
《亲爱的,我把来电变成聊天室了!!》
《政府网站如何朝 ModernWeb 更近一步》(政府项目的文件都能公开谈,这是我们非常羡慕的地方啊。)
《网事不只能回味》
图片描述
图片描述
其实本来我也想报名上闪电分享的,而且经过这两天的洗礼,我在当下自认为 get 到了很多台式演说风格的精髓,我觉得我不会输的!……无奈很多内外的因素叠加以致于错过了这个机会:(

敏捷的医生护士

它是一个关于敏捷开发的面对面的交流,参会者是“病人”的角色来咨询,他们社群的敏捷资深人士作为被咨询的一方是“医生”,小护士们算是一些助手、志愿者(实际上她们都是 HR )……反正对于这个制服 play 的套路我是很服气的。
图片描述
图片描述
图片描述

餐食

这么说吧,我在台湾待了差不多半个月,我觉得台湾所有的食物都超好吃,除了这个大会提供的午餐,连“一般”都算不上。因为没有对比就没有伤害,所以印象比较深。
零食和饮料都是无限量供应的,最后结束时还需要硬塞给所有参会者们才能勉强发完,这点非常爽,虽然没有我爱吃和喝的……
议题之间的 break 有发小甜点,第一天的红豆饼还不错。
图片描述

交流

大陆的会议分享一般都是在一个演讲结束后安排公开 Q&A 环节;
欧美有时候是在一个大环节尾声时把刚才所有的讲师都请上台坐成一排来统一交流和提问;
台湾这个的不同点在于他们是把讲师单独请到一个区域,有桌子和椅子,在那里近距离面对面地与参会者交流,确实有点像病人来医院问诊的样子,双方说话也会比较小声,感觉会更有私密性,以至于其他人会不好意思凑近去听。
图片描述
老中医救救我!

三种官方提供的与讲师的交流方式各有利弊吧。

还有一点,这个大会并没有安排讲师之间额外的 Social 环节,议程结束了就什么都没了,算是我们从大陆过来的所有人都有点意外的地方。大陆的这类活动,我们的主办方至少会安排有讲师晚宴,哪怕不 Social,请远道而来的朋友们吃个好一点的饭总是可以有的。也不知道为什么这个会没有。

所以这几天晚上都是我们几个本来就认识的朋友们自己找地方吃东西。

这次大陆过去的“代表队”里面除了勾股以外都是第一次去台湾,所以各种都是勾股带飞,让我们一起感谢金主爸爸!第一天晚上勾股强烈推荐我们前一晚的饶河夜市小分队去了一家人均消费很吓人的日料店。在那里和特别热情的台湾老板娘聊到差不多十点半,后来羡辙伉俪、耗子叔也过来了,一直聊到十一点半,老板娘打烊了也没赶我们走,还送了我们很多小甜点。
图片描述

第二天参会结束后跟着题老师去了一个台湾本土的程序员例会活动名叫 Hacking Thursday,大概就是在每个星期四的晚上一群本土的程序员们找一家咖啡厅 Social 尬聊,然而感觉在这样一个工作日还能那么早下班来 Social 的都不是什么正经的码农啊哈哈哈……那么在这里我才算真正和当地的同行有交流(之前在大会上的都搭讪失败了……),他们中有算法的有做硬件的有 python 有 UE,和我之前了解到的信息差别没有很大,虽然了解也并不深。
图片描述
让我比较意外的是他们对大陆互联网当下的流行的元素大都比较了解,但我们并不了解台湾这边是什么情况,或者说是台湾本土自身也并没有产出什么带有自己特色的互联网的东西可供我们了解的,并且似乎也没有这样的氛围。还有一个感觉,到场的程序猿们都非常佛系和谦和,有别于在北京咖啡厅和硅谷咖啡厅里那种很多周身自带肃杀气场、谈笑间眼神都在放光的程序员。

天珑资讯书店

这是一个在台北很有名的计算机书籍专卖店,同时也是 ModernWeb 的赞助商之一,本来在会上的时候我们都没有很在意,是后来在和台湾的程序猿们交流的时候才知道这个书店有多著名,以至于后来我们几个都分别去了这家书店打卡。

台北现在仍然有非常多纸质书店,似乎阅读纸质书籍对于台北人民来说依然是一大刚需。
规模来说天珑书店算是比较小的,但里面包含的计算机类书籍之密集,特别是英文原版书籍之丰富还是有点被震撼到的。所以后来我又去了一次,在里面待了一上午,这场景仿佛让我回到了小时候,当年纸质书店还不像现在那么萧条,我爸每周末也总是带我去这样的计算机书籍特别密集的地方待一整天。
话不多说直接上图。
photo by 题叶
photo by 题叶
photo by 题叶

乖乖

勾股上台之前在讲台上摆了一包绿色的膨化食品,我们一开始都不知道是什么梗。后来才得知这是台湾的 ITer 之间一个很冷的梗,就是在服务器上摆两包乖乖零食,以祈求它们“乖乖”的,不要出意外,具体典故大家可以自己搜。台湾 ITer 还挺认这个的,味道也很好。
图片描述
图片描述

结尾

在台湾的这几天特意去接触了很多当地的工程师,也特意去了解了很多对岸的互联网状况,但总有一种管中窥豹般的不过瘾。
想起之前在ModernWeb上的搭讪总是会终止于我问的“你在哪个公司工作?”好几个台湾小哥都会一脸尴尬地说“啊?还要说公司的吗?”大概内心是在说:“公司名字说了你也不认识啊。”台湾叫得上名字的正经做 Web 的 IT 公司屈指可数,这些叫得上名字的公司还全都是大陆、美国互联网公司的分部,其余99%都叫不上名字。
也许是台湾整个大环境都很安逸,所以也没什么 Make Software Change Taiwan 的蓬勃野心。
我半开玩笑地和一个台湾小哥说,在大陆如果不至少熟练使用三大前端框架的其中一个的话是找不到前端工作的,那小哥一脸惊恐😱,因为他说他们公司的项目都是很悠久的项目,用的 jQuery,公司并不打算重构,也没有人打算折腾更潮的东西,维持现状够用就好。
这大概就是我所看到的台湾 web 圈了。

查看原文

赞 22 收藏 1 评论 11

wusisu 赞了回答 · 2017-04-17

解决vue-router 如何解决这样的跳转。

@wusisu 赞同他说的。(声望不够,不能点赞,尴尬)

解决的思路呢,就是他说的这样。

不过具体操作的话,首先:vue-router的data、activated 这些都是vue-router 1.x的。

而vue-router 2.x 的解决方法是这个:
导航钩子函数

const Foo = {
  template: `...`,
  beforeRouteUpdate (to, from, next) {
    // 在当前路由改变,但是该组件被复用时调用
    // 举例来说,对于一个带有动态参数的路径 /foo/:id,在 /foo/1 和 /foo/2 之间跳转的时候,
    // 由于会渲染同样的 Foo 组件,因此组件实例会被复用。而这个钩子就会在这个情况下被调用。
    // 可以访问组件实例 `this`
  },

(我的问题的解决方案就是在这里重新get一下服务端的数据。)

关注 10 回答 6

wusisu 赞了文章 · 2017-01-20

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

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

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

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

查看原文

赞 2 收藏 6 评论 5

wusisu 回答了问题 · 2017-01-15

我在服务器上,在 /etc/ssh/sshd_config中把Protocol 2前面的#取消掉就无法用ssh登录服务器了呢?

理论上去掉之后要重启服务才生效,所以已经生效了吗?

我对比了一下 v1 和 v2 的 Protocol,目测应该不会有什么问题。我自己用的也是 Protocol 2。
http://www.snailbook.com/faq/...

我猜测有可能是 config 文件有其他修改引起不能识别正常解析。

现在你不是问为什么,而是问怎么办。
那 ssh 不行,你只能直接登录了。

虚拟机的话,都有办法直接把屏幕投过来的。
比如 aliyun 的机子都可以在控制台看到屏幕,直接登录就好。

实体机裸跑请搬显示器和键鼠过去……

关注 3 回答 2

wusisu 关注了问题 · 2017-01-15

我在服务器上,在 /etc/ssh/sshd_config中把Protocol 2前面的#取消掉就无法用ssh登录服务器了呢?

请问:我在服务器上,在 /etc/ssh/sshd_config文件中修改了Protocol 2,把Protocol 2前面的#取消掉就无法用ssh登录服务器了呢?仅仅把Protocol 2前面的#取消掉后就无法登录了,怎么办?

关注 3 回答 2

wusisu 回答了问题 · 2016-12-07

解决微信网页版是用angular写的吗?

是的。

我看到其 libxxxxxx.js 文件内容有

See http://docs.angularjs.org/api...$sce",o)

关注 3 回答 2

wusisu 关注了问题 · 2016-12-07

解决微信网页版是用angular写的吗?

无意中看到, 代码里面很多angular的指令, 很少实际中看到angular的项目.
clipboard.png

关注 3 回答 2

wusisu 赞了回答 · 2016-12-01

应该先从angularJS , vue.js , react 这些框架中的哪个开始入手?

作为vue粉,当然推荐vue啦。
理由是:

  1. 相比其他几个比较容易上手,不必弄一堆构建工具也能直接使用(当然最好是有)

  2. 轻量,size比较小,加载更快,前端当然是喜欢小而美的东西啦

  3. 功能足够强大,大多数场景都有解决方案

关注 22 回答 19

wusisu 回答了问题 · 2016-09-18

解决为什么数组名为name时, 这个数组会自动转换为字符串?如此的怪异.

在 console 里的 var 是写到 window 上的。
var name = [1,2,3,4]; 相当于
window.name = [1,2,3,4];

而 window 的 name 属性应该是用Object.defineProperty设定了 get set 函数的。

你可以通过
Object.defineProperty(window,"name",{get:()=>[1,2,3,4]})
来设置 name

Object.defineProperty(window,"name",{get:()=>[1,2,3,4]})
console.log(Array.isArray(name));  // true
console.log(typeof name); // object

关注 5 回答 4

认证与成就

  • 获得 61 次点赞
  • 获得 12 枚徽章 获得 1 枚金徽章, 获得 2 枚银徽章, 获得 9 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

注册于 2016-01-12
个人主页被 1k 人浏览