天天看點

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

失蹤人口回歸ing

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

直接上連結 --> 今日頭條

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

首先随便點開一個版本,這裡點的是娛樂,抓包看看結果。

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

可以很清晰地看到首頁html源碼裡面并沒有上圖中的關鍵字"古巨基",可以初步判斷是異步加載的資料,是以接着往後面找找接口。

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

不難找到這個接口,可以看到data裡面的資料就是網頁上所展示的了,是以可以确定這個接口就是用來拿資料的了,然後看看裡面post的參數,除了as,sp,_signature以外,其他的都是固定值,as,sp這裡先不做分析,因為實際上測試之後發現不帶這個參數也無所謂。

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

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

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

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

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

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

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門
網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

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

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門
網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

主要代碼塊如下

# -*- 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,這樣就友善很多了.

update(2020-04-10):

介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。

window.byted_acrawler.init({
    aid: 24,
    dfp: true
})
           

把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!

http://122.51.73.246:4008/get_sign (跟上面的替換一下即可)

網絡爬蟲-今日頭條_signature參數逆向(第一彈)update(2020-04-10):介于部分小夥伴好奇為什麼我這邊計算出來的_signature會比浏覽器上的少了一截,其實很簡單,就是init的問題。把這個加上就好了,為此我這邊也封裝了另一個加長版的接口,大家也可以試試看!EndingGithub傳送門

下一篇文章連結:

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

Ending

Github傳送門

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

聯系方式: 442891187(QQ)

如有權益問題可以發私信聯系我删除