【逆向百例】百度翻译js逆向

超详细百度翻译js逆向(token 和 sign) 1.抓包看看需要什么参数选中的数据包有点可疑 请求的url和post的参数 并且返回了这个内容 我们用fiddler抓包看到具体的设置cookies等过程 第一次请求返回了一个setcookie, 第二次请求带上了第一次返回的cookies,有两个有用的BAIDUID , FG 其他的是浏览器设置的,不用理会 刷新就知道了,只有sign和token两个参数是变化的,query是每次请求的字符串, langdetect是检测语言的, 语言检测不用管,用python实现很容易 2.分析sign 全局 阅读详情

关注它,不迷路。

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负!

前言

目标

分析某度翻译接口,使用python获取翻译结果,并用pyinstaller打包成单文件可执行程序。

主要反爬点

  • 请求参数
  • cookie

工具

chrome、pycharm、nodejs 18.16.1、python3.10

模块

  • requests:2.31.0
  • re
  • PyExecJS:1.5.1
  • js2py:0.74
  • pyinstaller:6.6.0

基本流程

分析方法

如何分析呢?

举个例子

进到某度翻译网站:aHR0cHMlM0EvL2ZhbnlpLmJhaWR1LmNvbS8=,f12进行抓包,尝试输入翻译的句子或词语,抓取的包如图:

接着我们看下该请求的具体参数:

我们发现,这是个post请求,payload中除了query字段是我们要翻译的数据,还多了其它的参数,如sign,token,ts等。

此时我们会想这些参数是如何产生的?

我们直接上手看看其是如何构造的。

所有的请求都是一个套路,所以这些参数必然是在js代码里生成,并在最终发起请求的时候带上这些参数。

因此我们可以全局搜索(ctrl+shift+f)诸如:simple_means_flag:、token:、sign:、ts:等关键信息。

我们直接搜索接口关键字v2transapi:

我们发现一个有三个疑似请求的接口,分别点击这三个链接打上断点调试,使用控制变量法定位哪里的断点有效。

发现只有第二个断点有效:

去掉另外两个断点,重点调试第二个断点的上下文。

参数生成解析

我们采取这样的方式重点分析下主要参数的生成。

获取sign值

直接搜索sign的预计会有多个,我们搜索下simple_means_flag:发现,有两个地方,其它参数包括sign刚好在其附近,分别打断点调试:

这里猜测sign和ts应该是变化的值,其中ts初步猜测是时间戳,其它大概率是固定值或枚举值。

鼠标放在这个函数上,跳到这个函数所在的位置:

function(t) 就是我们需要的函数,也就是b函数具体实现:

我们找到了参数生成的地方了,剩下的就是调试,将具体的代码抠出。

运行发现报错,r 没有定义!

继续在网页端断点调试,发现r是一个具体的值,多次测试后其是一个固定值。

我们查看源代码,r是这么定义的:

var r = null;

这就奇怪了,r的固定值320305.131321201是哪来的呢?函数b()中,还有这么一段代码:

var h = (null !== r ? r : (r = window[d] || "") || "").split(".");

这段代码的意思是:

  1. 首先,检查变量r是否不为null,如果是,则直接使用r,否则执行下一步。
  2. 如果r为null,则尝试从window对象中获取属性名为d的属性的值。如果该属性不存在或者为undefined,则将r设置为空字符串。
  3. 接着,如果r为空字符串,则将r设置为一个空字符串。
  4. 最后,将r使用.进行分割,并将结果存储在变量h中。

这段代码主要的目的是从window对象中获取一个键为d的属性的值(如果存在),并将其按.进行分割存储到数组h中。

我们在Watch中查看r和d,或者在Scope中查找,发现d为字符串gtk:

我们再来看这个d的值,d就在这条赋值语句的前面:

var d = "".concat(String.fromCharCode(103)).concat(String.fromCharCode(116)).concat(String.fromCharCode(107))

103、116、107 其实分别是g、t、k这三个字符的 ASCII 码值,也就是说,d = "gtk"。

全局搜索r的值,发现其刚好是gtk的值:

继续在pycharm中运行,报错window未定义:

补充模拟window对象:

// 模拟 window 对象
var window = {
    gtk: "320305.131321201"
};

再次运行,还是报错缺少依赖函数n:

回到网页js,拿到n函数:

n函数具体实现:


再次运行:

和页面请求一致:

至此,sign解析完成。

获取token

同样,我们仍然先全局搜索token,发现其可能是个固定值。

果然,token参数是也从window全局对象common中获取的,通过搜索发现,token其实和gtk是在同一个页面,那么一样使用正则匹配就能拿到。

cookie反爬

主要是三个BAIDUID、BIDUPSID、smallFlowVersion,其中smallFlowVersion值为old,其它两个可以请求百度首页获得。
在这里插入图片描述

获取翻译结果

偷个懒,使用现成的网站小工具实现代码转换。https://curlconverter.com/python/

copy翻译接口的curl代码:

curl转python代码生成某度翻译接口的python请求代码:

https://curlconverter.com/python/

然后整合js代码,并稍作封装,即可得到翻译结果。

打包

基本功能没问题,我们可以进一步打包成exe文件进行分发使用,采用tkinter进行ui可视化(yyyy.py):

将python文件和js文件打包成单文件可执行程序:

pyinstaller --onefile --windowed --add-data="某度翻译.js;." -F -i .\xxxx.png .\yyyy.py

或者使用spec配置打包:

# -*- mode: python ; coding: utf-8 -*-


a = Analysis(
    ['yyyy.py'],
    pathex=[],
    binaries=[],
    datas=[('sign.js', '.')],  # 替换为实际的js文件名
    hiddenimports=[],
    hookspath=[],
    hooksconfig={},
    runtime_hooks=[],
    excludes=[],
    noarchive=False,
    optimize=0,
)
pyz = PYZ(a.pure)

exe = EXE(
    pyz,
    a.scripts,
    a.binaries,
    a.datas,
    [],
    name='bd翻译_公众号:海哥python',
    debug=False,
    bootloader_ignore_signals=False,
    strip=False,
    upx=True,
    upx_exclude=[],
    runtime_tmpdir=None,
    console=False,
    disable_windowed_traceback=False,
    argv_emulation=False,
    target_arch=None,
    codesign_identity=None,
    entitlements_file=None,
    icon=['xxxx.png'],  # 替换为实际的照片
)

最后

本文只提供一些思路,随着时间的推移,网站会维护,以上代码不会一直都有效,需要重新分析。

本文章中所有内容仅供学习交流,不可用于任何商业用途和非法用途,否则后果自负!

关注下方名片,后台回复bd翻译获取完整源码。

今天的分享就到这里。如果觉得不错,点赞,在看,关注安排起来吧。

JS逆向 --百度翻译 爬虫分为两个部分:第一个 伪装 目的:想办法拿到源数据第二个 交互 目的:想办法提取有用的数据。 阅读详情

相关推荐

实战解析:逆向百度翻译Acs-Token加密参数与爬虫攻防

本文详细解析了百度翻译Acs-Token参数的加密机制与逆向过程,提供了从抓包定位到算法复现的完整实战指南。通过AES-CBC加密算法分析、关键参数获取技巧以及爬虫实现中的反反爬策略,帮助开发者有效应对百度翻译接口的加密挑战。文章特别强调了请求频率控制和加密结果调试等实用技巧,为网络爬虫开发提供了宝贵经验。

weixin_27199085的博客 1129

js逆向——百度翻译

js逆向——百度翻译 详细步骤,希望能够帮助到大家

cxlseize_the_opp的博客 4096

富士SC2022,C325,C328打印机扫描到网络详细教程

富士打印机SC2022,C328,C325等型号扫描到电脑教程

weixin_41926602的博客 1万+

JS逆向学习-「百度翻译」逆向详细处理过程

在深入学js逆向的时候,看到百度翻译,尝试了一下。破解后想看下其他人的思路,看了下基本上讲的都不够全。所以在这里详细记录下我个人的处理流程,希望能对其他学者提供参考

DCSDA的博客 3304

IIS - 会话cookie中缺少HttpOnly属性

不啰嗦,我们直接开始! 先进行常规设置 打开配置编辑器 选中图中节点,将httpOnlyCookies设置为true 然后。。。不起作用。。。 换种方式 通过配置出站规则getcookie添加HttpOnly 在Web.config中添加如下出站规则 <rewrite> <outboundRules> <rule name="Add HttpOnly"> <match serverVa.

。 21万+

[官方培训]19-物理模拟 Epic 肖月 笔记

物理引擎全局解算精度的设置,帧率越高,子步越多得到的模拟结果就越精确。引擎默认情况下是以变化的帧率运行的,但是对于Chaos物理引擎来说。一般子步越小,帧率越固定,效果就会更好更稳定一些。图示的分步选项就是依据下方的最长子步时长和最大步数对动态变化的帧率,进一步的做拆分来保证物理效果。对于影视项目建议都开启分步选项。红色框内有三个迭代次数的设置,这是Chaos基于位置的约束求解算法专用的一个设置,可以简单理解为迭代次数越高,当前帧一个子步内得到的结果就越精确。

Tcohneyn的博客 1545

【JS 逆向百例】百度翻译接口参数逆向

逆向目标 目标:百度翻译接口参数 主页:https://fanyi.youdao.com/ 接口:https://fanyi.baidu.com/v2transapi 逆向参数: Form Data: sign: 706553.926920 token: d838e2bd3d5a3bb67100a7b789463022 逆向过程 抓包分析 我们在百度翻译页面随便输入文字,可以看到没有刷新页面,翻译结果就出来了,由此可以推断是 Ajax 加载的,打开开发者工具,选择 XHR 过滤 Ajax 请求.

K哥爬虫 2498

macOS 12.7.6部署Ollama+Dify避坑指南

本文介绍了在macOS 12.7.6系统下部署Ollama和Dify的详细步骤及避坑指南。主要内容包括:1)关闭系统完整性保护(SIP)以允许修改系统目录;2)安装特定版本的Docker(2.1.0.5)和docker-compose(v2.38.2)以避免兼容性问题;3)配置Ollama服务并下载nomic-embed-text和deepseek-r1:7b模型;4)针对macOS调整Dify的docker配置文件,包括延长超时时间、修改存储路径、增加资源限制等关键设置。文中提供了完整的命令操作步骤和配置

Hi20240217的博客 3100

2023-Python实现烯牛数据采集

【JS 逆向百例】 1/100学习记录:哈喽~ 前面我们接触了一些JS逆向的数据获取,如果前面的百度,有道翻译和正方教务系统的登录加密你已掌握,说明我们已经入门啦。征程万里风正劲,重任千钧再出发。后面还有很长的路要走,让我们一起努力吧!今天的学习记录是关于烯牛数据网站的数据采集,这是一个很综合的例子, 它的返回数据和请求体都进行了加密。这篇将详细记录调试步骤。

qq_61122628的博客 2880

SOLIDWORKS Flow Simulation 颗粒分离器仿真:从流场分析到分离效率优化

计算流体力学(CFD)是研究流体流动、传热及相关物理现象的核心工具,其基本原理是通过数值方法求解控制流体运动的纳维-斯托克斯方程。在工程实践中,CFD的价值在于能够对复杂流动进行高保真度仿真,从而在产品设计阶段预测性能、优化结构,显著降低物理样机的试制成本和周期。颗粒分离器作为环保、化工、矿业等领域的关键设备,其设计核心在于平衡分离效率与压力损失。借助SOLIDWORKS内嵌的Flow Simulation模块,工程师可以高效地执行流体仿真,特别是对涉及离散相的颗粒运动进行轨迹追踪和效率统计。该技术方案通过

weixin_28709649的博客 321

INCA刷写App文件必看:A2l文件配置与ProF文件安装详解(2023最新版)

本文深入解析了使用INCA进行ECU应用程序刷写时,A2l文件配置与ProF文件安装的关键细节与避坑指南。重点阐述了A2l文件必须与待刷写二进制文件严格匹配的核心逻辑,以及ProF文件与Bootloader版本强相关的安装策略,帮助开发者解决刷写过程中的常见失败问题,确保刷写流程的稳定与可靠。

milk8的博客 590

【 百度翻译】简单逆向入门

我们打开百度翻译的网址,然后输入中文并进行抓包通过这个接口我们发现它返回来的数据就是我们输入的下方数据,那接口找对了,我们再看看它的参数显然参数kw就是我们要翻译的词,我们用代码实现一下head = {delPer=0;PSINO=7;Win64;data = {'kw':wordprint(res)三个参数我们都破解了,现在我们来看看完整代码word = input('你要翻译的内容:')header = {Win64;newlogin=1;PSINO=3;delPer=0;

2301_77455840的博客 1581

【参数配置】OpenClaw 的破解之道(Doom Loop)

本文深入解析了OpenClaw中的Doom Loop(死循环)问题及其应对策略。主要内容包括: Agent Loop的核心概念:基于ReAct范式,OpenClaw通过"思考-行动-观察"循环执行任务,但可能陷入无进展的死循环。 Doom Loop现象:Agent持续执行但任务进度为零,常见于四种工具调用场景:相同调用重复执行、调用不存在工具、轮询工具卡死、操作交替振荡。 OpenClaw的防御机制: 第一道防线:重试端断路器,通过上下文压缩熔断(最多3次)和总重试次数熔断(32-160次)防止无限重试。

海兰 4038

JS逆向必会基础案例 | 百度翻译参数破解

前情回顾:有道翻译参数破解 在上一篇博客中,我们系统地分析了有道翻译的JS逆向过程。不难看出,JS逆向其实就是用Python重新来复写Javascript的代码。但当JS代码很长时,弄懂里面的逻辑关系就相当耗时,这时就需要execjs库来帮忙了(它是一个可以执行JS代码的Python库),今天就以百度翻译的参数破解为例进行说明。 目录一、分析参数构成二、Python执行JS代码三、完善JS代码 一、分析参数构成 二、Python执行JS代码 三、完善JS代码 ...

shine4869的博客 1777

UDS自动化测试-Service 0x27(CAPL调用dll实现key计算)

相信读者基于Diagnostic/ISO TP Confighration中cdd、dll文件的测试并不陌生,本文基于其的基础上,介绍在capl中调用内置的函数diagGenerateKeyFromSeed实现27服务解锁,从而进行诊断自动化测试。本文基于4个byte的Seed、16个byte的Key的安全访问,实现27服务的自动化测试。需要加载项目使用的cdd文件,如果没有的情况下可以使用canoe例程中默认的cdd文件。

诊断协议那些事儿's blog 2052

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

js逆向之百度翻译

js逆向入门之百度翻译附源码

py的学习者 1615

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

js逆向-最新版百度翻译参数解密

百度翻译最近使用脚本调用发现总是会报错,打开网站一看发现在请求头中多了一个参数Acs-Token,请求时如果不带该参数就会报错。今天就从头分析一下请求参数的加密,做过百度翻译逆向的小伙伴们都知道原有加密参数是sign和token,现在又多了Acs-Token参数。...

逆向新手的博客 3916

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

JS 逆向-百度翻译

【代码】JS 逆向-百度翻译。

qq_61565654的博客 1618

百度翻译JS逆向

1.在百度翻译界面找到需要的信息 找到我们需要的信息,去请求中查询,需要以下的参数访问 很显然,可以通过字面意思猜测 from to是从什么转什么 query是需要翻译的文字 transtype simple_means_flag domain都是个固定值 我们需要的就是找出sign和token 经过多次测试后发现token每次都不同 但是可以重复利用,我们可以把token当成固定参数使用 只有sign这个参数没有确定 接下来 需要去断点确认,在开发者模式中使用ctrl+shft+f可以快速搜索需要的

weixin_48364360的博客 478

Js逆向解锁数据获取新技能 -- 百度翻译

本文将以百度翻译为案例,展示如何使用Js逆向技巧,并解锁新的数据处理技能,让你的数据处理更加智能化和高效化。

懂亿点的博客 1220

[Python | 爬虫] 百度翻译(JS逆向获取sign值)

【代码】[Python | 爬虫] 百度翻译。

joyride_run的博客 3628

百度翻译逆向Acs-Token逆向百度翻译爬虫(技巧篇)

百度翻译参数逆向,Acs-Token逆向,Python爬虫

Not__Cry的博客 1802

【2023.6】简单js逆向之百度翻译、有道翻译

这是我在学习js逆向当中,作为新手的练习项目。在完成后记录一下。如果有兴趣的小伙伴,有错误的地方或者有更好的方法,欢迎指正分享!!!

bukaqi的博客 2716

使用js逆向破解百度翻译

【代码】使用js逆向破解百度翻译。

Polaris16的博客 1032

百度翻译 逆向

js代码(打断点扣代码,发现函数d for循环中的h是固定值 = ["320305", "131321201"]),代码如下。python代码(需要配置node环境运行上面的js sign.js)

qq_67067234的博客 1061

JS逆向之百度翻译

文章目录1. 抓包分析2. sign参数分析3. 由表及里,探索sign是如何生成的4. 编写Python代码测试飞扬的少年最动人心,奔跑的时候像是穿过了光阴,加油啊! 1. 抓包分析 目标网址,百度翻译:https://fanyi.baidu.com/?aldtype=16047#auto/zh 我们打开网站,输入要翻译的数据开始抓包分析,如下: 点开请求头,看看我们需要什么样的相关的参数: 这样我们就找到了翻译接口,并且知道了请求方式是post方式,滑到最下面看看我们需要post什么参数: 2.

自成背后的博客 4461
上一篇: Python异常处理:基础到进阶的实用指南
下一篇: python如何执行js代码,学会这几个方法就够了
海哥python
博客等级 码龄9年 1487粉丝 74原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

打赏作者

海哥python

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

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

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

打赏作者

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

抵扣说明:

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

余额充值