网络爬虫-今日头条_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)

如有权益问题可以发私信联系我删除

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