Friday, 27 December 2013

面子书按赞的误区

有时候你去一个部落格, 或者你去一个商业网站,你可以发现按赞的按钮。

如图所示, 840人按赞这个新闻:




真的有840个人按赞吗? 

你确定那些真的是“按赞”吗?


让我考考你, 如果你分享那个页面的 link, 如图所示:



这张图跟840个人按赞, 有任何关系吗?


关系可大呢! 

这张图表示有11个人按赞, 就是刚才840个人按赞的其中11个。

5 个留言, 一个like,还有楼主状态内容的link, 总共是代表7个人按赞。

由于其中4个留言都是跟楼主的link一模一样,所以7个人再加4个人, 也就等于 11个按赞


如何证明? 你打开 http://api.facebook.com/restserver.php?method=links.getStats&urls= , 然后把要分享的那个link http://ent.sinchew.com.my/node/45854 连在后面, 就会变成:

http://api.facebook.com/restserver.php?method=links.getStats&urls=http://ent.sinchew.com.my/node/45854

你用网络浏览器打开它, 如图所示:


看见 <total_count>856</total_count> (之前是840个人, 我写这个blog的时候一直增加了。), 就是你在按赞按钮所看见的误导性数目。

其实, 856是有分享的总数 204 , 加上实际按赞的总数(包括你在别人的分享按赞, 也算进去), 还有留言的总数 60 (包括你在别人的分享留言, 也算进去)。

这就可以发现, 你用那link留言的时候, 留言的总数加1, 同一时间分享的总数也在加1。 也就一瞬间多了两个人"按赞"。 这一切不是什么魔术, 只不过是玩弄了手段而已。

至于那个click_count, 你就不用管它, 面子书的工程师一路来都很懒解决bug, 已经不是第一天认识他们了。https://developers.facebook.com/x/bugs/154778074716460/

当然这个方法还有其它用途,  比方说 Youtube 某个视频的统计功能被作者关闭, 你起码可以知道有多少人分享过在 Facebook, 当然, "仅限自己看见" 的权限的分享也一律算进去。

如图所示, "Stats have been disabled for this video"




你可以知道这个视频分享在面子书5次。也可由此得知, 你不是第一位分享这个视频的人。
(注): 如果是经由http://www.addthis.com/分享(比如说 http://www.dailymotion.com, 星洲网, ...), 会有任意的字母加上.facebook后缀, 从而大大降低这方法的准确度。无论如何, 人们还是常习惯直接copy链接的。 





那么当你发现你不是第一位分享那个 link 在面子书的人, 但是那个link是你很私人的link, 有别的跟踪狂在分享那个link, 虽然无法查出凶手是谁, 但是, 你起码可以知道什么时候发生。




比如说这张图是你的私密照, 但却发现有变态狂分享过。

你就打开 https://developers.facebook.com/tools/debug/, 然后把那个图片的link 粘贴在Debug, 然后按 Debug。





你就会看见图片的基本讯息。你就找 Graph API 右边的  https://graph.facebook.com/1391163281135034, 然后点击那个 link。


你就会看见 created_time, 如图所示, 2013年12月27日22时零4分54秒加上大马时间8小时, 也就是 2013年12月28日6时零4分54秒, 有人偷偷分享过这张图片链接。

updated_time 表示你现在查看的时间。

如果 updated_time 和 created_time 一模一样, 就表示根本就没有人分享过, 你是多心了。



这个时候你头脑转一转, 可能会想到有个不对劲的地方。 就是  updated_time 和 created_time 一模一样的时候, 你就变成了第一个分享的人! 当然, 实际上不是分享, 只不过第一个人查看而已。 但其实还是靠谱的, 因为如果有人用这个方法查看你的图片链接, 那跟分享也无区别, 都是表示你的link已经泄漏在某某人了。
(注): 请用上面开头的方法确定<share_count>超过零才做这个步骤, 否则一旦查看, 独有的graph.facebook.com/ID就会产生, 从而让你的那个私人链有可能曝光。



后话:

分享link不增加按赞的总数其实是有办法的, 如果在开始分享这个link的时候, 把图片还有简介统统丢掉, 再按 Post, 就可以了。这是stalker必须的。





干杯 :)











Tuesday, 10 December 2013

电脑小白基础知识 - 在面子書成为跟踪狂的方法之一 (加强版)


上一篇文章 (http://limkokhole521.blogspot.com/2013/12/facebook-stalker.html) 讲了方法之一,

但如果要跟踪某某人, 某某粉丝专页的整个 profile 大量的状态, 就显得很不方便了。

这篇文章教你比较方便一点的。


步骤 1 - 去目标的时间线 (Timeline):


打开 https://www.facebook.com/人名 或者 https://www.facebook.com/pages/粉丝专页名

比如说, 我的例子是某某人, https://www.facebook.com/seeling.wong.3





步骤 2 - 滚动 (Scroll)

你可以用滑鼠来滚动页面, 或者更快的方法, 一直按着 Page Down 键不放, 一直到底或足够多的地方就停。

唯一要留意的是, 每一月都要确保选择 “热点动态”的“所有动态”。




注: 通常该月(2013年12月)的 “热点动态”选项在最顶端是找不到的, 你必需滚动到大约十个以上的状态后才会出现。


步骤 3 - Console


然后在同一页, 随便一个地方, 用滑鼠按右键选 "Inspect Element".


新的窗口会在下方出现, 你就按上面的 Console tab


然后一次性复制(copy) 下面全部代码, 粘贴(paste) 上去 Console, 按Enter键。它就会自动把步骤二所有滚动了的贴子, 变成可以收到通知(notification) 的贴子。

(下面的代码是我临时学的, 我写的有点烂不要笑。:)



//get my fb_dtsg
var fb_dtsg = document.getElementsByName('fb_dtsg')[0].value;
//get target profile id
var ds = document.getElementsByTagName("div");
for (var z = 0; z < ds.length; z++){
if (ds[z].getAttribute('class')=='timelineUnitContainer') {
    var dgt = JSON.parse(ds[z].dataset.gt);
    var profid = dgt.profileownerid; break;
    }
}
//get target fbid
var phole = document.getElementsByName('feedback_params');
for (var j = 0; j < phole.length; j++){
    var lhole = JSON.parse(phole[j].value);
    if (lhole.actor==profid) {
        var fbid = lhole.target_fbid;
        console.log("Trying: "+fbid);
        var a="subscribe_action=true&ft_ent_identifier="+fbid+"&fb_dtsg="+fb_dtsg;
        var xhr = new XMLHttpRequest();
        xhr.open("POST", "https://www.facebook.com/ajax/ufi/subscribe.php");
        xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
        xhr.send(a);
    }
}






完毕后, 你在那页面可能感受不到改变, 这时候可以选一个贴子检查一下, 如果是普通的贴就按时间。 如果是照片就直接按照片。

比如说按时间  20 hours ago:




 分享(Share) 的旁边会冒出来 取消关注帖子(Stop Notifications). 表示成功了。





要注意的是,有些人是用新版的 facebook 版面, 要按右上角的箭头才可以找到 ”不再追踪帖文“





收到朋友留言通知的例子。




干杯 :)

Friday, 6 December 2013

电脑小白基础知识 - 在 facebook 成为 stalker 的方法之一


今天, 传授一招给有兴趣成为facebook stalker的人, 一个入门阶级。


步骤 1 - 懂得如何识别 ft_ent_identifier:

识别 ft_ent_identifier的方法我在上一个blog的尾端已经提到了。(http://limkokhole521.blogspot.com/2013/11/facebook.html)



首先, 看见某个post,我们按日期, 就比如按图中的 21 hours ago,


Ok, 留意上面的URL, /posts/ 的旁边, 10202654078332112 这组号码就是我们要找的目标 - ft_ent_identifier





但是, 如果是图片的话, 只靠这招其实是不完全靠谱的, 因为Facebook有一个概念叫 post story id, 我们要的 ft_ent_identifier 通常都不是 post story id。

所以, 如果是图片, 你必须按图片, 留意上面URL, 看fbid等于什么的号码,

比如说, 图中的 ft_ent_identifier 是 572533926162718 这组号码, 唯一要注意的是, 不包括后面的 &set=a.4904...





或者在那张图的页面, 也是一样道理。




步骤 2 - 懂得如何寻找 fb_dtsg:

fb_dtsg 是面子书防止 CSRF 攻击 的 token。

说真的, 找这个 fb_dtsg 有各式各样的方法, 但我就教其中一种手动的方法吧。

在facebook的页面的任何地方按右键, 选Inspect Element



你会看见出现新的 window,你可以拖拉上下拉高它。

Ok,在那个window的主要页面 任何一个地方用老鼠按一下,过后, 同时按键盘的 ctrl键 和 F 键。 左下角会有小小的长方格出现, 你在那个格子输入 fb_dtsg, 然后按 Enter键 来搜寻这个字眼。


看到黄色highlight这个fb_dtsg了吗? 这时候只要留意旁边的 value 就可以了。 比如说我的例子是 ABDEF5- (不包括关引号 "" )

ABDEF5- 就是我们要找的 fb_dtsg.


步骤 3 - 开始追踪:

我上一个blog已经教了如何使用console tab (http://limkokhole521.blogspot.com/2013/11/facebook.html)

无论如何, 我还是 show 给你 仔细的 step by step。

Ok, 上面的步骤一已经教了你如何寻找  ft_ent_identifier 目标.




所以, 126153180822194  是我们这次的目标.

步骤二也教了如何寻找 fb_dtsg

ABDEF5-" 是我的 fb_dtsg 例子.

把那两个组成下面这行, 你用你的ganti掉那两个 126153180822194 和 ABDEF5- 就可以了。小心注意不要有空格。

a="subscribe_action=true&ft_ent_identifier=126153180822194&fb_dtsg=ABDEF5-"

然后呢, 用回步骤二打开 Inspect Element 的window, 去选上面的 Console tab, 然后把整行字 paste 上去,按 Enter 键。

过后, 我们 copy 下面这行字, 也paste上去。

var xhr = new XMLHttpRequest();xhr.open("POST", "https://www.facebook.com/ajax/ufi/subscribe.php");xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xhr.send(a);

按Enter键, 如图所示。



Refresh 你的页面。


Refresh 页面之前;




Refresh 页面之后:


有什么区别, 当然有, 在Share 的旁边多了一个 "Stop Notifications" 的。就表示如果这个post有人comment, 你就会收到 notifications (状态提醒)。

必须注意的是, 有时候你得到的是 “Get Notifications", 这时候你就按那个“Get Notifications" ,它就会变成 "Stop Notifications"。

你没有comment, 没有like, 就可以在不知觉下收到 notifications, 恭喜你, 学会Facebook stalker的一招了。


我用另外一个account来test,那个account 一留言, 就立马受到Notification了。




如果那个人不是你的朋友, 你又无法comment来拿notification, 这招就更管用了。比如说我可以跟踪面子书创办人。




或者那个Fan Page ban 掉你, 你还是可以拿到Page admin/你的朋友在那里留言的notification。

DAP fan page banned 掉我, 但仍然拿得到notification。


干杯 :)

Wednesday, 13 November 2013

电脑小白基础知识 - 如何在 facebook 留言空白


方法 1


输入你的留言, 但不要按ENTER先。



指着那个留言, 按右键选 Inspect Element




找你刚才的留言, 如图中的例子, 可以看见 value="haha"。如果找不到, 可以Ctrl+F搜寻(切记, 不是在web browser按Ctrl+F, 而是按着那个内容按Ctrl+F)。




双击 value="haha"。




haha 编辑成 &#8205;




按ENTER。你会发现无端变成 value=""



看回你的留言,haha 留言还在,不要改任何东西, 直接按ENTER留言。



最后, 就成功留言空白了。



这个方法的缺陷是, 按 Inspect Element 查看它的代码,  能找到 &zwj; 这个痕迹。







方法 2

右键选 Inspect Element。选Console 这个tab, 然后输入 "\u00AD"。 按ENTER。





这时候你要幻想这里有三个字, 第一个字是开引号, 第二个字是看不见的字, 第三个字是关引号。 右键 copy 那三个字, 包括双引号 ""。




paste上去你要留言的地方。




这里要小心, 我上面讲幻想三个字, 因为第二个字看不见。 

我用 | 当作老鼠的指标。 你要让老鼠箭头按在关引号的后面

""|

然后按一次Backspace 删除掉关引号,记得, 只限一次Backspace。就会变成

"| 

然后按键盘的左箭头, 让老鼠指标坐落在开引号的前面。

|"

然后按一次键盘的右箭头,记得, 只限一次右箭头。就会变成

“|





然后按Backspace删除开引号。就只剩下空白。按ENTER。




最后, 就成功留言空白了。



这个方法, 不会像 方法(一) 那样留下&zwj; 的痕迹。



方法 3

在facebook的post, 右键选 Inspect Element。然后, 按 Network 这个 tab.



为了不要让Network traffic 自动scroll, 左下角有黑点, 按下他会变红色。



去看回你的 post, 随便comment 一行字。



然后留意 Network tab 的东西, 你会发现 add_comment.php 这个东西。按add_comment.php



然后留意 Headers tab下面的内容。



scroll去中间的内容, 找 From Data 这个题目。你只需要看的是ft_ent_identifier, client_id, 和 fb_dtsg 三个数值。




这个时候可以打开 notepad 整理上面看到的数值。copy&paste。

 ( 注: 图中的数值 10102345678901234, 123456789012:55661213, ABCDEFG7 是例子而已, 把那些数值换成你上个步骤看到的数值)





把冒号 : 变成=, 切记不要留任何"空位", 比如说改成 client_id=12345, 而不是 client_id = 12345。 然后, 把那三个数值用 & 连起来


还有一个重要的事, client_id 的数值, 123456789012:55661213, 把冒号改成 %3A, 
也就变成 123456789012%3A55661213
记得一点, 不要有任何空行哦。

到这里, 就有了

ft_ent_identifier=10102345678901234&client_id=123456789012%3A55661213&fb_dtsg=ABCDEFG7

然后, 后面加上 &comment_text=&attached_photo_fbid=12345

12345是随便的号码, 你可以放你喜欢的, 放1都可以。

就变成

ft_ent_identifier=10102345678901234&client_id=123456789012%3A55661213&fb_dtsg=ABCDEFG7&comment_text=&attached_photo_fbid=12345


然后前面加上 a="

后面也加上 "

最后我们得到

a="ft_ent_identifier=10102345678901234&client_id=123456789012%3A55661213&fb_dtsg=ABCDEFG7&comment_text=&attached_photo_fbid=12345"

然后在facebook里头, 按右键去inspect element, 然后选 console tab, 在那里, 我们paste上去


过后, 我们copy这行字, paste上去

var xhr = new XMLHttpRequest();xhr.open("POST", "https://www.facebook.com/ajax/ufi/add_comment.php");xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");xhr.send(a);



我们可以看见, Facebook 伺服器告诉我们 500 Internal Server Error。

然后, 你要 refresh 你的page, 来看最新成果。


最后, 就成功留言空白了。




这个空白比之前两种方法特别的地方在于, 用inspect element检查的时候, 你会发现最内侧的一行span消失了, 这里就不必细述了。



问题来了, 如何留言在别人的post? 只要改上面提到的 ft_ent_identifier 数值就可以了。 就是 Post Object ID 来的。 那么, 如何查找 Post Object ID?  

很多方法。 你可以按日期/时间, 打开 Post 那页面。


然后留意上面的 URL, 在 post/ 的右边那个数值。


如果你是按照片的话, 留意 fbid= 的数值, 一直到 & 为止。比如说 fbid=12345&lala=abc&..., Post Object ID 数值就是 12345