目錄
前言
北京時間23日凌晨1點,蘋果WWDC2020大會開幕。在發布會上,蘋果正式發布了新版macOS,並將其命名為“Big Sur”。
相比於外界爭議最大的UI界面,令我更為關注的是這次的系統動態壁紙,跟過去幾年的版本更新一樣,這次的macOS系統版本命名也取自自然景點的名字,即“Big Sur”,好像是在加州西海岸的一個景點,而且這一版動態壁紙依然支持根據時間變化進行明暗的切換,總之很好看就對了,超想要的!於是我開始在網上尋找最新的這一版本動態壁紙,幸運地,最后讓我找到了這個神奇的網站:
「https://dynamicwallpaper.club」
需要注意的是,這個網站需要科*上網才能打開,並且需要登錄才能查看網頁包含的動態壁紙
登錄進去之后,在首頁Gallery選項的位置,可以看到不僅有最新的Big Sur壁紙,還有許多macOS支持的動態壁紙,有很多還是5k級別的質量,點進去之后就可以找到下載壁紙的按鈕
下載流程很簡單,基本下載到本地就可以為我們所用了
除了最新的這款壁紙,網站里很多精美的壁紙也很值得一試
這個時候我又想,這么多壁紙要是一個個下載得多麻煩,要是有什么方法能夠一下子把所有的壁紙下載下來就舒服了!
爬蟲篇
好久沒有寫爬蟲程序了,練練手
(這里比較長,可以直接跳到這里獲得壁紙資源:壁紙使用篇)
首先還是上一張圖的位置,在點擊下載按鈕的同時,我通過瀏覽器的開發者工具捕獲到這些請求:
點開下面這一條請求,發現它是這樣的
接着復制這條請求的url,粘貼到瀏覽器地址欄,這個時候壁紙馬上進行了下載,於是現在我們可以確定:
這條請求就是這張big sur壁紙的真實下載鏈接!
https://firebasestorage.googleapis.com/v0/b/dynamic-wallpapers-6a7ab.appspot.com/o/wallpapers%2Fdgvrihxpu2h%2FBig%20Sur.heic?alt=media&token=38f034ba-5ebb-4891-b483-35f0a82476cd
按照以往的經驗,一般同一網站下的同一格式的資源,其鏈接都會遵循同一規則或方法來進行命名
也就是說
我們可以通過這條鏈接,找到跟其他壁紙鏈接同樣的命名規律,進而得到其他所有壁紙的真實下載鏈接!
說干就干
現在讓我們來分析一下這條請求
首先從前到后,一直到wallpapers這里,都沒有出現一些特殊的符號或字段,預估這些應該都是需要加上的字段,並且不是唯一的
經過反復的測試,我發現包括其他的壁紙在內,其實所有的下載鏈接不同點就在於這三個地方:
https://firebasestorage.googleapis.com/v0/b/dynamic-wallpapers-6a7ab.appspot.com/o/wallpapers%2Fdgvrihxpu2h%2FBig%20Sur.heic?alt=media&token=38f034ba-5ebb-4891-b483-35f0a82476cd
- token
最先發現的是最后一個字段,由於“token”這個字眼真的太明顯了,按照經驗基本可以確定這是一個唯一參數
- name
再往前看,到“Big%20Sur”這里,很容易地發現這是壁紙的名字(其實我觀察了很久才發現
比較特別,有個“%20”,原因是名字中間的空格被“%20”這個字符串替代了
- id
最后一個參數也是最難發現的,最后通過比對首頁壁紙列表的網頁源代碼,我發現這個字段是存在在每個壁紙的跳轉鏈接中的
在此暫時稱這個參數為壁紙的id
ok,前兩個參數(id,name)我們已經了解了來龍去脈,比較容易獲取,最后比較麻煩的是這個token
同樣是在一開始big sur壁紙詳情頁面,復制真實鏈接中token的值,粘貼到開發者工具的搜索框,這個時候我發現可以匹配到幾條包含token值的請求
點進去第一個,在右側的請求返回信息窗口,最后一行可以找到token值“38f034ba-5ebb-4891-b483-35f0a82476cd”
好家伙,原來藏在這!
現在我們可以得知,token值其實是通過訪問這條請求,在返回的信息中獲取到的,而且是“downloadTokens”鍵的值
這樣一來就簡單多了,我們只需要通過訪問這條請求就可以拿到token值!
點開上面這條請求的headers選項,可以發現它的請求鏈接是這樣的:
emmmm,是不是有點眼熟? 沒錯,里面包含的兩個特殊字段都是我們之前見過的,一個是壁紙的id,一個是壁紙的名字name
獲取三個參數(id,name,token)的相關代碼:
到這里難點都基本解決了,后面就從首頁的壁紙列表逐頁爬取即可
網絡請求用的是requests模塊,文本解析用的是etree和正則表達式re,都是python源碼自帶的
開始爬取...
牛逼,全部爬下來了!
壁紙使用篇
現在已經獲取到了動態壁紙,即macOS支持的文件heic動態壁紙文件
所有的壁紙下載鏈接放到這里了:http://billie52707.cn/true_heic_urls.html(同樣需要科*上網才能下載(手動doge
設置壁紙的方法如下:
- 打開終端,輸入「open /Library」,進入放置壁紙的文件夾:/Desktop Pictures
- 將heic壁紙文件拖動到/Desktop Pictures文件夾下
- 桌面右鍵,設置桌面背景,即可設置下載的壁紙,效果如下:
awesome!
后記
某hub地址在這:https://github.com/chenxuefan/Dynamicwallpaper
后面可以加個按照壁紙分類來下載的功能,還有圖形界面
不說了,做作業去了