最新版tiktok网页版X-bougs和_signature

声明:文章内容仅供学习参考,严禁用于商业用途,否则由此产生一切后果与作者无关,如有侵权请联系作者进行删除。

2021.12.9

前言:可知从5月份开始,抖音正式开放了web的接口,然后进行了一次又一次的风控升级,从最初的_signature 到增加滑块,然后再到现在的jsvm套一层混淆加上mstoken&x-bougs等参数。通过分析发现国内部分接口只需要cookie,而不需要验签,当然这里的cookie就有多种办法可以获得,其中最简单的就是opencv识别过滑块的cookie。这里要分析的是tiktok,无需cookie,但对签名的校验就比较全面。

1.1 目标链接:https://www.tiktok.com/@closer_food?lang=zh-Hant-TW

需要科学上网
1.2 接口分析:
在这里插入图片描述
(这里备注一下,m接口与pc接口只是一个参数不同,其他完全相同)
这里对应的就是用户的详情信息,接口中含有加密参数X-bougs和_signature,通过重放攻击确定了我们需要攻克的就是这两个参数。
在这里插入图片描述

2.1 逻辑分析

总所周知,jsvm加密的逻辑是没办法从大搜索法出发了,虽然可以搜索出X-bougs关键字,但怎奈我js没到炉火纯青的地步,看不出个所以然来,所以还是从堆栈出发。

在这里插入图片描述
逐步看了下里面的逻辑,可以看出通过jsvm逻辑之后的发送请求,jsvm流程前也存在异步操作,这里我们在发送请求的地方下个断点,重放一下往回看。

在这里插入图片描述
这里细一点可以发现,一开始是没有加密的,放行一次后加密就加上了,可以看到arguments中已经存在加密。这里不选择进入jsvm逻辑,往上追可以看到是在一个异步中完成的发送请求。

在这里插入图片描述
在这个异步中可以发现一些有趣的逻辑,是一个Promise, 还有一些比较敏感的关键词

 var d = new XMLHttpRequest
(d.open(t.method.toUpperCase(), a(g, t.params, t.paramsSerializer), !0)
 d.send(l)

这里懂事的小伙伴已经清楚了,不就是重写了XMLHttpRequest的send和open嘛;

在这里插入图片描述
在这里插入图片描述
到此为止,就是需要验证我们的猜想了;在进入jsvm逻辑之前和之后分别整个断点;

进入jsvm逻辑前的断点,此时还没有加上相关加密参数;
在这里插入图片描述
进入jsvm之后,加密参数已经带上;
在这里插入图片描述
2.2 结论

到现在就逻辑非常清楚了,在有趣的逻辑里我们可以发现,XMLHttpRequest被作为参数一整个传进了jsvm逻辑,这里就可以用到手段就多了。

第一种手段就是rpc,这里推荐一下渣总的rpc调用框架,个人觉得这是未来的趋势,原理就是hook。感兴趣的可以去看一下。
https://github.com/virjar/sekiro

第二种手段就是老手段了,硬刚,扣代码补环境,这里提示下,主要补环境有三个地方,第一个是整个的jsvm逻辑, 其次就是初始化jsvm时的逻辑,也就是完成这个初始化,我们自己代码中XMLHttpRequest的open与send才会被重写,最后就是加密时的环境检测。

个人秉承着授人以鱼不如授人以渔的思想。

3.1 主要实现

我们主要的手段就是跟网站的加密一般,自己构造一个XMLHttpRequest,重写我们需要的接口需要的数据,然后也通过初始化jsvm逻辑,把我们构造的对象传入加密逻辑,然后返回加密好的数据。

3.2 实现步骤,首先是扣出jsvm逻辑,这里需要补上少量环境,给我们的window对象附上一个byted_acrawler对象,里面就存在着我们第二步初始化需要的init函数;
(这里调试是用的v8引擎,因为自己有写了一个环境检测自吐框架,实现加密逻辑后再修改成的node环境;)
这里可以看到已经再window上绑定了对象,下一步就是进行初始化,把XMLHttpRequest的send和open改写,既然要改写,那么我们就需要先定义XMLHttpRequest对象,这一步具体就是扣;扣未被改写前的send和open;这里就直接掠过扣代码这种无聊的事情;
在这里插入图片描述

第三步就是根据对应的接口,伪造异步操作中的对象操作,这里面也会检测较多的环境;
就打个断点慢慢扣的事呗;主要是环境的检测都要过掉或补齐,不然会直接返回空值;
在这里插入图片描述

结果:
在这里插入图片描述

经测试用户接口 搜索接口等都是跑得通的;

最后说一下,能看到这篇文章的,都是对爬虫感兴趣,又有兴趣去做采集的,相对来说,本文所说到的加密解密还是比较适合新手的,之所以这么说,等到你安安静静去分析时你就会恍然大悟,原来只是这样;跑通后就可以去还原自己喜欢的语言的源码,这样可以让自己更上一层楼,后面我也会去还原成python版本,这可能就是干爬虫的一个分水岭吧。源码放在下面的链接,之所以设置这个价格是希望各位看官能自己下手去提升,避免伸手党。
在这里插入图片描述

当然 要下载也乐意至极,里面有我一些debug的点没有删除但注释了,都是一些检测,可以借鉴学习学习。资源里还有一个彩蛋,关于ck的。

下载链接可搜索公众号: jqiu爬虫分析日记,如有问题可私聊或留言;

### TikTok 爬虫 Python 抓取数据 API 使用方法 #### 工具介绍 TikTok Crawler 是一个强大的开源工具,用于抓取分析 TikTok 平台上的视频、用户信息以及其他相关内容。该工具由开发者 NearHuiwen 创建,能够为数据分析、市场研究个人兴趣提供支持[^2]。 #### 安装依赖库 为了实现 TikTok 数据的抓取,通常需要安装一些必要的 Python 库。以下是常用的几个库及其功能: - **requests**: 用于发送 HTTP 请求并接收响应。 - **BeautifulSoup (bs4)**: 解析 HTML XML 文档,提取所需的数据。 - **selenium**: 自动化浏览器操作,适用于动态加载的内容。 - **pandas**: 处理存储抓取到的数据。 可以通过以下命令安装这些库: ```bash pip install requests beautifulsoup4 selenium pandas ``` #### 基本使用流程 下面是一个简单的代码示例,展示如何利用 `requests` `BeautifulSoup` 来抓取 TikTok 的公开页面数据: ```python import requests from bs4 import BeautifulSoup def fetch_tiktok_data(url): headers = { 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36' } response = requests.get(url, headers=headers) if response.status_code == 200: soup = BeautifulSoup(response.text, 'html.parser') # 提取视频标题 video_title = soup.find('meta', property='og:title')['content'] # 提取视频描述 video_description = soup.find('meta', property='og:description')['content'] return { 'title': video_title, 'description': video_description } else: raise Exception(f"Failed to retrieve data from {url}. Status code: {response.status_code}") # 测试函数 url = "https://www.tiktok.com/@username/video/id" data = fetch_tiktok_data(url) print(data) ``` 上述代码展示了如何从 TikTok 页面中提取元数据(如标题描述)。需要注意的是,某些情况下可能需要处理 JavaScript 动态渲染的内容,在这种场景下可以考虑使用 Selenium 或 Playwright 进行自动化浏览[^1]。 #### 高级功能扩展 如果需要更深入的功能,比如批量下载视频或获取用户的粉丝列表,则可以借助专门设计的爬虫框架或者第三方 API 接口。例如,通过调用官方或其他非官方的 RESTful APIs 实现更加灵活的操作。 注意:在实际开发过程中应严格遵守目标网站的服务条款以及法律法规,避免因不当行为引发法律风险。 ---
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

A九三

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值