<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          爬蟲 | 五八字體反爬

          共 1043字,需瀏覽 3分鐘

           ·

          2020-03-12 23:24

          作者丨木下瞳來源丨木下學(xué)Python



          前言

          58二手車:

          https://sz.58.com/ershouche/pn2/?PGTID=0d100000-0000-4e81-5801-e3cfbaae2802&ClickID=120


          fe1a75650ce416c4dd1021290b2664bc.webp



          小編想爬一爬58同城的二手車,了解一下,爬取過程中在二手車的信息詳情頁,發(fā)現(xiàn)交易價的數(shù)字是加密過的:




          我們來看一看怎么獲取正確的數(shù)字。




          字體文件獲取

          查看源代碼發(fā)現(xiàn),源代碼里面返回的和我們右鍵檢查的不一樣:



          fb762e05571aac7c9b8d9982c513125f.webp


          這是因為現(xiàn)實源代碼里的數(shù)字加密了后,渲染到前端,以那些牛鬼蛇神的樣子出現(xiàn)的。

          字體加密,就會涉及到字體文件,字體文件后綴一般為 woff,ttf,我們在源代碼里面搜索,由于太長,分兩張圖:



          65650eba97a62ce95c9175615dbc6a55.webp
          c8b3f572d25b098b7865e51b6dec015f.webp


          可以看到,這就是字體文件的鏈接內(nèi)容,我們需要得到字體文件內(nèi)容。

          在這里看到了 base64,說明它后面這一串,也就是兩個箭頭之間的字符串的 base64 編碼過的,這些字符串就是字體映射的內(nèi)容。

          src:url 后面一直到第二個箭頭這段字符串是一個 url,訪問這個鏈接,就會下載字體文件,由于 58 每一頁的字體映射都不一樣,這樣每次請求會增加網(wǎng)絡(luò)請求的時間。

          所以我們采取 base64 解碼,把兩個箭頭之間的字符串解碼,解碼的結(jié)果是二進制的,寫入文件,后綴為 woff:


          f0f4e77d751751e209947da8dad6b86e.webp


          這樣我們就獲得了字體文件。




          ?字體映射?

          由于我們不經(jīng)過字體破解,直接爬取源代碼得到的字體是:

          驋閏.齤

          這樣的形式,我們就以這個來說明怎么轉(zhuǎn)為正確的數(shù)字。

          我們得到的字體文件,可以用 fontTools 庫打開,我們需要另存為 xml 文件,這樣是方便打開 xml 文件分析映射:


          ef092963dfa1e8af37036cee9e14391c.webp


          打開 xml 文件,有兩個重要的部分:



          f6d403ff0c834dc37c2893e86ca52210.webp


          驋 我們來看,&# 對應(yīng) code 屬性的 0

          0x9a4b 對應(yīng) name 屬性的?glyph00003

          name 的值為 glyph00003 對應(yīng)的 id 屬性為 3

          由于是從上往下是從 1 開始,所以需要減一,才是映射的數(shù)字

          可以通過 xml 庫讀取 xml 文件來進行字體映射轉(zhuǎn)換:


          60f96097107540675c23b4ff91b562b5.webp


          我們看看是否對應(yīng)上了:


          5774a2e7324320d02a401f75dd339c7c.webp
          8cdd5df7c3cb0c08aa80987789c77ad6.webp
          df643219ba00798500cd020929a1d69a.webp


          這樣我們字體反爬就破解了。

          小編爬取的是深圳二手車的數(shù)據(jù),爬蟲已寫好,想要爬蟲的小伙伴可以去獲取,來看看小編爬取的結(jié)果:


          523f4dd517cfffbeceed44abc0253e55.webp

          eea53815932b2eb13254add4faee9c7b.webp

          近期精彩內(nèi)容推薦:??

          c3024302b6855aede464c65a2e215a3e.webp?程序員這碗青春飯,怎么吃得更久一點?

          c3024302b6855aede464c65a2e215a3e.webp?順豐小哥連升3級,國家授予特別獎!

          c3024302b6855aede464c65a2e215a3e.webp?狠人 Spring Cloud 20000 字總結(jié)!

          c3024302b6855aede464c65a2e215a3e.webp?python實現(xiàn)文件自動歸類




          80bf2af2677ad7310e21a9b18599c5f5.webp

          在看點這里28dd4c8a66c7426efc4a06b0f5e5dc06.webp好文分享給更多人↓↓

          瀏覽 76
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  成人日韩AV| 上床操的我好爽 | 四川操逼网站 | 麻豆三级电影视频 | 欧美性掹交xxx |