目录

1.前言

2.起因

3.经过

4.结果


1.前言

  • 分类:js逆向
  • 语言:python

2.起因

  • 记录一下js逆向入门案例

3.经过

  1. 分析案例,有道翻译是通过ajax的post请求获得的响应结果,打开开发者工具获取post请求时需要提交的表单数据,通过发现得出每次提交变化的参数有salt、sign、lts,其余的为固定参数。
  2. 首先分析下参数的规律,不难看出lts是13位的毫秒级时间戳,salt比lts多一位,sign则是经过加密的(32位字符串一般是md5加密)。
  3. 查询加密参数产生的过程,复制sign按快捷键ctrl+shift+f打开全局搜索,
  4. 点击{}格式化输出,继续寻找产生sign值的关键函数,可以通过打断点来逐一排查,因为全局不止一个sign关键字,有的sign跟我们所需要的无关,如果看不太懂js,还是打断点测试比较方便,最终测试到这里会进入断点,继续向上找关键函数。
  5. 看到这里就一目了然了,函数r传入参数e(e就是查询的参数‘你好’),鼠标放在navigator.appVersion上看到是一个user-agent,再往下,r是时间戳,i是r+上一位随机数,sign是使用e+i加上两个定值字符串再经过md5加密形成的。
  6. 现在只需要模拟出整的一个函数得到所需的参数就可以获取数据了。
  7. md5在python里有直接的库可以使用,只需要导入hashlib即可
  8. 完整代码
    # -*- 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逆向--有道翻译相关推荐

  1. 【爬虫进阶】Js逆向——有道批量翻译文本

    本文目录 前言 案例 难点 参数加密 IP封禁 代码解析 翻译评论 完整代码 成果 最后 前言 想要更进一步了解爬虫领域,学Js肯定是必不可少的,怎么说呢?现在大部分网站开始对数据层层加密,导致我们要 ...

  2. 逆向有道翻译[最新版本],包含解密部分

    前言 js逆向作者我也不是很有经验, 凭借写代码的经验加上一些主观上的猜测完成了此次逆向 后文提供python版本接口封装 模拟请求 打开开发者工具, 输入文字请求翻译 是这个请求了, 打开响应一看 ...

  3. JS逆向——破解百度翻译参数(sign)爬虫 超级详细

    一.分析请求参数 打开地址: https://fanyi.baidu.com/ 打开Chrome调试工具,然后随意输入一段文字,查看抓包结果. post请求 Form data 参数 如上图所示,Fo ...

  4. 反爬虫 破解js加密-有道翻译

    js 加密 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值) 经过加密,传输的就是密文,但是加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者 通过阅 ...

  5. python爬虫高级教程,JS逆向之百度翻译

    环境 python版本号 系统 游览器 python 3.7.2 win7 google chrome 关于本文 本文将会通过爬虫的方式实现简单的百度翻译.本文中的代码只供学习,不允许作为于商务作用. ...

  6. JS逆向之巨量创意signature签名

    文章目录 目标网站 接口分析 定位_signature生成位置 补环境还原js 编码测试 往期逆向文章推荐: JS逆向之百度翻译 JS逆向解析之有道翻译 JS逆向之企名科技 JS逆向之人口流动态势 j ...

  7. JS逆向之巨量星图sign签名

    文章目录 1. 目标网站 2. 初步抓包分析 3. 定位加密参数生成位置 4. 编码测试 往期逆向文章推荐: JS逆向之百度翻译 JS逆向解析之有道翻译 JS逆向之企名科技 JS逆向之人口流动态势 j ...

  8. python有道自动翻译_Python 调用有道翻译接口实现翻译

    最近为了熟悉一下 js 用有道翻译练了一下手,写一篇博客记录一下,也希望能对大家有所启迪,不过这些网站更新太快,可能大家尝试的时候会有所不同. 首先来看一下网页 post 过去的数据 大家不难发现,我 ...

  9. 基于有道翻译的英翻中微信小程序

    基于有道翻译的英翻中微信小程序 环境 微信开发者工具 微信小程序云开发 node.js v12.16.3 axios@0.20.0 cheerio@1.0.0-rc.3 相关内容 Node.js有道翻 ...

最新文章

  1. 封装成vla函数_不知道怎么封装代码?看看这几种设计模式吧!
  2. android8.0 go 机型,安卓8.0良心!还开发了安卓GO, 适配给低配手机,魅族很尴尬!...
  3. 关于jQuery在Asp.Net Mvc 框架下Ajax文件上传的实现
  4. 011_布尔值内建函数
  5. git放弃本地文件修改
  6. Java读书笔记(4)-多线程(二)
  7. cuba.platform_CUBA Platform 6.3的新增功能
  8. 容器编排技术 -- Kubernetes kubectl rollout status 命令详解
  9. css叠层_CSS 中重要的层叠概念
  10. Maven (1)---maven 基础知识
  11. android sensor源码,阅读android有关sensor的源码总结 - JerryMo06的专栏 - CSDN博客
  12. C++ STL中vector的内存机制和性能分析
  13. php创建mysql分区_创建mysql表分区的方法_MySQL
  14. 《深入理解Linux内核》笔记1:内存寻址
  15. 市场监管总局通报部分转供电主体不执行国家电价政策案例
  16. kali linux实现wifi扫描与密码字典破解入门
  17. vue单文件组件中引用其他组件
  18. 风控模型基本概念和方法
  19. Feed Ratios_usaco3.2_暴力
  20. 台式计算机拆机步骤ppt,意式咖啡机的拆解评测ppt

热门文章

  1. 部署VDI虚拟桌面带来的改变
  2. e1000网卡驱动小结
  3. 【安卓学习之常见问题】 使用Eclipse clean时,出现“cleaning all project has encountered a problem”提示
  4. java中的三目运算
  5. 【Qt】Q_INIT_RESOURCE的使用
  6. [树状数组] Galahad
  7. linux中 likely与unlikely
  8. 实验六 基于MATLAB的IIR数字滤波器设计
  9. HTML CSS个人网页设计与实现——人物介绍丁真(学生个人网站作业设计)
  10. 固态硬盘性能测试成绩