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

爬虫:突破有道翻译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加密

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/490739.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

华为发布 AR 地图技术,但最佳的运行设备不是手机

来源:爱范儿(ID:ifanr)「Cyberverse」这个词有两个含义,一个是 Cyber(网络),一个是 Universe(宇宙),华为将这两个词融合起来,将它称为…

jsp标签 判断 余数_程序员的数学基础课(三)余数与迭代法

问题:什么是余数 余数的作用?余数在生活中非常常见,日历,日期,其中包含一个定理 同余定理。同余定理:余数总是在一个固定的范围内,任意两个整数 a 和 b,如果它们除以正整数 m 得到的…

爬虫:获取豆瓣电影爱情片榜单封面图片

电影中单纯而美好的爱情总是让人陷入美好无瑕的幻想。 代码已上传至个人GitHub,可供查看:获取豆瓣电影爱情片榜单封面图片 爬虫:获取豆瓣电影爱情片榜单封面图片 目的:获取豆瓣电影爱情片榜单封面图片,并保存到本地。…

邬贺铨:解读5G技术关键点,及如何影响AIoT

来源:雷锋网雷锋网按:物联网发展至今,有两项技术对其赋能产业起到了关键作用,一项是这两年发展神速的AI,另一项则是当下逐渐开始商用的5G。前者使物联网(IoT)进化到智联网(AIoT),从单…

msdn画圆弧函数_精确之美——用TikZ画硬盘示意图

序言备考某等级考试的时候,在教材中碰到了几个一直不太理解的、关于硬盘的概念:磁道、柱面号、扇区。然而教材没有配图,无法直观地了解这些概念的物理形态。维基百科的硬盘[1]词条页中倒是有一副不错的示意图,我截图搬运了过来机械…

爬虫:验证码识别准确率(Tesseract-OCR)

爬虫:验证码识别准确率(Tesseract-OCR) 现在的网站为了防止人们轻易的获取登陆后的页面信息,在登陆上设置了很多的障碍,验证码就是其中的一种,所谓道高一尺,魔高一丈,人们总能想出办…

【赠书】21世纪科技竞争的核心是超级智能的控制权

这篇文章是根据《崛起的超级智能:互联网大脑如何影响科技未来》的核心观点对21世纪世界科技竞争的判断。《崛起的超级智能》受到张亚勤、刘慈欣、周鸿祎、王飞跃、约翰.翰兹等专家的联合推荐。作者刘锋,2019年7月由中信出版社出版。《崛起的超级智能》主…

MATLAB中的微积分运算(数值符号)

显然这个函数是单词differential(微分)的简写,用于计算微分。实际上准确来说计算的是差商。 如果输入一个长度为n的一维向量,则该函数将会返回长度为n-1的向量,向量的值是原向量相邻元素的差,于是可以计算一…

电脑手写板_点到之处妙笔生花,实用平板电脑手写电容笔推荐

如今随着科技的不断发展,人们生活水平也在逐步地提升。除了手机以外,很多人都会给自己入手一款平板电脑。不管是观看电影还是游戏办公,大尺寸的屏幕都能带来更加清晰的视觉效果。而电容笔的出现,可以说跟平板电脑是一组巧妙的搭配…

图像处理:给验证码图片做降噪处理及数据清洗

上一篇博文:https://blog.csdn.net/qq_40962368/article/details/89312429 图像处理:给验证码图片做降噪处理及数据清洗 在上一篇博文中,tesseract对验证码识别的准确率还是非常低的,改进措施的话,可以从三个方面来考…

X-Brain:如此美丽可爱的大脑工作原理

这个帖子很好地提醒了我,为什么我愿意跟如此美丽可爱的大脑一起工作。因为真正的大脑非常不可爱,长得也难看。我们从外往里看吧。生物学有时似乎非常让人满意,比如你的头上有一个真正的俄罗斯套娃。你有头发,然后是头皮&#xff0…

SpringMVC注解@RequestParam全面解析

在SpringMVC后台控制层获取参数的方式主要有两种,一种是request.getParameter("name"),另外一种是用注解RequestParam直接获取。这里主要讲这个注解 一、基本使用,获取提交的参数 后端代码: Java代码 RequestMapping(…

MATLAB(六)数据处理

一、Matlab中的默认数据文件mat文件 例1、把Matlab工作空间中的数据矩阵a、b、c保存到数据文件data1.mat中。 >> a [1, 2, 3] a 1 2 3 >> b [4, 5, 6] b 4 5 6 >> c [7, 8, 9] c 7 8 9 >> save data1 a b c 例2、把例1生…

java怎么安装_Windows、Linux、Mac下安装JDK

前言在知乎上看到很多童鞋在学Java的时候,因为安装jdk时没有正确的配置,会遇到很多问题。所以决定今天写一下jdk在Windows、Mac、Linux下都怎么安装。下载JDK“巧妇难为无米之炊”,所以首先我们要去Oracle官网上下载jdk,Java8下载…

200年历史的神经科学难题,取得重大突破

图片来源:Diogo Matias,Champalimaud基金会来源:中国生物技术网北京时间8月13日,发表在《Nature Neuroscience》上的一项研究,来自葡萄牙里斯本Champalimaud未知中心的研究团队解决了一个长达200年历史的神经科学难题。…

关系数据库SQL之可编程性触发器

前言 前面关系数据库SQL之可编程性函数(用户自定义函数)一文提到关系型数据库提供了可编程性的函数、存储过程、事务、触发器及游标,前文已介绍了函数、存储过程、事务,本文来介绍一下触发器的使用。(还是以前面的银行系统为例) 概…

图像处理:图像特效之油画效果

利用OpenCVpython对图片进行处理产生油画的效果 算法可以分为五步: 1、获取图像的灰度(gray)图片2、设计一个小方框(4x4 or 8x8 or 10x10等),统计每个小方框的像素值3、将0-255的灰度值划分成几个等级,并把第二步处理…

socket模拟http的登陆_python模拟登陆知乎(最新版)

为啥要写这一篇文章呢?(主要是qq群内有人在模拟登陆知乎,一直不成功)然后我抓包看了下,发现知乎登陆页已经改版了,而且难度大大提高了。开始抓包首先内,还是打开知乎首页,然后输入账…

图像识别:利用KNN实现手写数字识别(mnist数据集)

图像识别:利用KNN实现手写数字识别(mnist数据集) 步骤: 1、数据的加载(trainSize和testSize不要设置的太大) 2、k值的设定(不宜过大) 3、KNN的核心:距离的计算 4、k个最近…

一个与生命起源有关的悖论终于得到了解决

来源:原理当Caitlin Cornell低头看显微镜时,她看见黑色的背景下浮现出一些大大的明亮斑点。它们就像微缩的太阳,在深色的太空幕布下闪耀着光芒。Conell回忆起把这些斑点展示给她的导师Sarah Keller时的兴奋,那时她们意识到&#x…