大衆點評反爬蟲簡單研究之一

前言

前幾天因爲要和大學同學聚會,所以看了一下大衆點評。在刷一家餐廳的點評時看到了一個廚師的名字,就好奇這是誰,然後就複製名字準備去搜一下。點評做了防複製,當然直接用瀏覽器開發者工具或者查看源代碼可破。就在用瀏覽器開發者工具的時候,發現了部分字被替換成了<svgmtsi>標籤,猜測是作爲一種反爬蟲的手段,就稍做研究了一下。

分析

通過Chrome開發者工具可以看到,部分字被替換成了類似於下列的代碼:

<svgmtsi class="review"></svgmtsi>

在審查元素中出現,可以在網頁源代碼中看到對應的Unicode編碼。

<svgmtsi class="review">&#xe1ee;</svgmtsi>

或者,可以通過js轉換成對應的十六進制(當然這不是必要的,只是順便玩了一下- -)。

''.charCodeAt(0).toString(16)
// e1ee

在開發者工具中可以看到review類使用了PingFangSC-Regular-review字體,且在對應的CSS文件內有該字體的定義,可以下載其woff文件。

@font-face {
  font-family: 'PingFangSC-Regular-review';
  src: url('//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/4a0affb9.eot');
  src: url('//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/4a0affb9.eot?#iefix')
      format('embedded-opentype'),
    url('//s3plus.meituan.net/v1/mss_73a511b8f91f43d0bdae92584ea6330b/font/4a0affb9.woff');
}

.review {
  font-family: 'PingFangSC-Regular-review';
}

將該woff文件轉爲svg格式後,可以看到其中有e1ee對應的字體定義。

<glyph glyph-name="unie1ee" unicode="&#xe1ee;" 
d="M404 644h-161q30 75 47 164l-72 10q-13 -90 -43 -174h-93v-711h70v86h182v-57h70v682zM152 86v219h182v-219h-182zM152 370v206h182v-206h-182zM578 412l-58 -36q104 -123 165 -222l57 40q-56 93 -164 218zM921 643h-319q27 78 44 167l-71 9q-38 -213 -143 -360l43 -57
q58 77 100 171h275q-3 -432 -12 -517q-12 -77 -82 -77q-46 0 -109 3l17 -66l102 -4q126 1 140 115q15 118 15 616z" />

除了使用字體庫外,發現大衆點評每次請求的頁面中被替換的字也不相同,而且不同的時間點請求到的字體文件也不同(未確認)。

結束語

本文只是對使用大衆點評使用字體庫作爲防爬蟲方法作了初步的分析,以後有機會的話可能繼續對其進行深入的研究。由於不是因爲爬蟲的用途,所以文中也混入了一些奇怪的東西- -。

因爲不是專門搞爬蟲的,所以暫時也就沒有深入想如何去想如何去解決爬取該數據的問題。因爲每個字對應的unicode都是相同的,可以先下載woff文件整理出unicode對應的字。當爬蟲遇到<svgmtsi>標籤時,就可以使用其中的unicode去查找對應的字。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章