美團、點評網的token都是用一套加密算法,實際上就是個gzip壓縮算法。加密了2次,第一次是加密了個sign值,而後把sign值帶進去參數中進行第二次加密,最後得出tokenpython
- 分析請求
打開上海美食, Network 抓包看一下,能夠看到一個請求: getPoiList?cityName=XXXXX, 其中返回的就是咱們想要的數據web
咱們打開這個請求看一下, 都有哪些參數
算法
其中, uuid 和 _token是咱們須要注意的
咱們全局搜索一下 uuid 的值 , 發現uuid 就在咱們當前頁面返回的結果中, 咱們能夠直接拿來用
函數
_token 參數 是通過加密後的結果, 是有時效性的, 因此接下來咱們要解析它測試
2.解析Tokenui
美團token的加密算法比較簡單, 編碼
定義解析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": [387, 726],
"brR": [
[1440, 900],
[1440, 877], 24, 24
],
"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的過程已經講解完畢,若是你以爲筆者寫得還不錯,請點個贊!