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

这篇具有很好参考价值的文章主要介绍了【五一创作】某头条参数破解并实现界面化搭建。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

前言

趁着日常闲余时间,想着搞一搞某条的反爬,练练手,想到自己很久没开发过前端界面了,有点生疏,也趁此机会用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 %}  // 循环字典结束

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

总结

整个流程搞下来还是花了点时间的,当然这个有点简单,不具备实际使用场景,有些隐藏的风控和难点会在使用量一上去就初心,所以练练手就行…文章来源地址https://www.toymoban.com/news/detail-429838.html

到了这里,关于【五一创作】某头条参数破解并实现界面化搭建的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【五一创作】使用Scala二次开发Spark3.3.0实现对MySQL的upsert操作

    使用Scala二次开发Spark实现对MySQL的upsert操作 在我们的数仓升级项目中,遇到了这样的场景:古人开发的任务是使用DataStage运算后,按照主键【或者多个字段拼接的唯一键】来做 insert then update ,顾名思义,也就是无则插入,有则后一条数据会覆盖前一条。这其实类似于MySQL的

    2024年02月03日
    浏览(30)
  • 【五一创作】VimPlug插件配置

    目录 Install Question Q1:字体乱码 Q2:插件配置 Q3:安装扩展插件 Q4:查看安装插件状态 Q5:查看默认插件 Q6:卸载插件 Q7:增加用户配置 Github地址:GitHub - chxuan/vimplus: An automatic configuration program for vim Q1:字体乱码 打开终端,右键,配置文件首选项,配置,字体栏目选择 Dro

    2024年02月02日
    浏览(73)
  • 【五一创作】红黑树数据结构

    现在JAVASE中HashMap中底层源码是由数组+链表+红黑树进行设计的,然后很多地方也是用到红黑树,这里单独对红黑树数据结构进行简单的介绍。 目录 红黑树概念 红黑树的性质 自平衡规则 代码   红黑树,是一种二叉搜索树,但在每个结点上增加一个存储位表示结点的颜色,可

    2024年02月05日
    浏览(47)
  • 【五一创作】ChatGPT API调用方式详解

    ChatGPT是一个基于GPT-3.5架构的大型语言模型,它可以进行自然语言生成、对话等任务。如果你想要在你的应用程序中集成ChatGPT,你可以使用ChatGPT API进行调用。本文将详细介绍ChatGPT API的调用方式。 在使用ChatGPT API之前,你需要先注册一个账户并获取API密钥。你可以通过访问

    2024年02月02日
    浏览(44)
  • 【五一创作】MysqlFirst项目过程中遇到的困难

    解决办法:实体类字段属性不要使用基本数据类型(比如int ,long等),要使用Long,Integer等包装类 修改后就没报此错误了。 解决方法:使用input中的type为hidden 写到点击菜系跳转servlet这里 如何做批处理 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传

    2024年02月02日
    浏览(23)
  • 【五一创作】自动驾驶技术未来大有可为

    自动驾驶技术是当今汽车行业的发展热点之一,但其也存在着许多争议。大家也可以从以下几个维度谈谈你对这项技术的看法。 ☀️大家好!我是新人小白博主朦胧的雨梦,希望大家多多关照和支持😝😝😝 🌖大家一起努力,共同成长,相信我们都会遇到更好的自己👊👊👊

    2024年02月04日
    浏览(27)
  • 【五一创作】Python项目怎么部署到spring

    首先,需要确保Python项目已经编写完成并且可运行。然后,可以使用以下步骤将Python项目部署到Spring中: 1. 安装Jython:Jython是一个Java平台上的Python解释器。在Spring中使用Jython可以使Python代码能够与Java代码无缝集成。可以从Jython官方网站下载并安装Jython。 2. 将Python代码转换为

    2024年02月04日
    浏览(30)
  • 【五一创作】Visual Studio常用调试技巧的温习

    当你在编写C程序时,难免会遇到代码出现错误的情况。这时候就需要用调试工具来定位问题并解决它。以下是一些在Visual Studio中使用调试器时常用的技巧,权当作温故总结罢~ 1. 断点 断点是调试中最为基本但也最常用的技巧之一。通过在需要定位的代码行上打上断点,程序

    2024年02月04日
    浏览(41)
  • 【五一创作】基于springboot框架的电脑商城项目(三)

    1.规划sql 根据用户id修改信息的SQL语句 根据用户id查询的sql语句 2.接口与抽象方法 更新用户的信息方法的定义 在UserMapper.xml文件中进行映射编写 设计两个功能: 1.当打开页面时显示当前登录的用户的信息 2.点击修改按钮时更新用户的信息 1.异常规划 点击个人资料页面时可能找

    2024年02月04日
    浏览(35)
  • 【五一创作】VUE基础知识——代理服务器

    目录 前言 代理方式一 优点 缺点 工作方式 代理方式二 优点 缺点 今天为什么要讲这个vue脚手架的代理呢? 接下来我们先来聊一下cros,相信大家对于这个单词都不会陌生吧!当我们前端请求发生了错误提示这个词的时候,那么基本上就是跨域了。如何解决跨域其实有多种。

    2024年02月02日
    浏览(55)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包