搜狗翻译加密原理分析
写在开头,不差钱的建议直接去调用搜狗官方的api,稳定、不会被封、且高并发,也算对官方的支持>
- 建议先了解下chrome的调试方法:https://www.jianshu.com/p/b25c5b88baf5
- 工具:chrome
- 首页https://fanyi.sogou.com/,先看看调用一次翻译需要哪些数据:
第一步:抓包
从抓包数据中不难看出,需要一些headers和form data,headers这里不细说,和它没关系,我们主要看加密方式;
实验步骤:
- 用python创建一个脚本,把参数什么的copy到脚本里,重放这次请求,没问题,直接返回正确结果;(大家用postman回放也可以,都一样)
- form data中要注意的只有s和uuid,其他的不用说,很明显就能看出参数啥意思;
- uuid;
- 修改s,重放请求,返回错误,说明s值是服务器端要校验的!
步骤二:调式
实验步骤:
打开开发者工具—>source,可以看到网页加载的资源,那么加密算法一定就在某个js脚本里;
在上面抓包我们看到了,和s一起发送的数据还有client和uuid等信息,s这个字符搜起来一大堆,所以我们选择在js里搜client效率会高点;
在source的所有js脚本里挨个搜索client和uuid,依次排查,最终在一个脚本里找到对应的数据:
在这里我们看到,s的值来自J,而J的值来自公式s("" + P + O + M + V),那么POMV这些变量又是咋来的呢?s这个函数又是啥?在289行打上断点,重新在搜狗的输入框输入一段话,网页会在断点处停下并显示相关变量的值:
很明显,M是待翻译文本,O是目的语言,P是原始语言,V是一串数值;现在的问题重新变为,s()这个函数是什么?V这个数值是什么?
我们先看V值:
在代码里搜索V(注意打开匹配大小写,效率高些),搜索上一个(在我们的参数构造代码出现前的那一个),发现var V = window.seccode
,window.seccode这个值在搜索引擎找了下,没有,那应该就是搜狗自己定义的值了,于是在source的各个js文件里搜索它,在一个js文件里找到了:
发现这个值是写死的,打开无痕浏览,重新打开搜狗搜索,发现里面的window.seccode值一样,说明是个定值,类似于salt;
- 现在只剩s(),我们就可以自己计算s = s(’’ + P + O + M + V)的值了;
- 我们把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调试的文章(就是开头让你们看的那篇),于是赶紧来练习一遍
搜狗翻译加密原理分析相关推荐
- Https 加密原理分析
众所周知,HTTP 协议通过明文传输,是不安全的.于是,就在 HTTP 协议的基础上,进行了数据加密,也就诞生了 HTTPS 协议.注意,HTTPS 并不是一个新的协议,它只不过是在 HTTP 的基础 ...
- python 自制搜狗翻译工具
一.登陆搜狗翻译页面,分析请求 1.url地址:https://fanyi.sogou.com/ 在里面输入中文翻译 可以看出,请求的地址为 https://fanyi.sogou.com/reven ...
- 文件夹加密原理 [转]
谈文件夹的加密 一.文件夹加密的方式有几种? 在Windows平台下,文件夹加密的方式归纳起来有两种: 一种是简单地对文件夹进行各种方式的隐藏,甚至利用Windows的漏洞进行隐藏,这种软件根本就 ...
- md5加密 原理 js 前后端使用
密码进行md5加密 原理分析:加密就是存进数据库的时候变成MD5存进去,解密,就是对比的时候,将用户输入的密码转换成MD5和数据库里面的对比.; 1.我们先来看hash算法:我们可以通过 crypto ...
- 百度js 检测输入法_不明恶意攻击致lt;搜狗搜索gt;lt;搜索结果gt;跳转lt;百度搜索gt;技术原理分析...
不明恶意攻击致<搜狗搜索><搜索结果>跳转<百度搜索>技术原理分析 原创 2017-09-29 玄魂工作室 EE 玄魂工作室 不明恶意攻击致<搜狗搜索> ...
- Windows系统EFS加密解密原理分析/无密码解密思路
EFS加密是windows系统自带的加密方式,一个系统用户对文件加密后,只有以该用户的身份登陆才能读取该文件.EFS加密的文件和文件夹名字颜色是绿色,或者在该文件或文件夹的高级属性是加密属性.这样做在 ...
- php源代码保护——PHP加密方案分析解密还原
前言 php是一种解释型脚本语言. 与编译型语言不同,php源代码不是直接翻译成机器语言.而是翻译成中间代码(OPCODE) ,再由解释器(ZEND引擎)对中间代码进行解释运行 . 在php源代码的保 ...
- 安卓手机Recovery概述和原理分析
安卓手机Recovery概述 1.Recovery是用户想要刷机的过程中经常会遇到的一个词.那么什么是Recovery?Recovery模式又是什么意思?手机怎么进入Recovery模式? 2.Rec ...
- 匿名突破网络限制 (Tor工作原理分析)
转载自:http://blog.163.com/mike_gz/blog/static/247532200672932800/ 网管顾名思义,就是天天管着网络.想尽各种手段限制我们上网的人.在网络中订 ...
最新文章
- Java学习笔记之:Java String类
- ubantu Wine QQ
- 同时安装 Python 2 和 Python 3环境下 pip 的使用
- 犀牛3D造型软件Rhino 7 for Mac
- 如何让应用出现在LINUX的右键/打开方式/更多应用
- 谷歌翻译突然用不了了
- UART串口驱动代码编写及总结
- 计算机excel表格教程高级筛选6,Excel高级筛选
- oracle静默安装报错,静默安装oracle时报错
- 埃加洛尔虚拟服务器,致我终将逝去的二区:新一轮大服务器实装
- java 10000以内的质数_10000以内的质数表.doc
- 是什么让物联网放慢脚步?
- 二叉树的顺序存储和三种遍历(代码)
- 网络攻防——Goby+AWVS漏洞扫描
- ROS学习笔记 程序简单示例一:发布者与订阅者(talker和listener)
- 将Sublime Text 设置成中文版
- vue-router路由的安装、配置、具体用法和Vue-router学习笔记
- 开关电源雷击浪涌整改_防雷击浪涌的开关电源电路设计
- 驾校微机室计算机操作流程,学车
- 数据可视化echarts介绍