網絡爬蟲-今日頭條_signature參數逆向

失蹤人口迴歸ing

今天要講的是今日頭條web版的_signature參數逆向

直接上鍊接 --> 今日頭條

在這裏插入圖片描述

首先隨便點開一個版本,這裏點的是娛樂,抓包看看結果。
在這裏插入圖片描述
可以很清晰地看到首頁html源碼裏面並沒有上圖中的關鍵字"古巨基",可以初步判斷是異步加載的數據,所以接着往後面找找接口。
在這裏插入圖片描述
不難找到這個接口,可以看到data裏面的數據就是網頁上所展示的了,所以可以確定這個接口就是用來拿數據的了,然後看看裏面post的參數,除了as,sp,_signature以外,其他的都是固定值,as,sp這裏先不做分析,因爲實際上測試之後發現不帶這個參數也無所謂。

在這裏插入圖片描述

首先F12全局搜索這個參數:

在這裏插入圖片描述

這斷點一打就發現了大冪冪,看來估計應該不算太難?接着往function裏面look look~

在這裏插入圖片描述

這下就很清晰了 實際上就是window.byted_acrawler.sign()這個方法對url進行了encrypt,加密的函數和結果全部都是它來完成的,然後我們全局搜索一下window.byted_acrawler這個東東來看看

在這裏插入圖片描述

在這裏插入圖片描述

這下就很清晰了 把window.byted_acrawler這個算法扣下來,放到nodejs裏面跑跑看,就ok了。

在這裏插入圖片描述
在這裏插入圖片描述

主要代碼塊如下

# -*- coding: utf-8 -*-
import urllib

import requests


def get_json():
    url = "https://www.toutiao.com/api/pc/feed/"
    headers = {
        "content-type": "application/x-www-form-urlencoded",
        "user-agent": "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/537.36",
        "referer": "https://www.toutiao.com/ch/news_tech/",
    }
    params = {
        "category": "news_tech",
        "utm_source": "toutiao",
        "widen": "1",
        "max_behot_time": "0",
        "max_behot_time_tmp": "0",
        "tadrequire": "true",
        "as": "",
        "cp": "",
    }
    decode_url = url + "?" + urllib.parse.urlencode(params)
    decode_url = decode_url.replace("com/", "com/toutiao/")
    data = {
        "url": urllib.parse.quote(decode_url)
    }
    _signature = requests.post('http://121.40.96.182:4007/get_sign', data=data).json()['_signature']
    print("計算_signature值爲:", _signature)
    params["_signature"] = _signature
    resp = requests.get(url, headers=headers, params=params)
    print(resp.json())


if __name__ == '__main__':
    get_json()

這個直接在pyexecjs裏面跑會報錯,所以就用nodejs封裝了個api來計算_signature,這樣就方便很多了.


Ending

Github傳送門

持續更新ing (歡迎各種star與fork)

聯繫方式: 442891187(QQ)

如有權益問題可以發私信聯繫我刪除

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