写在开头,不差钱的建议直接去调用搜狗官方的api,稳定、不会被封、且高并发,也算对官方的支持>

  • 建议先了解下chrome的调试方法:https://www.jianshu.com/p/b25c5b88baf5
  • 工具:chrome
  • 首页https://fanyi.sogou.com/,先看看调用一次翻译需要哪些数据:

第一步:抓包


从抓包数据中不难看出,需要一些headers和form data,headers这里不细说,和它没关系,我们主要看加密方式;

实验步骤:
  1. 用python创建一个脚本,把参数什么的copy到脚本里,重放这次请求,没问题,直接返回正确结果;(大家用postman回放也可以,都一样)
  2. form data中要注意的只有s和uuid,其他的不用说,很明显就能看出参数啥意思;
  3. uuid;
  4. 修改s,重放请求,返回错误,说明s值是服务器端要校验的!

步骤二:调式

实验步骤:
  1. 打开开发者工具—>source,可以看到网页加载的资源,那么加密算法一定就在某个js脚本里;

  2. 在上面抓包我们看到了,和s一起发送的数据还有client和uuid等信息,s这个字符搜起来一大堆,所以我们选择在js里搜client效率会高点;

  3. 在source的所有js脚本里挨个搜索client和uuid,依次排查,最终在一个脚本里找到对应的数据:

    在这里我们看到,s的值来自J,而J的值来自公式s("" + P + O + M + V),那么POMV这些变量又是咋来的呢?s这个函数又是啥?

  4. 在289行打上断点,重新在搜狗的输入框输入一段话,网页会在断点处停下并显示相关变量的值:

    很明显,M是待翻译文本,O是目的语言,P是原始语言,V是一串数值;

  5. 现在的问题重新变为,s()这个函数是什么?V这个数值是什么?

  6. 我们先看V值:

    在代码里搜索V(注意打开匹配大小写,效率高些),搜索上一个(在我们的参数构造代码出现前的那一个),发现var V = window.seccode,window.seccode这个值在搜索引擎找了下,没有,那应该就是搜狗自己定义的值了,于是在source的各个js文件里搜索它,在一个js文件里找到了:

发现这个值是写死的,打开无痕浏览,重新打开搜狗搜索,发现里面的window.seccode值一样,说明是个定值,类似于salt;

  1. 现在只剩s(),我们就可以自己计算s = s(’’ + P + O + M + V)的值了;
  2. 我们把js代码格式化下,点击下chrome的括号小图标即可

    这样我们搜索s()被定义的地方就方便了,因为js中定义函数要么是s = function(){…} ,要么是function s(){…},所以我们依次搜索s(s =,在同一个文件的同一个函数里发现这个代码:
    (和大家说个搜索小技巧,这里搜索尽量在我们发现data数据那里,搜索上一个,并且s = 优先查看在同一个函数内的s =,这样就可以找到离我们的data代码最近的一个被定义的s,省去了不少事!)

    在console里打印下n(50),发现它确实是一个函数!

    点一下,跳转到对应的js处,得到s()函数的代码为:
function(t, n) {if (void 0 === t || null === t)throw new Error("Illegal argument " + t);var r = e.wordsToBytes(a(t, n));return n && n.asBytes ? r : n && n.asString ? i.bytesToString(r) : e.bytesToHex(r)
}

在console中测试下这个代码:

发现和我们的data中s值完全一致,且第二个参数可有可无,不影响结果;

9.这样,整个form data数据我们都知道怎么计算了,大家可以用自己的编程语言实现对应的代码即可(其实s()这个函数就是一个md5算法,噗哈哈)

10.都到这一步了,我们可以看看form data里的uuid到底是啥,用搜s()的方法找到uuid,发现uuid = B,搜索B = ,只有俩,发现

向上搜索o =,得到

在console打印n(16),发现是一个函数,且有get方法,直接调用:

完:其实是今天看了一篇chrome调试的文章(就是开头让你们看的那篇),于是赶紧来练习一遍

搜狗翻译加密原理分析相关推荐

  1. Https 加密原理分析

    众所周知,HTTP 协议通过明文传输,是不安全的.于是,就在 HTTP 协议的基础上,进行了数据加密,也就诞生了 HTTPS 协议.注意,HTTPS 并不是一个新的协议,它只不过是在 HTTP 的基础 ...

  2. python 自制搜狗翻译工具

    一.登陆搜狗翻译页面,分析请求 1.url地址:https://fanyi.sogou.com/ 在里面输入中文翻译 可以看出,请求的地址为 https://fanyi.sogou.com/reven ...

  3. 文件夹加密原理 [转]

    谈文件夹的加密 一.文件夹加密的方式有几种?  在Windows平台下,文件夹加密的方式归纳起来有两种:  一种是简单地对文件夹进行各种方式的隐藏,甚至利用Windows的漏洞进行隐藏,这种软件根本就 ...

  4. md5加密 原理 js 前后端使用

    密码进行md5加密 原理分析:加密就是存进数据库的时候变成MD5存进去,解密,就是对比的时候,将用户输入的密码转换成MD5和数据库里面的对比.; 1.我们先来看hash算法:我们可以通过 crypto ...

  5. 百度js 检测输入法_不明恶意攻击致lt;搜狗搜索gt;lt;搜索结果gt;跳转lt;百度搜索gt;技术原理分析...

    不明恶意攻击致<搜狗搜索><搜索结果>跳转<百度搜索>技术原理分析 原创 2017-09-29 玄魂工作室 EE 玄魂工作室 不明恶意攻击致<搜狗搜索> ...

  6. Windows系统EFS加密解密原理分析/无密码解密思路

    EFS加密是windows系统自带的加密方式,一个系统用户对文件加密后,只有以该用户的身份登陆才能读取该文件.EFS加密的文件和文件夹名字颜色是绿色,或者在该文件或文件夹的高级属性是加密属性.这样做在 ...

  7. php源代码保护——PHP加密方案分析解密还原

    前言 php是一种解释型脚本语言. 与编译型语言不同,php源代码不是直接翻译成机器语言.而是翻译成中间代码(OPCODE) ,再由解释器(ZEND引擎)对中间代码进行解释运行 . 在php源代码的保 ...

  8. 安卓手机Recovery概述和原理分析

    安卓手机Recovery概述 1.Recovery是用户想要刷机的过程中经常会遇到的一个词.那么什么是Recovery?Recovery模式又是什么意思?手机怎么进入Recovery模式? 2.Rec ...

  9. 匿名突破网络限制 (Tor工作原理分析)

    转载自:http://blog.163.com/mike_gz/blog/static/247532200672932800/ 网管顾名思义,就是天天管着网络.想尽各种手段限制我们上网的人.在网络中订 ...

最新文章

  1. Java学习笔记之:Java String类
  2. ubantu Wine QQ
  3. 同时安装 Python 2 和 Python 3环境下 pip 的使用
  4. 犀牛3D造型软件Rhino 7 for Mac
  5. 如何让应用出现在LINUX的右键/打开方式/更多应用
  6. 谷歌翻译突然用不了了
  7. UART串口驱动代码编写及总结
  8. 计算机excel表格教程高级筛选6,Excel高级筛选
  9. oracle静默安装报错,静默安装oracle时报错
  10. 埃加洛尔虚拟服务器,致我终将逝去的二区:新一轮大服务器实装
  11. java 10000以内的质数_10000以内的质数表.doc
  12. 是什么让物联网放慢脚步?
  13. 二叉树的顺序存储和三种遍历(代码)
  14. 网络攻防——Goby+AWVS漏洞扫描
  15. ROS学习笔记 程序简单示例一:发布者与订阅者(talker和listener)
  16. 将Sublime Text 设置成中文版
  17. vue-router路由的安装、配置、具体用法和Vue-router学习笔记
  18. 开关电源雷击浪涌整改_防雷击浪涌的开关电源电路设计
  19. 驾校微机室计算机操作流程,学车
  20. 数据可视化echarts介绍

热门文章

  1. 自动驾驶两大领域的研究热点:计算机视觉&机器人技术
  2. 6 Processes 下
  3. 做个网页游戏送女票当情侣礼物
  4. FastDFS+Nginx安装配置
  5. Ultimate Email Toolkit:16种出色的电子邮件工具
  6. Linux学习笔记(5)(标准输入输出)
  7. Pytorch学习笔记——fan_in和fan_out
  8. (day2-spring和mybatis学习)-->重点增删改查
  9. 聊聊无线充电——华为Mate RS保时捷版无线充电器详解(上篇)
  10. 弱口令实验室招新赛Writeup