Cookie 突破PPT 八卦版十八禁限制-網路爬蟲系列( 含影片與程式碼)

zino lin
誤闖數據叢林的商管人Zino
5 min readMay 11, 2020

相關文章:
幫助Python新手度過陣痛期的關鍵功能!整合開發環境 Spyder三大功能
你也可以輕鬆爬取台灣第一位武漢肺炎確診資訊!

台灣PTT 文章標題,大概是新手學習網路爬蟲最熱門的選項了!台灣PTT不僅沒有太多高難度的限制,也真實的可以爬到許多有價值的資料!本篇會使用前一篇《一個觀念,開啟Python 網路爬蟲成長之路!》文提到的 “Get 請求” 來模擬使用者開啟網頁的行為

圖1、PTT八卦版網頁樣貌

嘗試爬資料

如同《第一支爬蟲:輕鬆爬取台灣第一位武漢肺炎確診資訊!》中一樣,都是使用Python 實作網路爬蟲抓取網頁程式碼。所以一般初學者把上一篇文章的code 來使用大概會改成這樣:

Code 1 、抓PTT八卦版程式碼

但執行後通常會發現!

結果根本沒抓到任何八卦版的文字!

圖2左為:期待執行程式碼得到的資料、圖3右為:實際執行後取得的資料

八卦版十八禁限制

結果會發現原來是被網路分級限制給擋住了(圖4)!我相信這也是不少讀者未滿18歲時按過同意的按鈕八XD(被拖走…。那要如何突破限制呢?

圖4、PTT 八卦版十八禁限制

透過Cookie突破限制

或許有些聰明的讀者已經發現了一些端倪。讀者自己在看PTT八卦版時:

不是每次都要按”18歲同意”按鈕 !

圖5、PTT網頁會記錄使用者已經按過,第二次到網頁就不用按了

那到底PPT 八卦版網頁是怎麼紀錄我們已經按過這個按鈕的呢?

這時候就要談到一個東西叫做Cookie拉!你可以理解成:

Cookie 就是一個方便紀錄使用者一些行為的地方。

所以網頁工程師時常會把一些沒有安全疑慮的資料存在Cookie中。如:登入狀態、Google Analytics追蹤碼…等等。所以你為什麼每次點了某個商品的官網,後續就會有一大堆那個商品的廣告出現也是因為Cookie拉XD

查閱網站Cookie

如何看Cookie到底是存什麼呢? 這時我推薦使用Google Chrome ,可以按下F12 開啟發者模式。就可以幫助我們觀察:

按下內容了”18歲同意”按鈕後Cookie的變化!

查閱步驟為:

  1. 打開Google Chrome 且開啟無痕模式,連到PPT八卦版網頁
  2. 按下F12 開啟”開發者視窗”或者在任何網頁按右鍵>檢查。(Mac:Fn+F12)
  3. 點選啟發者視窗上方工具列中的Application。
  4. 點選左方 Storage>Cookies> https://www.ppt.cc。
  5. 點選”18歲同意”按鈕。觀察變化!
圖6、詳細步驟實踐

你會發現根本網頁只是記錄了一個:

Name為over18、Value為1的Cookie。

Python 使用Cookie 越過18禁限制

相信聰明的讀者會發現,只要在把程式碼中加入Cookie一同傳送就可以越過了!那要如何實踐呢?這就跟HTTP協定原有關。通常發送”get請求”時,會夾帶一個Header。透過Header來把一些資訊傳送給網頁伺服器。Cookie就是存在每個”get請求”的Header中喔!

圖7、真實請求

所以我們只要在Python 程式碼中加入 header :over18=1就好了喔!

圖8左、為當時的八卦版; 圖9右為程式碼執行結果。

其實只要懂得網路原理,是不是就可以輕易突破了呢XD?

--

--

zino lin
誤闖數據叢林的商管人Zino

HI!我是Zino! 我曾任數據分析新創CTO且擔任過資策會與外貿協會Python講師。目前回到學界當菸酒生中。努力分享自己的經驗與所常!幫助更多人前進💪