爬虫:突破有道翻译js加密

代码已上传至个人GitHub,可供下载: 突破有道翻译js加密

思路:(python版本3.6)

1、分析post上传form信息,发现存在加密行为

2、查看网页js文件,分析加密函数

3、根据加密函数原理进行解密,突破有道的翻译接口

一、打开有道翻译网页,按F12键,并输入内容进行翻译,可以看到服务器对网页请求作出的回应,最需要关注的是上传的信息和上传的路径(URL)。

通过多次观察,发现上传的form信息中不断变化的信息是(i、salt、sign、ts),其他的信息都是不变的。

根据以往经验就可以判断salt、sign、ts就是有道翻译为机器获取其翻译内容所设置的障碍。

二、寻找js文件中相应的加密函数,并分析其加密过程。

刷新一下网页,就可以看到反馈回来的各种js文件,fanyi.min.js最为显眼,像不像【翻译*密.js】。

打开fanyi.min.js文件,并将js代码进行格式化,并查找相应的加密函数。

将格式化后的js代码放入txt文档进行查找操作,可以得到如下的加密函数。

由上图函数可以看到ts、bv、salt、sign参数的由来,整理如下:

  • ts:指的是获取当前的时间戳乘以1000取整
  • bv:获取当前有道翻译版本的MD5编码(版本一般长时间不变)
  • salt:ts加上[1, 10]之间的随机数
  • sign:md5(“fanyideskweb” + 要翻译的内容 + salt + "1L5ja}w$puC.v_Kz3@yYn")

注意:由于有道翻译的反爬虫机制,其中的参数每过一段时间可能会改变,或者直接加密函数发生改变,但不变的解决问题的思想。

三、根据对加密函数的分析,就可以写相对应的解密代码了

from urllib import request, parse
import time
import random
import hashlib
import jsondef get_ts():ts = str(int(1000 * time.time()))return tsdef get_salt(ts):salt = ts + str(random.randint(0, 10))return saltdef get_sign(words, salt):content = 'fanyideskweb' + words + salt + '1L5ja}w$puC.v_Kz3@yYn'sign = hashlib.md5(content.encode()).hexdigest()return signdef translate(words, ts, salt, sign):url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"data = {"i": words,"from": "AUTO","to": "AUTO","smartresult": "dict","client": "fanyideskweb","salt": salt,"sign": sign,'ts': ts,'bv': 'bbb3ed55971873051bc2ff740579bb49',"doctype": "json","version": "2.1","keyfrom": "fanyi.web","action": "FY_BY_REALTIME","typoResult": "false"}data = parse.urlencode(data).encode()headers = {'Accept': 'application/json, text/javascript, */*; q=0.01',# 'Accept-Encoding': 'gzip, deflate','Accept-Language': 'zh-CN,zh;q=0.9','Connection': 'keep-alive','Content-Length': len(data),'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8','Cookie': '__guid=204659719.2422785200799945700.1554675512727.244; OUTFOX_SEARCH_USER_ID=-1327275086@10.169.0.82; OUTFOX_SEARCH_USER_ID_NCOO=378292303.3354687; JSESSIONID=aaaLYwaICIOxi6ofRh8Nw; monitor_count=8; ___rl__test__cookies=1554693830913','Host': 'fanyi.youdao.com','Origin': 'http://fanyi.youdao.com','Referer': 'http://fanyi.youdao.com/','User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.132 Safari/537.36','X-Requested-With': 'XMLHttpRequest'}req = request.Request(url=url, data=data, headers=headers)rsp = request.urlopen(req)html = rsp.read().decode('utf-8')json_data = json.loads(html)print('翻译的结果为:' + json_data['translateResult'][0][0]['tgt'])if __name__ == '__main__':words = input('请输入要翻译的内容:')ts = get_ts()salt = get_salt(ts)sign = get_sign(words, salt)translate(words, ts, salt, sign)

运行结果:

代码已上传至个人GitHub,可供下载: 突破有道翻译js加密

爬虫:突破有道翻译js加密(最新)相关推荐

  1. 破解有道翻译js加密,纯小白练手

    有道翻译js解析 第一次在csdn上发技术贴,以前都是在印象笔记,主要是最近闲的,太无聊了. 作为开始,想找一个超级简单的,然后循序渐进(比较有仪式感). 想起来当初学爬虫的时候,看韦世东的<P ...

  2. 【爬虫逆向案例】某道翻译js逆向—— sign解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! [爬虫逆向案例]某道翻译js逆向-- sign解密 1.前言 2.步骤 3.源码 4.号外 1.前言 相信各位小伙 ...

  3. JS解密入门案例:python有道翻译JS解密

    前言 嗨喽!大家好呀,这里是魔王~ 课程亮点: 系统分析网页结构 动态数据抓包演示 json数据解析 JS解密 环境介绍: python 3.8 pycharm >>> 需要安装no ...

  4. python有道字典_Linux下自制有道词典 - python 解密有道词典JS加密

    对于爬虫新手来说,JS解密是一道过不去的坎,需要不断地练习. 平时在linux下开发,鉴于没有什么好用翻译软件,打开网易也占用系统资源,所以写了个在控制台的翻译软件接口. 使用python爬虫,查看网 ...

  5. python爬虫模拟有道翻译

    python爬虫模拟有道翻译 案例目的: 通过模拟有道翻译,介绍携带form表单发送post请求以及破解form表单中的加密数据. 案例实现功能: 模拟有道翻译,实现中英互译. 爬取过程分析: 找到目 ...

  6. js逆向之有道词js加密解析

    js逆向之有道词js加密解析 文章目录 js逆向之有道词js加密解析 需要用到的工具: 下面就介绍一下3种看js加密的代码方法: 第一种方法: 第二种: 第三种: 下面我们来了解我们要用什么解密md5 ...

  7. Python爬虫神器pyppeteer,对 js 加密降维打击

    爬虫神器pyppeteer,对 js 加密降维打击 pyppeteer 是对无头浏览器  puppeteer 的 Python 封装.无头浏览器广泛用于自动化测试,同时也是一种很好地爬虫思路. 使用 ...

  8. 爬虫破解js加密破解(二) 有道词典js加密参数 sign破解

    在爬虫过程中,经常给服务器造成压力(比如耗尽CPU,内存,带宽等),为了减少不必要的访问(比如爬虫),网页开发者就发明了反爬虫技术. 常见的反爬虫技术有封ip,user_agent,字体库,js加密, ...

  9. python爬虫——有道翻译JS解密

    爬虫兴起的同时,反爬虫手段也在不断更新,今天以有道翻译http://fanyi.youdao.com/为例,介绍破解JavaScript加密的反爬虫基本流程. 分析网页 我们进入网站,随便输入一个内容 ...

最新文章

  1. 【读书笔记】代码可为维护性标准(一)
  2. LeetCode-Majority Element II
  3. MySQL常用存储引擎之MyISAM
  4. 5个构建Spring Boot API的实用技巧
  5. QQ注册时间查询非常准确源码程序
  6. sybase修改密码
  7. java 1.8 or higher_NetBeans安装提示neatbeans cannot find java 1.8 or higher
  8. mac安装旺旺启动台找不到_如何正确安装卸载mac软件
  9. 【mock】数据模板定义规范DTD 数据占位符定义规范DPD
  10. 如何注册阿里大于申请签名和短信模板
  11. 【高等数学】曲率和曲率半径
  12. 维棠flv视频下载软件 v2.0.9.4官方免费版
  13. 乖 == 孝顺 ?
  14. DirectX游戏编程入门——前言
  15. 提高程序运行速度的方法
  16. 新建 Microsoft Office Word 文档(C语言)
  17. 大型机操作系统-TSO的操作方法
  18. 树莓派4b和3b+功耗_从入手树莓派开始
  19. Android jp2(jpeg2000)图片的解码显示
  20. 韩国mysql化妆品_jsp70279化妆品护肤品购物网站 双数据库 mysql版

热门文章

  1. Facebook、阿里等大佬现身说法,NLP是否被高估了?
  2. 论文浅尝 | 神经符号推理综述(下)
  3. 论文浅尝 - ICML2020 | 基于子图推理的归纳式关系预测
  4. 知识工场 | CN-DBpedia 漫游指南
  5. NLP事件抽取综述(上中下):中文事件抽取、开放域事件抽取、事件数据生成、跨语言事件抽取、小样本事件抽取、零样本事件抽取等类型
  6. 谷歌大改Transformer注意力,速度、内存利用率都提上去了-新的 Transformer 架构——Performer
  7. 2019字节跳动秋招笔试
  8. Android官方开发文档Training系列课程中文版:线程执行操作之线程间通讯
  9. 论文笔记(SocialGCN: An Efficient Graph Convolutional Network based Model for Social Recommendation)
  10. HTML5/CSS3基础