iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 5
3

爬蟲始終來自於墮性系列 第 6

牛刀小試 - IT 鐵人瀏覽數

好的,經過幾天的基礎建設,想必大家也都躍躍欲試了,我們今天正式進入實作部分。在每次實作,我們都會分為幾個步驟:

1. 起源,定義目標

在最一開始,我們一定要知道為什麼要寫著個爬蟲,和目標是什麼。因為在研究爬蟲的過程當中,會產生很多資料,很容易令人眼花撩亂,有些資料對我們有用,但更多的資料是在我們這次的範疇當中無用的,若我們花太多心思在枝節上面,反而會讓我們更難找到核心道路。所以在實作的過程當中,只留下必要的路徑和程式碼,其他東西,不知道的、不必要的,一概不放進我們的 code。

2. 實際探訪

當我們有了明確的目標之後,我們需要人工手動走一次最正式的流程,例如我今天要爬取 FB 的個人文章頁面,那我會開啟無痕視窗,包含我輸入某個網址、點了某個按鈕、送了某個 request,這些都必須一步一步走,走的過程當中,同時腦袋會開始思考「這個動作有沒有難度」。

3. 分解研究

在我們走完整個流程後,我們會針對整個流程下去分解,分成若干個小步驟,亦即說,若我每個步驟都完成了,那麼這個完整的流程就可以確保沒有問題。分解完後,打開 postman 一步一步去模擬每個步驟的 request。在模擬 request 的時候,我們也必須清楚 request 要送出的參數是否都能在我們的掌控之中。

4. 實作程式碼

最後,我們會開始實作程式碼,在這個階段,我會建議各位把每個步驟都當成是一個 function 來撰寫,一個一個完成。在完成所有 function 之後,我們再將整個邏輯像是樂高積木一樣組合起來。

那就讓我們來開始牛刀小試吧!


定義目標

在參賽的過程當中,我都有觀察到訂閱數和瀏覽數,似乎是一種人氣,那我能不能為自己增加點人氣滿足自己小小的虛榮心?如何增加瀏覽數是我這次的目標。

實際探訪

點擊文章瀏覽增加

我發現我只要點擊文章,瀏覽數就會增加,看起來好像有點眉目,我猜測可能只是文章網址開啟時候的 counter。


重新整理網頁也會增加

如此一來,我直接 refreh 文章頁面,觀察看看瀏覽數是否有變化,果然如我所預料。


無痕重整也會增加

接下來為確保不會受其他因素影響,我打開無痕視窗,再重新 refresh 文章頁面。瀏覽數持續有變化,這個時候嘴角就開始上揚了。


分解研究

在這探訪的過程,大概已經確定只需要送一個 get request 到該頁面,我就能模擬這個動作,那直接使用 postman 來測測看吧。

postman 模擬 get request

確定模擬試成功的,就能進入程式撰寫階段了。


實作程式碼

只有一個 request 的 get method 發送,那麼程式碼就非常的單純

var request = require('request');
request('https://ithelp.ithome.com.tw/articles/10190796');

實作之後確認可以增加瀏覽數,那就來跑個迴圈吧!

var request = require('request');
for(var i = 0; i<100; i++){
    request('https://ithelp.ithome.com.tw/articles/10190796');
}

既然知道了他只收 get request 就會增加,那麼殺雞其實不用牛刀,我們直接對他做 ab 就好了XD
https://httpd.apache.org/docs/2.4/programs/ab.html

ab -n 100 https://ithelp.ithome.com.tw/articles/10190796


好的,滿足了小小虛榮心,那我們下回再見...
ps. 請工作人員不要砍我的文章QQ


上一篇
小插曲 #1 - chrome v62 踩中地雷QQ
下一篇
好想工作室與他的參賽者們
系列文
爬蟲始終來自於墮性11
0
King Tzeng
iT邦新手 5 級 ‧ 2017-12-08 00:12:06

大大好強XDDDD (跟著學起來/images/emoticon/emoticon31.gif

Howard iT邦新手 5 級 ‧ 2017-12-08 00:22:55 檢舉

教學相長,你的鼓勵就是給我們最好的支持

0
牛哥
iT邦研究生 1 級 ‧ 2017-12-08 00:22:43

iT邦公開的秘密!
還是別濫用才好~

Howard iT邦新手 5 級 ‧ 2017-12-08 00:23:36 檢舉

噓...不要告訴其他人...

牛哥 iT邦研究生 1 級 ‧ 2017-12-08 00:25:19 檢舉

/images/emoticon/emoticon39.gif

eyelash iT邦新手 5 級 ‧ 2017-12-08 00:52:08 檢舉

絕對不會說的...只會幫忙衝高人氣XDD

1
海綿寶寶
iT邦超人 1 級 ‧ 2017-12-08 08:57:53

ab -n 100 https://ithelp.ithome.com.tw/articles/10190796

提醒你一件事
iT邦幫忙有防止DDOS的機制
來自同一IP短時間內連續大量的request
是有可能會被ban的

為什麼我知道?
因為我就被ban過
/images/emoticon/emoticon52.gif

Howard iT邦新手 5 級 ‧ 2017-12-08 09:29:41 檢舉

基本上這不是拿來惡意衝高人氣的XDDD
技術本身沒有好壞,端看怎麼用他和理解他
因為了解如何用他,才會知道如何防範

再來提一下 IP ban 的狀況(純技術討論,千萬不要嘗試...)
基本上這是一種攻防
你來衝人氣肯定會使被 ban 的風險
而更進一步簡單的就是 proxy or vpn 換 IP
或者有自身高流量的網站
也能夠透過 jsonp 來讓使用者多發個 request
不過以上都有被發現的線索就是
/images/emoticon/emoticon58.gif

2
逮丸逮丸
iT邦大師 1 級 ‧ 2017-12-08 09:21:24

怎麼防止這種靠程式造訪而非真人在瀏覽的點擊計數,
對這個不是靠點擊數為依據來營利的網站,
只要沒造成運作上的阻礙或過於濫用,
大概不會太過理會,
但對於靠點擊來付費或營收的廠商,
怎麼防這種 Click Fraud 點擊詐欺 就是個有趣的議題了。
這篇 How to Prevent Hackers from Using Bad Bots To Exploit Your Website 是不錯的綜觀這方面議題的開始。

Howard iT邦新手 5 級 ‧ 2017-12-08 09:30:47 檢舉

拋磚引玉,感謝大師

我要留言

立即登入留言