【五一创作】某头条参数破解并实现界面化搭建

news2024/10/7 13:24:35

某条参数破解并实现界面化搭建

  • 前言
  • 效果展示
  • 难点
  • 参数逆向破解
    • _signature
    • ac_signature
    • s_v_web_id
  • 界面化实现
  • 总结

前言

趁着日常闲余时间,想着搞一搞某条的反爬,练练手,想到自己很久没开发过前端界面了,有点生疏,也趁此机会用flask开发一个简单的搜索界面(真的很简单…)

效果展示

首页会展示实时热点信息
在这里插入图片描述
搜索界面中会根据输入的内容进行搜索,展示搜索结果第一页
在这里插入图片描述

难点

热点接口链接
aHR0cHM6Ly93d3cudG91dGlhby5jb20vaG90LWV2ZW50L2hvdC1ib2FyZC8=
搜索接口链接
aHR0cHM6Ly9zby50b3V0aWFvLmNvbS9zZWFyY2g=
通过研究确定反爬点(研究不深…):热点接口有一个_signature,但是其实不传过去也能拿到数据;搜索接口有s_v_web_id__ac_signature,这两个参数都是通过js生成的,需要逆向破解,然后研究发现__ac_signature可以随便定义,但是一定要传过去。(最好还是破解…)

参数逆向破解

_signature

首先处理_signatureCtrl + Shift + F全局搜索_signature
在这里插入图片描述
打断点后,刷新会定位断点位置,然后进入I函数
在这里插入图片描述
其中O是必要的参数,然后执行到return下面会跳转进去生成_signature的代码地方
在这里插入图片描述
然后下面用补环境的方式进行处理
把代码都拿到本地运行,会发现运行失败,提示缺一些环境
在这里插入图片描述

我们只要补全这些环境就可以了,最后只需要补这些参数即可
在这里插入图片描述
但是我们调用方法生成参数时发现提示报错了,根据报错可以确定代码没有按正常的流程执行,说明还是有环境问题
在这里插入图片描述
仔细查看代码发现是这里有问题,exports在浏览器环境下是undefined,但是在node环境下是Object,所以这里被检测到环境差异了
在这里插入图片描述
改掉后就可以运行得到结果了,但是结果对应浏览器的结果发现长度有问题,还是有环境问题。程序已经能够正常跑起来了,但是结果不对,这个时候要看一下是不是有些环境没补或者补不对,大家可以看看
在这里插入图片描述
最后确定是cookie问题,在我们调用加密方法时,需要传入cookie值才能拿到结果,注意tt_scid是服务器返回的cookie
在这里插入图片描述

ac_signature

ac_signature其实可以用_signature的方式生成,大家可以看一下,其实ac_signature就是不需要最后传入cookie生成的结果。

s_v_web_id

s_v_web_id是动态生成的,如果浏览器检测没有这个参数会出现滑块验证,这里我们使用hook的方式捕捉cookie生成,使用油猴插件实现代码注入
在这里插入图片描述
刷新界面后就能在s_v_web_id生成时断住,注意s_v_web_id会生成两次,第二次才有值
在这里插入图片描述
跳出hook函数后,可以确定就是在这个位置进行cookie设置
在这里插入图片描述
研究发现,其实s_v_web_id不是在这里生成的,这里只是对生成的s_v_web_id进行二次校验,实际生成的地方需要跳出函数,跳出函数后就能知道s_v_web_id实际生成代码了,其实就是wt函数
在这里插入图片描述
这里我们稍微了解代码后,对代码进行整理
在这里插入图片描述
然后需要把生成的结果进行二次校验,把整个n函数都拿下来
在这里插入图片描述
本地执行缺啥补啥
在这里插入图片描述
这样就能拿到结果了,然后拿加密结果去抓取接口就能拿到数据。
在这里插入图片描述

界面化实现

static目录放渲染文件,templates放模板文件
在这里插入图片描述
创建flask实例化对象时,需要指定文件路径

app = Flask(__name__, static_folder='static', template_folder='templates')

flask引用templates模板文件,并传入数据

@app.route("/toutiao/search", methods=['GET'])
def tt_spider():
    keyword = request.args.get('keyword')
    tt_spider = TTSpider()
    search_result = tt_spider.download_search_news(keyword)
    return render_template("search.html", search_result=search_result)


@app.route("/homepage", methods=['GET'])
def home_page():
    hot_news_spider = TTSpider()
    return render_template("index.html", hot_news=hot_news_spider.download_hot_news())

html文件需要使用指定命令格式引入渲染文件

{{url_for('static', filename='css/style.css')}}
{{url_for('static', filename='images/holmes_logo-hover.svg')}}

在这里插入图片描述
html模板文件中循环使用传入的字典数据

{% for hot_new in hot_news.msg %}  // 循环字典开头
...
{{ item.title }}  // 调用元素
...
{% endfor %}  // 循环字典结束

在这里插入图片描述

总结

整个流程搞下来还是花了点时间的,当然这个有点简单,不具备实际使用场景,有些隐藏的风控和难点会在使用量一上去就初心,所以练练手就行…

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

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

相关文章

PCL学习二:PCL基础应用教程

参考引用 PCL Basic UsagePCL 点云库官网教程 1. pcl_viewer 基本使用 1.1 pcl_viewer 安装测试 pcl_data 源码克隆$ git clone https://github.com/PointCloudLibrary/data.git进入 /pcl_data/tutorials(如下图)$ cd ~/pcl_data/tutorials # 此处为重…

IDEA常用提升效率的操作小记

IDEA目前是使用最广泛的Java开发工具之一了,虽然是收费的,但是也提供了免费的社区版,并且收费版也支持使用github的开源项目,使用免费license,虽然每年都要续,我用的就是开源项目申请的免费license。 开发…

【Pytorch基础教程39】torch常用tensor处理函数

note 文章目录 note一、tensor的创建二、tensor的加减乘除三、torch.argmax()函数四、gathter函数小栗子1小栗子2:如果每行需要索引多个元素: 四、针对某一维度的操作五、改变维度、拼接、堆叠等操作Reference 一、tensor的创建 torch.tensor会复制data…

STM32配置ADC2(DMA)进行采集 DAC 输出-2

0.一定要先看上一节:STM32配置ADC2(DMA)进行采集 DAC 输出-2 1.实验目标 在上一节的基础上,我们把 DAC(三角波)给集成进来,实现按下按键输出三角波,通过串口发送数据给电脑&#x…

Apache Zeppelin系列教程第二篇——整体架构

Zeppelin 架构: 首先我们来了解下 Zeppelin的架构, Zeppelin 主要分3层。 Web前端 Zeppelin Server Interpreter Zeppelin前端负责前端页面的交互,通过Rest API 和WebSocket的方式与Zeppelin Server进行交互。 Zeppelin Server是一个Web server&…

【python 基础语法一】注释,变量与运算符

一、注释 注释: 就是对代码的解释,方便阅读,被注释的代码不执行 分类 单行注释 # 1.单行注释 以#号开头 ,右边的所有东西都被当做说明文字 ,程序不进行编译运行。 print(hello world)多行注释 # 2.多行注释 三个单引号 或…

Sentinel源码分析学习

文章目录 前言Sentinel源码分析1.Sentinel的基本概念1.1.ProcessorSlotChain1.2.Node1.3.Entry1.3.1.自定义资源1.3.2.基于注解标记资源 1.4.Context1.4.1.什么是Context1.4.2.Context的初始化1.4.2.1.自动装配1.4.2.2.AbstractSentinelInterceptor1.4.2.3.ContextUtil 2.Proce…

django显示echart图表:柱状图、折线图、饼图、地图、词云

django显示echart图表 效果: 示例demo 点我查看 1、urls.py 其中关键代码: urlpatterns = [path("book_chart/", views.book_chart, name="book_cha

LINUX压缩和解压和磁盘管理与维护命令

文章目录 一、压缩和解压命令二、磁盘管理与维护命令总结 一、压缩和解压命令 Linux zip命令:压缩文件或目录 Linux unzip命令:解压文件或目录 Linux tar命令:归档工具 二、磁盘管理与维护命令 Linux df命令:显示磁盘空间使用情况 Linux mount命令:挂载文件系统 Linux quota命…

APK文件结构

文件结构 assets文件用来存放需要打包到Android 应用程序的静态资源文件,例如图片资源文件,JSON配置文件,渠道配置文件,二进制数据文件,HTML5离线资源文件等 与res/raw目录不同的数,assets目录支持任意深度…

数位dp。

一,思想: 在处理1e9甚至1e18,1e100的问题时,因为在统计情况下有很多重复的计算,数位dp实现了相同状态只计算一次,从而大幅减少运算时间,思想就是对每一位进行dp,计算时记忆化每一位可以有的状态…

HashMap机制

反思 HashMap之前只是面试时会看下面试题,但实际从没有撸过源码,对于工作多年的菜鸟来说,对技术不尊重,整理了篇文档,记忆加深一下 原理 假如让我们来设计HashMap实现,我们如何设计一个key->value键值…

4.7排序(C语言)

1.八大排序 加一个计数排序(时间复杂度为O(n), 空间复杂度为O(max(n, range),非比较排序)。 2.希尔排序 3.三个O(n^2)的排序的比较 4.归并排序和快速排序 非递归: 5.排序比较 注意: 下面4种高效排序中&…

【Git】篇一

文章目录 一、Git概述1、版本控制器的方式2、Git的工作流程图 二、Git的安装与常用命令1、Git环境安装2、Git环境基本配置3、获取本地仓库4、基础操作指令 三、分支 一、Git概述 开发中,代码备份、代码还原回滚、追溯、协同开发等场景必不可少,由此&…

特征可视化技术(CAM)

https://zhuanlan.zhihu.com/p/269702192 CAM技术可以帮助我们理解CNN在图像中寻找目标对象的过程,并且可以用于可视化CNN的中间层特征,以及对图像分类结果的解释和可视化。CAM技术的实现比较简单,可以使用常用的深度学习框架如PyTorch和Te…

【C++】模板进阶——非类型模板参数、模板特化、模板分离编译

目录 1.非类型模板参数array 2.模板的特化2.1概念2.2函数模板特化2.3类模板特化1.全特化2.偏特化3.类模板特化应用示例 3.模拟分离编译3.1什么是分离编译3.2模板的分离编译1.问题:2.原因3.解决方法 4.模板总结 1.非类型模板参数 模板参数分为类型形参 与 非类型形参…

重新思考无边界世界中的网络安全

©网络研究院 在一个越来越不是物理边界而是数字边界的世界里,全球网络安全事件的数量持续上升,公共部门机构面临的挑战也随之增加。 保护组成数据的利害关系比以往任何时候都更加重要。为了抵御这些数字威胁,政府机构正在采用零信任方…

sqlite基础

一.sqlite基础 1.下载与环境配置 从下载地址,点击我 这里下载适合你版本的压缩包 您需要下载 sqlite-tools-win32-*.zip 和 sqlite-dll-win32-*.zip 压缩文件。创建文件夹 C:\sqlite,并在此文件夹下解压上面两个压缩文件,将得到 sqlite3.d…

【模板方法设计模式详解】C/Java/JS/Go/Python/TS不同语言实现

简介 模板方法模式(Template Method Pattern)也叫模板模式,是一种行为型模式。它定义了一个抽象公开类,包含基本的算法骨架,而将一些步骤延迟到子类中,模板方法使得子类可以不改变算法的结构,只…