网络爬虫-今日头条_signature参数逆向(第一弹)

2023-10-27

失踪人口回归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,这样就方便很多了.

update(2020-04-10):

介于部分小伙伴好奇为什么我这边计算出来的_signature会比浏览器上的少了一截,其实很简单,就是init的问题。

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

把这个加上就好了,为此我这边也封装了另一个加长版的接口,大家也可以试试看!

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

在这里插入图片描述

下一篇文章链接:
网络爬虫-今日头条__ac_signature参数逆向

Ending

Github传送门

持续更新ing (欢迎各种star与fork)

联系方式: 442891187(QQ)

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

网络爬虫-今日头条_signature参数逆向(第一弹) 的相关文章

随机推荐