有道云翻译链接https://fanyi.youdao.com/
通过抓包发现Post的信息为

其中salt,sign,lts,bv就是反爬虫机制,每次信息不同。


打开开发者工具-network,可以看到js文件,转换下格式,关键字搜索,可以查到这个四个参数。
稍微梳理下,bv值是固定的,通过md5加密,navigator.appVersion就是浏览器的user-agent,ts是时间戳,salt也算是时间戳,sign也是md5加密,key是要查询的单词。

bv= n.md5(navigator.appVersion)
ts= "" + (new Date).getTime()
salt = ts + parseInt(10 * Math.random(), 10);
sign: n.md5("fanyideskweb" + key + salt + "Y2FYu%TNSbMCxc3t2u^XT")

将上面四个参数用python模拟出来就可以了,首先模拟ts和salt

def get_salt():lts_get = int(time.time())salt_get = lts_get + random.randint(0, 10)return lts_get, salt_get

然后是bv和sign

def get_md5(v):md5 = hashlib.md5()  # md5对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来# navigator.appVersion 就是user-agentmd5.update(ua_header["User-Agent"].encode("utf-8"))bv = md5.hexdigest()# update需要一个bytes格式参数sign_get = "fanyideskweb" + v + str(get_salt()[1]) + "Y2FYu%TNSbMCxc3t2u^XT"md5.update(sign_get.encode('utf-8'))sign = md5.hexdigest()  # 拿到加密字符串return bv, sign

完整代码如下:

from urllib import request
from urllib import parse
import time
import random
import hashlibdef get_salt():lts_get = int(time.time())salt_get = lts_get + random.randint(0, 10)return lts_get, salt_getdef get_md5(v):md5 = hashlib.md5()  # md5对象,md5不能反解,但是加密是固定的,就是关系是一一对应,所以有缺陷,可以被对撞出来# navigator.appVersion 就是user-agentmd5.update(ua_header["User-Agent"].encode("utf-8"))bv = md5.hexdigest()# update需要一个bytes格式参数sign_get = "fanyideskweb" + v + str(get_salt()[1]) + "Y2FYu%TNSbMCxc3t2u^XT"md5.update(sign_get.encode('utf-8'))sign = md5.hexdigest()  # 拿到加密字符串return bv, signurl = "https://fanyi.youdao.com/translate?smartresult_o=dict&smartresult=rule"
ua_header = {"Host": "fanyi.youdao.com","Accept": "application/json, text/javascript, */*; q=0.01","X-Requested-With": "XMLHttpRequest","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36""(KHTML, like Gecko) Chrome/92.0.4515.107 Safari/537.36","Accept-Language": "zh-CN,zh;q=0.9","Content-Type": "application/x-www-form-urlencoded; charset=UTF-8","sec-ch-ua-mobile": "?0"
}print("请输入需要查询的单词:")
content = input()
lts, salt = get_salt()
bv, sign = get_md5(content)
# 通过抓包得到的有道翻译的post数据post_json = {"i": content,"from": "AUTO","to": "AUTO","smartresult": "dict","client": "fanyideskweb","salt": salt,"sign": sign,"lts": lts,"bv": bv,"doctype": "json","version": "2.1","keyfrom": "fanyi.web","action": "FY_BY_REALTlME"
}
post_data = parse.urlencode(post_json)
ua_request = request.Request(url=url, data=post_data.encode("utf-8"), headers=ua_header)
html = request.urlopen(ua_request).read().decode("utf-8")
print(html)

写在最后

url = "https://fanyi.youdao.com/translate?smartresult_o=dict&smartresult=rule"将_o去掉,那么这四个值就可以固定不用模拟,相当于去掉了爬虫机制。

爬虫有道云翻译中的js加密(2021年8月3日)-python3爬虫相关推荐

  1. 诛仙手游服务器维护中,诛仙手游2021年7月22日更新维护公告

    在诛仙手游中2021年7月22日更新情况内容又是什么样的呢?想了解本次更新情况如何的话,下面就让我们一起来看一下吧~! 诛仙手游2021年7月22日更新维护公告 为了给您提供更优质的游戏体验,< ...

  2. IDEA Vue.js插件 2021年1月21日最新

    IDEA开发VUE时,需要下载Vue.js插件,但国外的资源有时候很难下下来,可以离线下载插件再安装 官网下载地址:https://plugins.jetbrains.com/plugin/9442- ...

  3. Python3网络爬虫教程8——有道在线翻译项目(JS加密)

    上接: Python3网络爬虫教程7--SSL数字证书 https://blog.csdn.net/u011318077/article/details/86538116 6. js加密(有道在线翻译 ...

  4. Python3 有道云翻译反爬虫

    Python3 有道云翻译反爬虫 反爬虫原理取自下面这篇文章 https://blog.csdn.net/nunchakushuang/article/details/75294947 ------- ...

  5. 有道云翻译API翻译JavaScript使用教程

    有道云翻译API翻译使用教程 一.注册: 前往有道智云AI开放平台进行注册. 然后填写进入免费体验试用进行资料填写. 二.创建应用: 进入上图1,创建应用如下图:执行1.2. 进入上上图2,创建实例如 ...

  6. PHP版本百度翻译有道云翻译讯飞云翻译api相关接口

    <?php$arr = ['注:充值后如未及时到账,请联系客服处理'=>"Nota: se não chegar a tempo após recarregar, por fav ...

  7. html目录参数加密,从HTML文件中取出JS加密需要的参数,并调用js内的加密算法

    简介这篇文章主要介绍了从HTML文件中取出JS加密需要的参数,并调用js内的加密算法以及相关的经验技巧,文章约2677字,浏览量385,点赞数2,值得参考! 背景,爬虫程序需要模拟登陆,账号密码是经j ...

  8. Python爬虫:爬取instagram,破解js加密参数

    Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...

  9. 汤道生任腾讯云与智慧CEO;阿里巴巴副总裁范驰离职 | 高管变动2021年5月10日-16日...

    腾讯.阿里巴巴.高鑫零售.新世界百货.开心汽车.招商银行.日立.Waymo.雅诗兰黛.Vans等公司高管变动. 中国 腾讯云与智慧产业事业群(CSIG)宣布新一轮架构升级,腾讯公司高级执行副总裁汤道生 ...

最新文章

  1. matlab语言实验二,实验二 MATLAB语言基础
  2. R语言ggplot2可视化强制指定X轴的日期范围实战:组合条形图和lm模型构建的回归模型的结果并强制指定X轴的日期范围
  3. oracle 10g 4031
  4. jackson json转对象 对象转json
  5. 如何设置Linux操作系统shell命令的默认语言
  6. php7 setcookie无效_php COOKIE介绍和setcookie有时会在ie下失效问题
  7. MYSQL到ORACLE法式迁徙的注意变乱
  8. 第三次PR培训(添加常用效果和转场)
  9. smartadmin官网_smartadmin api_smartadmin 下载
  10. Java短信验证码-互亿无线
  11. Ubuntu常用软件下载
  12. angular-Forms patchValue and setValue
  13. 微信开发者工具提示 “当前系统代理不是安全代理,是否信任?”
  14. 安全优雅的RESTful API签名实现方案(手机端)
  15. 从零开始学习NLP - 综述与论文查找指南(待更新)
  16. mac 安装qemu的方法
  17. 来自Bitly的USA.gov数据,数据分析案例
  18. 深度学习推理框架调研总结
  19. 英雄萨姆二次出击全攻略
  20. 2016年之年中总结

热门文章

  1. 将VMProtect集成到应用程序教程之实模式(四):将代码锁定到序列号上
  2. 天津再出新政 经适房限价房也可公积金贷款
  3. 多元统计分析——聚类分析——层次聚类
  4. MYSQL查询表数据量
  5. SQL必知必会练习题答案(第五版)
  6. NUnit Assert简介
  7. 未来的计算机 展望未来作文,以展望未来为题的作文(精选4篇)
  8. python语言是开源的现拥有十几万个第三方函数库_智慧树知到《Python程序设计基础》章节测试答案...
  9. ICPC训练联盟2021寒假冬令营(2)
  10. 卓美业带来美业管理全新体验,内测中