美團店鋪數據抓取 token解析與生成

美團、點評網的token都是用一套加密算法,實際上就是個gzip壓縮算法。加密了2次,第一次是加密了個sign值,而後把sign值帶進去參數中進行第二次加密,最後得出tokenpython

  1. 分析請求

   打開上海美食, Network 抓包看一下,能夠看到一個請求: getPoiList?cityName=XXXXX, 其中返回的就是咱們想要的數據web

咱們打開這個請求看一下, 都有哪些參數
算法

其中, uuid 和 _token是咱們須要注意的
咱們全局搜索一下 uuid 的值 , 發現uuid 就在咱們當前頁面返回的結果中, 咱們能夠直接拿來用
函數

_token 參數 是通過加密後的結果, 是有時效性的, 因此接下來咱們要解析它測試

2.解析Tokenui

美團token的加密算法比較簡單, 編碼

  • 加密: 二進制壓縮, base64編碼
  • 解密: base64解碼, 二進制解壓

定義解析token的方法加密

def decode_token(token):
    # base64解碼
    token_decode = base64.b64decode(token.encode())
    # 二進制解壓
    token_string = zlib.decompress(token_decode)
    return token_string

而後獲取美團的token,調用decode_token方法進行解析:spa

eJxdjltvgkAQhf/LvkpkF3eFmvRBqqJYlAXxQuPDclGwogirCE3/e9fUvjSZ5JyZ8+VkvkAxiU
APQfgCoQRucQF6ALVhuwskwEuREFV5hFqXICSB8N9NJRIIiuUA9D40UaAq3e3j4Ij9A2E
MJVG7lX6tpqpbScFiHsxEICDhPC97slwm7SxO+ZWd2uE5k4Uvk1QWLwCBZguBCv18Kn
sq/9st8bNgy3R/Ei42q+PBQ5eq6dMkbrmJz2p/XmH9nU5WznIaNZ3+XS/GtG7Mw5CN1u
m48xZmOi2xA5ka31v2SzDpO3ZRNWy/0Hf1gMibaV+9ZfiWkQ5xjwYxrItHcboeWJfCmy
bEsOvu9O6k8dHS/HI9w9cyjjQYRxvdpfnQZgFdWriZrS6jsEbehmWLpvAD7uK91zJpwHy
tFdLd+q043eemV+8OnWWVE04QwzjKbWMcRGcbWePVPljImxuXUc5nK0OBSqCZzB1Z
r+D7Bx2Uick=code

{
    "rId"100900,
    "ver""1.0.6",
    "ts"1571759551178,
    "cts"1571759551234,
    "brVD": [387726],
    "brR": [
        [1440900],
        [1440877], 2424
    ],
    "bI": ["https://sz.meituan.com/meishi/c227/"""],
    "mT": [],
    "kT": [],
    "aT": [],
    "tT": [],
    "aM""",
    "sign""eJwdjU1KBDEQhe8yiyzzR/e0CFnIrASZnQcok+qZwk7SVCoDehYvIS48kZ7D4Op9PN7PARjhMQWrIggO8H5RkeTtDBnD7/fnz8eXSlQK8qn2Ig8iPFKq7kK5t1NNGJxVlelC5Zm3cBXZ270x7V1nJOlQdKzZDG5XMnHMG7XDZbSGsIzd4PxR7RvIWjkPm6m9PuENt8GtsgTVG/6f9k4pHFdv07LGF/R+WlyCdQLt5sXN891sJ+201fbwB3meSgc="
}

其中 ts 就是時間戳參數, cts = ts + 1000, sign(sign一樣通過壓縮+base64編碼,用上面的解碼函數能看到sign參數,sign參數基本都是一些get提交的參數,均可以在頁面源碼找到), 其它參數保持不變便可

3.測試結果

能夠看到, 可以拿到正確的數據至此,解析token和生成token的過程已經講解完畢,若是你以爲筆者寫得還不錯,請點個贊!

相關文章
相關標籤/搜索