红薯小眼睛接口分析与Python脚本实现

news2025/2/22 0:22:09

文章目录

  • 1. 写在前面
  • 2. 接口分析
  • 3. 算法脚本实现

【🏠作者主页】:吴秋霖
【💼作者介绍】:擅长爬虫与JS加密逆向分析!Python领域优质创作者、CSDN博客专家、阿里云博客专家、华为云享专家。一路走来长期坚守并致力于Python与爬虫领域研究与开发工作!
【🌟作者推荐】:对爬虫领域以及JS逆向分析感兴趣的朋友可以关注《爬虫JS逆向实战》《深耕爬虫领域》
未来作者会持续更新所用到、学到、看到的技术知识!包括但不限于:各类验证码突防、爬虫APP与JS逆向分析、RPA自动化、分布式爬虫、Python领域等相关文章

作者声明:文章仅供学习交流与参考!严禁用于任何商业与非法用途!否则由此产生的一切后果均与作者无关!如有侵权,请联系作者本人进行删除!

1. 写在前面

  作者在之前的文章内有提到关于a1、webid、sec_poison_id这些Cookie组成参数的的讲解及实现算法!以及关键组成参数web_session的获取方式、这个参数之前也提到了分为游客与登录用户,那么用户在访问浏览一篇笔记的时候,一定会触发了某个接口后+1(也就是小眼睛访问量)

2. 接口分析

要实现对小眼睛的+1,首先我们需要深入去研究分析一下它触发了哪个接口。作者这里在非登录的状态下去打开一篇笔记内容,看一下发包请求,如下所示:

在这里插入图片描述

metrics_report这个接口在经过多次的验证与测试下,发现就是让小眼睛+1的接口。也就是说我们去请求一次这个接口那么它就会+1。但是问题来了!基于什么?应该是用户的Cookie信息,也就是当中的web_session

这里我们把请求的参数拿出来分析一下,note_id是笔记的ID、另外注意看user_id有两个,一个自己的一个笔记作者的。如下所示:

json_data = {
    "note_id": "666175a3000000000d00e05e",
    "note_type": 1,
    "report_type": 1,
    "stress_test": False,
    "viewer": {
        "user_id": "6676e1d0000000001c0034e8",
        "followed_author": 0
    },
    "author": {
        "user_id": "65d6ea1d000000000d024df2"
    },
    "interaction": {
        "like": 0,
        "collect": 0,
        "comment": 0,
        "comment_read": 0
    },
    "note": {
        "stay_seconds": 0
    },
    "other": {
        "platform": "web"
    }
}

3. 算法脚本实现

现在需要梳理一下整个+1的流程,将实现流程使用Python代码来实现。首先第一步需要先生成游客的身份信息,通过作者之前文章内的算法实现如下:

# 生成CK的必要组成参数
async def generator_cookie_info(self):
	ck_info = await self.get_core_algorithm()
	return {
	    'a1': ck_info['a1'],
	    'webId': ck_info['webid'],
	    'sec_poison_id': ck_info['sec_poison_id']
	}

上面代码中调用了核心的加密算法函数,主要就是CK组成参数的算法跟签名,如下所示:

# 最新JS算法是作者6.20重新还原的
async def get_core_algorithm(self, is_ck: bool = False, params: str = '') -> Dict[str, str]:
    with open("xs-xsc620.js", encoding='utf-8') as f:
        ctx = execjs.compile(f.read())
    if not is_ck:
        return ctx.call("getwebid")
    else:
        xts = ctx.call('getXs', params, self.cookies['a1'])
        xtscommon = ctx.call('getXsc', xts, self.cookies['a1'])
        self.headers.update({
            'x-s': xts['X-s'],
            'x-s-common': xtscommon,
            'x-t': str(xts['X-t'])
        })

接下来,我们需要拿到服务端给的web_session,通过请求调用login/activate这个接口获取,代码实现如下所示:

async def get_web_session(self):
    login_activate = "/api/sns/web/v1/login/activate"
    self.cookies = await self.generator_cookie_info()
    login_activate_api = f'url={login_activate}' + \
        json.dumps({}).replace(" ", "")
    await self.get_core_algorithm(is_ck=True, params=login_activate_api)
    data = json.dumps({}, separators=(',', ':')).replace(" ", "")
    async with self.session.post(
        f'https://edith.xhs.com{login_activate}',
        cookies=self.cookies,
        headers=self.headers,
        data=data
    ) as response:
        response_data = await response.json()
        logger.info(f'获取web_session信息: {response_data}')
        self.cookies['web_session'] = response_data['data']['session']
        await self.metrics_report()

拿到web_session之后,使用完整的CK信息去请求之前我们提到的小眼睛的metrics_report接口,以此实现+1的效果,运行效果如下所示:

在这里插入图片描述

注意上图!流程就是先通过JS算法签名,去activate的接口拿到服务端返回的session信息,然后拼接JS算法生成的其他Cookie参数字段,访问metrics_report接口

运行脚本之前作者也是截图做了一下保存,以此为标识来记录一下程序的效果,如下所示:

在这里插入图片描述

程序分别使用了不同CK信息对作者自己的笔记进行了测试,测试效果如下所示(+10):

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1899964.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

比 PIP 快 100 倍的安装工具

uv 是一个由 Rust 开发的 pip 工具,比 pip 快 100 倍,难以置信,不过真的是快太多了。 安装 在 Mac 上直接通过 brew install uv 安装即可。 venv 创建运行环境,默认当前目录下 .venv uv venv 依赖安装 uv pip install -r re…

Java | Leetcode Java题解之第217题存在重复元素

题目&#xff1a; 题解&#xff1a; class Solution {public boolean containsDuplicate(int[] nums) {Set<Integer> set new HashSet<Integer>();for (int x : nums) {if (!set.add(x)) {return true;}}return false;} }

谷粒商城学习笔记-14-项目结构创建提交到码云

一&#xff0c;码云上创建工程仓库 1&#xff0c;,点击右上角加号&#xff0c;选择新建仓库 2&#xff0c;填充必要信息 ①仓库名称&#xff0c;可以理解为工程名称。 ②仓库介绍&#xff0c;添加关于仓库的说明。 ③仓库权限设置&#xff0c;如果是公司项目&#xff0c;一般…

InnoDB内部结构

在mysql数据库中&#xff0c;InnoDB存储引擎是最为常用和强大的存储引擎之一。了解InnoDB的内存结构对于优化数据库的性能&#xff0c;提高系统的稳定性和扩展性至关重要。本文将深入探讨InnoDB的内存结构。 1.Buffer Pool Buffer Pool: 缓冲池&#xff0c;其作用是用来缓存表…

为什么https比http更安全

读完本文&#xff0c;希望你能明白&#xff1a; HTTP通信存在什么问题HTTPS如何改进HTTP存在那些问题HTTPS工作原理是什么 一、什么是HTTPS HTTPS是在HTTP上建立SSL加密层&#xff0c;并对传输数据进行加密&#xff0c;是HTTP协议的安全版。现在它被广泛用于万维网上安全敏感…

奇舞周刊第532期:奇舞团生日快乐~

时光荏苒&#xff0c;岁月如歌&#xff0c;转眼间&#xff0c;奇舞团13岁啦&#x1f382;&#x1f382;&#x1f382;《奇舞周刊》也陪伴大家来到了第532期。&#x1f44f;&#x1f44f; 致敬每一位读者和创作者&#xff0c;是你们的热情、陪伴和鼓励&#xff0c;让我们不断前进…

SpringBoot | 大新闻项目源码打包

对于一个完成好的后端项目&#xff0c;如何进行打包发送给其他人&#xff0c;在电脑上进行查看 1.在pom.xml添加&#xff1a; <build><plugins> <!-- 打包插件--><plugin><groupId>org.springframework.boot</groupId><art…

【HTML入门】第二课 - head标签下的常见表情们

目录 1 本节概要 2 head下的常见标签 2.1 网页编码设置 2.2 网页的标题 2.3 样式标签 3 head标签的内容不会显示到网页上 4 查看网页源代码 1 本节概要 上一节&#xff0c;我们说了HTML网页最基本的框架标签&#xff0c;说到标签分为head头部和body身体部分。这一小节呢…

文言文编程语言|老外来了也得先学论语

最近看到一个有意思的开源项目 wenyan&#xff0c;主要功能就是使用文言文来编写代码。 按项目说明 “Wenyan” 是一种遵循中国古典文学的语法和语调的编程语言。 此外&#xff0c;文言的字符集仅包含繁体汉字和「」引号&#xff0c;确保古代中国人能够阅读。 该编程语言的文…

C++:类的成员属性,公有,私有,保护

在C中级别&#xff0c;类的成员属性分为三种访问控制&#xff1a;公有&#xff08;public&#xff09;、私有&#xff08;private&#xff09;和保护&#xff08;protected&#xff09;。它们用于控制类内部数据对类外部的可见性和访问权限。设置访问属性对于封装和信息隐藏至关…

Truffle学习笔记

Truffle学习笔记 安装truffle, 注意: 虽然目前truffle最新版是 5.0.0, 但是经过我实践之后, 返现和v4有很多不同(比如: web3.eth.accounts; 都获取不到账户), 还是那句话: “nodejs模块的版本问题会搞死人的 !” 目前4.1.15之前的版本都不能用了, 只能安装v4.1.15 npm instal…

Beats:使用 Filebeat 从 Python 应用程序中提取日志

本指南演示了如何从 Python 应用程序中提取日志并将其安全地传送到 Elasticsearch Service 部署中。你将设置 Filebeat 来监控具有标准 Elastic Common Schema (ECS) 格式字段的 JSON 结构日志文件&#xff0c;然后你将在 Kibana 中查看日志事件发生的实时可视化。虽然此示例使…

SCI二区TOP|麋鹿群优化算法: 一种新颖的受自然启发的元启发式算法

目录 1.背景2.算法原理2.1算法思想2.2算法过程 3.结果展示4.参考文献5.代码获取 1.背景 2024年&#xff0c;SO Oladejo受到麋鹿群的繁殖过程启发&#xff0c;提出了麋鹿群优化算法&#xff08;Elk herd optimizer, EHO&#xff09;。 2.算法原理 2.1算法思想 EHO灵感来自麋鹿…

Win11右键默认显示更多选项的方法

问题描述 win11系统默认右键菜单显示选项太少&#xff0c;每次需要点一下“显示更多选项”才能得到想要内容。比方说我用notepad打开一个文档&#xff0c;在win11上要先点一下"显示更多选项“&#xff0c;再选择用notepad打开&#xff0c;操作非常反人类。 Win11右键默…

FreeRTOS 任务

FreeRTOS使用多任务完成功能&#xff0c;首先要了解任务的基本知识。 裸机编程中&#xff0c;单任务系统的编程方式&#xff0c;即裸机的编程方式&#xff0c;这种编程方式的框架一般都是在 main()函数 中使用一个大循环&#xff0c;在循环中顺序地调用相应的函数以处理相应的…

【matlab】分类回归——智能优化算法优化径向基神经网络

目录 径向基&#xff08;Radial Basis Function, RBF&#xff09;神经网络 一、基本概念 二、网络结构 三、工作原理 四、学习算法 五、优点与应用 六、与BP神经网络的比较 智能优化算法 常见的智能优化算法 灰狼优化算法&#xff08;Grey Wolf Optimizer, GWO&#…

万界星空科技MES系统中的排版排产功能

在当今高度竞争的市场环境中&#xff0c;企业对于生产管理的效率和质量要求日益提高。作为智能制造的重要组成部分&#xff0c;制造执行系统&#xff08;MES&#xff09;以其强大的功能&#xff0c;在提升企业生产能力方面发挥着不可替代的作用。万界星空科技作为行业领先的智能…

eclipse ide中文件编码的修改,解决中文乱码的问题。

1、先上一张图&#xff1a; 记得之前设置过&#xff0c;但是稍微一变&#xff0c;环境编码又到了ISO-8859-1了&#xff0c;然后就出现了乱码。 2、设置eclipse的编码&#xff1a; Preferences--General -- Content Types -- Text -- Java Properties File -- Default encoding…

昇思25天学习打卡营第18天 | 基于MobileNetv2的垃圾分类

内容介绍&#xff1a; MobileNet网络是由Google团队于2017年提出的专注于移动端、嵌入式或IoT设备的轻量级CNN网络&#xff0c;相比于传统的卷积神经网络&#xff0c;MobileNet网络使用深度可分离卷积&#xff08;Depthwise Separable Convolution&#xff09;的思想在准确率小…

node.js外卖小程序-计算机毕业设计源码81838

摘要 自从计算机发展开始&#xff0c;计算机软硬件相关技术的发展速度越来越快&#xff0c;在信息化高速发展的今天&#xff0c;计算机应用技术似乎已经应用到了各个领域。在餐饮行业&#xff0c;除了外卖以外就是到店里就餐&#xff0c;在店里就餐如果需要等待点餐的话&…