Python爬虫:通过js逆向了解某音请求接口参数a_bogus加密过程

news/2024/10/7 14:33:57

1. 前言

需要提前说明以下,本篇文章讲述的内容仅供学习,切莫用于商业活动,如若被相关人员发现,本小编概不负责!切记
本次分析的接口为:https://www.douyin.com/aweme/v1/web/discover/search/
它的请求方式为:GET
请求需要的参数有:

请求参数中需要进行js逆向是:a_bogus
必须需要的请求头字段为:referer,user-agent(可不写,建议写)
这个接口用于获取某音搜索所得到的用户数据,如下:

2. 找到js逆向部分最关键的点

需要找到该接口的启动器下这个,然后点击进入

然后在下述这个地方进行断点操作。为什么是这个地方呢?因为这个地方是参数值a_bogus生成的地方。当然在该断点上需要继续执行脚本多次,才会找到我们需要的请求接口请求参数a_bogus加密部分。

如下(下述是edge浏览器操作截图):

此时,可以发现这个关键部分就是上述这个代码,其中arguments就是加密需要的参数,也就是如下:

var params = [0,1,14,'device_platform=webapp&aid=6383&channel=channel_pc_web&search_channel=aweme_user_web&keyword=%E5%A5%A5%E7%89%B9%E6%9B%BC&search_source=normal_search&query_correct_type=1&is_filter_search=0&from_group_id=&offset=0&count=10&need_filter_settings=1&list_type=single&update_version_code=170400&pc_client_type=1&version_code=170400&version_name=17.4.0&cookie_enabled=true&screen_width=1536&screen_height=864&browser_language=zh-CN&browser_platform=Win32&browser_name=Chrome&browser_version=120.0.0.0&browser_online=true&engine_name=Blink&engine_version=120.0.0.0&os_name=Windows&os_version=10&cpu_core_num=8&device_memory=4&platform=PC&downlink=10&effective_type=4g&round_trip_time=50&webid=7375104739480094217&msToken=NqYCyHdpAMPM14BJ6fw69qOui-bipCWQ8oZ0Yibr2FoASHy-5CR-0ryRcocIpxlMnOAslkYUTbITzUR6uUt1CTJcO4GdM-KNuXyzARN35Lw5w0avNwdZdfM%3D&msToken=NqYCyHdpAMPM14BJ6fw69qOui-bipCWQ8oZ0Yibr2FoASHy-5CR-0ryRcocIpxlMnOAslkYUTbITzUR6uUt1CTJcO4GdM-KNuXyzARN35Lw5w0avNwdZdfM%3D',"","Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/94.0.4606.71 Safari/537.36 Core/1.94.218.400 QQBrowser/12.1.5496.400"]

3. js逆向生成a_bogus参数值

直接把bdms.js这个文件的代码copy到本地电脑,找到59!==这段代码下,然后在最后加上下述代码

然后在另外一个js文件这个js文件,当然可以直接在这个js代码下直接写。然后运行这个文件,就会报一些错误,如下:

这是由于缺少一定环境导致的,此时需要补环境,补环境的代理代码如下:

function get_enviroment(proxy_array) {for (var i = 0; i < proxy_array.length; i++) {handler = '{\n' +'    get: function(target, property, receiver) {\n' +'        console.log("方法:", "get  ", "对象:", ' +'"' + proxy_array[i] + '" ,' +'"  属性:", property, ' +'"  属性类型:", ' + 'typeof property, ' +// '"  属性值:", ' + 'target[property], ' +'"  属性值类型:", typeof target[property]);\n' +'        return target[property];\n' +'    },\n' +'    set: function(target, property, value, receiver) {\n' +'        console.log("方法:", "set  ", "对象:", ' +'"' + proxy_array[i] + '" ,' +'"  属性:", property, ' +'"  属性类型:", ' + 'typeof property, ' +// '"  属性值:", ' + 'target[property], ' +'"  属性值类型:", typeof target[property]);\n' +'        return Reflect.set(...arguments);\n' +'    }\n' +'}'eval('try{\n' + proxy_array[i] + ';\n'+ proxy_array[i] + '=new Proxy(' + proxy_array[i] + ', ' + handler + ')}catch (e) {\n' + proxy_array[i] + '={};\n'+ proxy_array[i] + '=new Proxy(' + proxy_array[i] + ', ' + handler + ')}')}
}
proxy_array = ['window', 'document', 'location', 'navigator', 'history', 'screen'] 
get_enviroment(proxy_array)

把对应的环境补上,然后再运行就不会报一些错误,然后再执行下述测试代码,如下:

虽然生成的a_bogus的结果值与实际该接口的a_bogus值在长度上有一些不同,但是是可以正常访问的,如下:

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

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

相关文章

Chapter1 p1 Output Image

由于本文章是对TinyRenderer的模仿,所以并不打算引入外部库。 那么我们第一步需要解决的就是图形输出的问题,毕竟,如果连渲染的结果都看不到,那还叫什么Renderer嘛。 由于不引入外部库,所以选择输出的图片格式应该越简单越好,各种位图就成为了我们的首选。 这里我们选择了…

吴恩达机器学习第三课 Unsupervised learning recommenders reinforcement learning

Unsupervised learning recommenders reinforcement learning 1.1 课程介绍2.1 什么是聚类

KPTI——可以缓解“熔断” (Meltdown) 漏洞的内核新特性

Linux 内核修复办法:内核页表隔离KPTl(kernel page table isolation)每个进程一张页表变成两张:运行在内核态和运行在用户态时分别使用各自分离的页表Kernel页表包含了进程用户空间地址的映射和Kernel使用的内存映射用户页表仅仅包含了用户空间的内存映射以及内核跳板的内存映射…

吴恩达机器学习第二课 Advanced Learning Algorithms

Advanced Learning Algorithms week1 1.1 神经元和大脑1.2 需求预测构建自己神经网络的时候:需要决定隐藏层的个数和每个隐藏层的神经元个数1.3 图像感知 像素的亮度值从0~255变化 人脸识别:训练一个神经网络,以一个特征向量作为输入,输出图片中人的身份2.1 神经网络中的网…

nanoDLA逻辑分析仪上手教程

逻辑分析仪分析自定义总线数据前言 最近调试NXP FRDM-MCXN947开发板,发现它的硬件i2c接口读取的传感器数据老是不对,排查了硬件电路也发现不了啥问题;于是乎想到用逻辑分析仪试一下,果然很快定位到问题所在;还是那句话,用对的工具做对的事情,别浪费时间!这篇文章主要关…

字符串处理,push pop路径,组合命令

字符串处理字符串截取、命令嵌套命令格式:%变量名:~ m,n%,其中,m表示开始位置(默认开头),n表示从m位置开始向后截取的字符个数(默认到结尾),若n为负数则表示向前截取个数,作用:将命令中的某段字符截取,通过call将字符做为命令执行。 @echo offset str1=aaa echo ok bbb…

V-STARS 摄影测量基础

本文翻译了 GSI 公司官方网站中所提供的“摄影测量基础”文章。V-STARS 摄影测量基础[!NOTE] 本文翻译自 Geodetic Systems Inc,原文链接:https://www.geodetic.com/basics-of-photogrammetry/ 。摄影测量 摄影测量基础知识 在描述V-STARS系统(Video-Simultaneous Triangula…

ARM64中的ASID地址空间标识符

1. 从ARM32到ARM64 从ARM32到ARM64不止将处理器从32位升级到了64位,还有许多性能的技术也得到了极大的提升,光是个头长了可不行啊!能耐也得跟着长啊!哈哈哈 1.1 ARM32的TLB机制如上图所示,上一讲我们讲了TLB的每一条表项都有一个bit用来表示自己是全局的(内核空间)还是本…