爬虫有道云翻译中的js加密(2021年8月3日)-python3爬虫
有道云翻译链接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爬虫相关推荐
- 诛仙手游服务器维护中,诛仙手游2021年7月22日更新维护公告
在诛仙手游中2021年7月22日更新情况内容又是什么样的呢?想了解本次更新情况如何的话,下面就让我们一起来看一下吧~! 诛仙手游2021年7月22日更新维护公告 为了给您提供更优质的游戏体验,< ...
- IDEA Vue.js插件 2021年1月21日最新
IDEA开发VUE时,需要下载Vue.js插件,但国外的资源有时候很难下下来,可以离线下载插件再安装 官网下载地址:https://plugins.jetbrains.com/plugin/9442- ...
- Python3网络爬虫教程8——有道在线翻译项目(JS加密)
上接: Python3网络爬虫教程7--SSL数字证书 https://blog.csdn.net/u011318077/article/details/86538116 6. js加密(有道在线翻译 ...
- Python3 有道云翻译反爬虫
Python3 有道云翻译反爬虫 反爬虫原理取自下面这篇文章 https://blog.csdn.net/nunchakushuang/article/details/75294947 ------- ...
- 有道云翻译API翻译JavaScript使用教程
有道云翻译API翻译使用教程 一.注册: 前往有道智云AI开放平台进行注册. 然后填写进入免费体验试用进行资料填写. 二.创建应用: 进入上图1,创建应用如下图:执行1.2. 进入上上图2,创建实例如 ...
- PHP版本百度翻译有道云翻译讯飞云翻译api相关接口
<?php$arr = ['注:充值后如未及时到账,请联系客服处理'=>"Nota: se não chegar a tempo após recarregar, por fav ...
- html目录参数加密,从HTML文件中取出JS加密需要的参数,并调用js内的加密算法
简介这篇文章主要介绍了从HTML文件中取出JS加密需要的参数,并调用js内的加密算法以及相关的经验技巧,文章约2677字,浏览量385,点赞数2,值得参考! 背景,爬虫程序需要模拟登陆,账号密码是经j ...
- Python爬虫:爬取instagram,破解js加密参数
Python爬虫:爬取instagram,破解js加密参数 instagram 是国外非常流行的一款社交网站,类似的还有像facebook.twitter,这些社交网站对于掌握时事热点.电商数据来源和 ...
- 汤道生任腾讯云与智慧CEO;阿里巴巴副总裁范驰离职 | 高管变动2021年5月10日-16日...
腾讯.阿里巴巴.高鑫零售.新世界百货.开心汽车.招商银行.日立.Waymo.雅诗兰黛.Vans等公司高管变动. 中国 腾讯云与智慧产业事业群(CSIG)宣布新一轮架构升级,腾讯公司高级执行副总裁汤道生 ...
最新文章
- matlab语言实验二,实验二 MATLAB语言基础
- R语言ggplot2可视化强制指定X轴的日期范围实战:组合条形图和lm模型构建的回归模型的结果并强制指定X轴的日期范围
- oracle 10g 4031
- jackson json转对象 对象转json
- 如何设置Linux操作系统shell命令的默认语言
- php7 setcookie无效_php COOKIE介绍和setcookie有时会在ie下失效问题
- MYSQL到ORACLE法式迁徙的注意变乱
- 第三次PR培训(添加常用效果和转场)
- smartadmin官网_smartadmin api_smartadmin 下载
- Java短信验证码-互亿无线
- Ubuntu常用软件下载
- angular-Forms patchValue and setValue
- 微信开发者工具提示 “当前系统代理不是安全代理,是否信任?”
- 安全优雅的RESTful API签名实现方案(手机端)
- 从零开始学习NLP - 综述与论文查找指南(待更新)
- mac 安装qemu的方法
- 来自Bitly的USA.gov数据,数据分析案例
- 深度学习推理框架调研总结
- 英雄萨姆二次出击全攻略
- 2016年之年中总结