js逆向--有道翻译
目录
1.前言
2.起因
3.经过
4.结果
1.前言
- 分类:js逆向
- 语言:python
2.起因
- 记录一下js逆向入门案例
3.经过
- 分析案例,有道翻译是通过ajax的post请求获得的响应结果,打开开发者工具获取post请求时需要提交的表单数据,通过发现得出每次提交变化的参数有salt、sign、lts,其余的为固定参数。
- 首先分析下参数的规律,不难看出lts是13位的毫秒级时间戳,salt比lts多一位,sign则是经过加密的(32位字符串一般是md5加密)。
- 查询加密参数产生的过程,复制sign按快捷键ctrl+shift+f打开全局搜索,
- 点击{}格式化输出,继续寻找产生sign值的关键函数,可以通过打断点来逐一排查,因为全局不止一个sign关键字,有的sign跟我们所需要的无关,如果看不太懂js,还是打断点测试比较方便,最终测试到这里会进入断点,继续向上找关键函数。
- 看到这里就一目了然了,函数r传入参数e(e就是查询的参数‘你好’),鼠标放在navigator.appVersion上看到是一个user-agent,再往下,r是时间戳,i是r+上一位随机数,sign是使用e+i加上两个定值字符串再经过md5加密形成的。
- 现在只需要模拟出整的一个函数得到所需的参数就可以获取数据了。
- md5在python里有直接的库可以使用,只需要导入hashlib即可
- 完整代码
# -*- coding: utf-8 -*-# # --------------------------------------------------------- # Name: 有道翻译 # Description: # Author: jiangsinan # Date: 2022/1/2 # --------------------------------------------------------- import hashlib import random import timeimport requestscookies = {'OUTFOX_SEARCH_USER_ID': '-2126201429@10.108.160.105','JSESSIONID': 'aaaLM9PoxvEI0b_iZMz4x','OUTFOX_SEARCH_USER_ID_NCOO': '80978450.05360673','___rl__test__cookies': '1641107918867', }headers = {'Connection': 'keep-alive','sec-ch-ua': '" Not A;Brand";v="99", "Chromium";v="96", "Google Chrome";v="96"','Accept': 'application/json, text/javascript, */*; q=0.01','Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','X-Requested-With': 'XMLHttpRequest','sec-ch-ua-mobile': '?0','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/96.0.4664.110 Safari/537.36','sec-ch-ua-platform': '"Windows"','Origin': 'https://fanyi.youdao.com','Sec-Fetch-Site': 'same-origin','Sec-Fetch-Mode': 'cors','Sec-Fetch-Dest': 'empty','Referer': 'https://fanyi.youdao.com/','Accept-Language': 'zh-CN,zh;q=0.9', }params = (('smartresult', ['dict', 'rule']), )def MD5(e):sign = hashlib.md5(e.encode('utf-8')).hexdigest()return signquerry = input('请输入查询参数:') lts = str(time.time() * 1000) salt = lts + str(random.random() * 10) e = "fanyideskweb" + querry + salt + "Y2FYu%TNSbMCxc3t2u^XT" sign = MD5(e) data = {'i': querry,'from': 'AUTO','to': 'AUTO','smartresult': 'dict','client': 'fanyideskweb','salt': salt,'sign': sign,'lts': lts,'bv': 'fdac15c78f51b91dabd0a15d9a1b10f5','doctype': 'json','version': '2.1','keyfrom': 'fanyi.web','action': 'FY_BY_REALTlME' }response = requests.post('https://fanyi.youdao.com/translate_o', headers=headers, params=params, cookies=cookies,data=data) print(response.json())
4.结果
- 整的一个案例算是js入门级别,有什么看不懂的都可以留言,有什么比较奇怪的案例也可以加我qq:2459140452一起讨论。
js逆向--有道翻译相关推荐
- 【爬虫进阶】Js逆向——有道批量翻译文本
本文目录 前言 案例 难点 参数加密 IP封禁 代码解析 翻译评论 完整代码 成果 最后 前言 想要更进一步了解爬虫领域,学Js肯定是必不可少的,怎么说呢?现在大部分网站开始对数据层层加密,导致我们要 ...
- 逆向有道翻译[最新版本],包含解密部分
前言 js逆向作者我也不是很有经验, 凭借写代码的经验加上一些主观上的猜测完成了此次逆向 后文提供python版本接口封装 模拟请求 打开开发者工具, 输入文字请求翻译 是这个请求了, 打开响应一看 ...
- JS逆向——破解百度翻译参数(sign)爬虫 超级详细
一.分析请求参数 打开地址: https://fanyi.baidu.com/ 打开Chrome调试工具,然后随意输入一段文字,查看抓包结果. post请求 Form data 参数 如上图所示,Fo ...
- 反爬虫 破解js加密-有道翻译
js 加密 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值) 经过加密,传输的就是密文,但是加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者 通过阅 ...
- python爬虫高级教程,JS逆向之百度翻译
环境 python版本号 系统 游览器 python 3.7.2 win7 google chrome 关于本文 本文将会通过爬虫的方式实现简单的百度翻译.本文中的代码只供学习,不允许作为于商务作用. ...
- JS逆向之巨量创意signature签名
文章目录 目标网站 接口分析 定位_signature生成位置 补环境还原js 编码测试 往期逆向文章推荐: JS逆向之百度翻译 JS逆向解析之有道翻译 JS逆向之企名科技 JS逆向之人口流动态势 j ...
- JS逆向之巨量星图sign签名
文章目录 1. 目标网站 2. 初步抓包分析 3. 定位加密参数生成位置 4. 编码测试 往期逆向文章推荐: JS逆向之百度翻译 JS逆向解析之有道翻译 JS逆向之企名科技 JS逆向之人口流动态势 j ...
- python有道自动翻译_Python 调用有道翻译接口实现翻译
最近为了熟悉一下 js 用有道翻译练了一下手,写一篇博客记录一下,也希望能对大家有所启迪,不过这些网站更新太快,可能大家尝试的时候会有所不同. 首先来看一下网页 post 过去的数据 大家不难发现,我 ...
- 基于有道翻译的英翻中微信小程序
基于有道翻译的英翻中微信小程序 环境 微信开发者工具 微信小程序云开发 node.js v12.16.3 axios@0.20.0 cheerio@1.0.0-rc.3 相关内容 Node.js有道翻 ...
最新文章
- 封装成vla函数_不知道怎么封装代码?看看这几种设计模式吧!
- android8.0 go 机型,安卓8.0良心!还开发了安卓GO, 适配给低配手机,魅族很尴尬!...
- 关于jQuery在Asp.Net Mvc 框架下Ajax文件上传的实现
- 011_布尔值内建函数
- git放弃本地文件修改
- Java读书笔记(4)-多线程(二)
- cuba.platform_CUBA Platform 6.3的新增功能
- 容器编排技术 -- Kubernetes kubectl rollout status 命令详解
- css叠层_CSS 中重要的层叠概念
- Maven (1)---maven 基础知识
- android sensor源码,阅读android有关sensor的源码总结 - JerryMo06的专栏 - CSDN博客
- C++ STL中vector的内存机制和性能分析
- php创建mysql分区_创建mysql表分区的方法_MySQL
- 《深入理解Linux内核》笔记1:内存寻址
- 市场监管总局通报部分转供电主体不执行国家电价政策案例
- kali linux实现wifi扫描与密码字典破解入门
- vue单文件组件中引用其他组件
- 风控模型基本概念和方法
- Feed Ratios_usaco3.2_暴力
- 台式计算机拆机步骤ppt,意式咖啡机的拆解评测ppt
热门文章
- 部署VDI虚拟桌面带来的改变
- e1000网卡驱动小结
- 【安卓学习之常见问题】 使用Eclipse clean时,出现“cleaning all project has encountered a problem”提示
- java中的三目运算
- 【Qt】Q_INIT_RESOURCE的使用
- [树状数组] Galahad
- linux中 likely与unlikely
- 实验六 基于MATLAB的IIR数字滤波器设计
- HTML CSS个人网页设计与实现——人物介绍丁真(学生个人网站作业设计)
- 固态硬盘性能测试成绩