美文网首页
破解今日头条接口的signature加密参数(超详细)

破解今日头条接口的signature加密参数(超详细)

作者: 一只小青蛙 | 来源:发表于2021-03-30 16:17 被阅读0次
该文章主要提供交流学习使用,请勿利用其进行不当行为!
如本篇文章侵犯了贵公司的隐私,请联系我立刻删除!

由于最近比较忙,暂时没有更新,这段时间会及时更新的



现如今自媒体风声水起,很多人现在都在从事着自媒体行业,游戏宣传,影视宣传,等等,都在以文章形式传播。

那今天分享一下今日头条的是哪个参数的生成思路,以今日头条推荐为例,我们进行抓包调试。


首先清楚我们要的加密参数名为:signature 然后全局搜索:


接下来咱们通过CTRL+F快捷键进行全局搜索signature参数:



我们可以看到,在搜索结果中有一个js加密文件:lib_xxx.js ,我们通过网站目录打开它


接下来依次点击上方的Sources打开网站目录,从左侧栏依次点击,找到lib_xxx.js文件,打开后的js文件可读性极差,需要点击下方格式化按钮{ } 。

# 完整python调用代码

import time
import execjs
import asyncio
from pyppeteer import launch
from urllib.parse import quote


def get_js():
    f = open("sign.js", 'r', encoding='utf-8')  # 打开JS文件
    htmlstr = f.read()
    return htmlstr


def get_des_psswd(e, c):
    js_str = get_js()
    ctx = execjs.compile(js_str)  # 加载JS文件
    return (ctx.call('get_page', e[0], c))  # 调用js方法  第一个参数是JS的方法名,后面的e和c是js方法的参数


async def main(key):
    browser = await launch(
        # headless=False
    )  # 将headless参数设为False,则变成有头模式
    page = await browser.newPage()

    # 设置页面视图大小
    await page.setViewport(viewport={'width': 1280, 'height': 800})

    # 是否启用JS,enabled设为False,则无渲染效果
    await page.setJavaScriptEnabled(enabled=True)
    await page.goto('https://www.toutiao.com/search/?keyword={}'.format(quote(key)))
    itmes = await page.cookies()
    cookie = ''
    for itme in itmes:
        name = itme['name']
        value = itme['value']
        cookie = cookie + name + '=' + value + ';'
    # 关闭浏览器
    await browser.close()
    return cookie[:-1]


def get_cookie(key):
    print('正在获取cookie...')
    return asyncio.get_event_loop().run_until_complete(main(key))


if __name__ == '__main__':
    key = '搜索关键字'
    cookie = get_cookie(key)
    url = [
        'https://www.toutiao.com/api/search/content/?aid=24&app_name=web_search&offset=0&format=json&keyword={}&autoloa'
        'd=true&count=20&en_qc=1&cur_tab=1&from=search_tab&pd=synthesis&timestamp={}'.format(quote(key),time.time())
    ]

    url.append(get_des_psswd(e=url, c=cookie))  # 生成signature
    iurl = '&_signature='.join(url)  # 合成带sign的api接口
    print('api_url:', url[1]) # 完整的api接口
    print('signature:', iurl) # signature加密串
    print('cookie:', cookie)  # 模拟用户cookie

相关文章

网友评论

      本文标题:破解今日头条接口的signature加密参数(超详细)

      本文链接:https://www.haomeiwen.com/subject/byrghltx.html