爬虫有道词典进行自动翻译
当爬虫有道词典时出现“errorCode”:50错误,那是有道发爬虫机制引入,解决方法如下: 1、分析原因:从Form Data中分析原因得知,salt,sign,ts三个参数值是动态变化的,每次请求其值都不同,这表明网站对这三个参数作出了加密反爬虫机制,若想取得数据,就必须先破解其加密机制。
2、获取方法:右键,查看网页源代码,在html中并没有找到对应参数,那么就可能在js文件中,在网页的最后一部分代码,根据js文件的文件名,猜测这几个参数的获取方式可能在"fanyi.min.js"文件中。打开该js文件,发现这个文件是处理过的 js,直接看是难以看出逻辑的,所以可以把 js 代码放到一些可以重新排版的工具中再查看,如在线“站长工具”,最后可以通过搜索“salt”找到几个参数的生成位置,具体代码片段如下: define("newweb/common/service", ["./utils", "./md5", "./jquery-1.7"], function(e, t) {var n = e("./jquery-1.7");e("./utils");e("./md5");var r = function(e) {var t = n.md5(navigator.appVersion),r = "" + (new Date).getTime(),i = r + parseInt(10 * Math.random(), 10);return {ts: r,bv: t,salt: i,sign: n.md5("fanyideskweb" + e + i + "@6f#X3=cCuncYssPsuRUE")}};
(1)网站采用的是md5加密 (2)ts = "" + (new Date).getTime() ,为时间戳 (3)salt = "" + (new Date).getTime() + parseInt(10 * Math.random(), 10) (4)sign = n.md5("fanyideskweb" + e + i + "@6f#X3=cCuncYssPsuRUE") #最后的字符串会变化 其中,e为要翻译内容,i为时间戳,等于ts,其余为固定字符串3、源代码如下:
import urllib.request import urllib.parse import time,random import hashlib import requests import jsonclass youdao:def __init__(self,msg):self.msg = msgself.url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"self.D = "n%A-rKaT5fb[Gy?;N5@Tj"self.salt = self.get_salt()self.sign = self.get_sign()self.ts = self.get_ts()def get_md(self,value):md5 = hashlib.md5()md5.update(value.encode("utf-8"))sign = md5.hexdigest()return signdef get_salt(self):salt = int(time.time() * 1000) + random.randint(0, 10)return saltdef get_sign(self):sign = "fanyideskweb" + self.msg + str(self.salt) + str(self.D)return self.get_md(sign)def get_ts(self):s = int(time.time() * 1000)return str(s)def get_result(self):form_data = {'i':self.msg,'from':"AUTO",'to':"AUTO",'smartresult':"dict",'client':'fanyideskweb','salt':self.salt,'sign':self.sign,'ts':self.ts,'bv':'75551116684a442e8625ebfc9e5af1ba','type':'json','version':'2.1','keyfrom':'fanyi.web','action':'FY_BY_CLICKBUTTION'}headers = {"Accept": "application/json,text/javascript,*/*;q=0.01","Accept-Language": "zh-CN,zh;q=0.9,en-GB;q=0.8,en;q=0.7","Connection": "keep-alive","Content-Type": "application/x-www-form-urlencoded;charset=UTF-8","Cookie": "OUTFOX_SEARCH_USER_ID=-269532254@61.164.45.178; OUTFOX_SEARCH_USER_ID_NCOO=319595972.4533894; JSESSIONID=aaavbU6zTTPKSanbz2H_w; ___rl__test__cookies=1578968436936","Host": "fanyi.youdao.com","Origin": "http://fanyi.youdao.com","Referer": "http://fanyi.youdao.com/","User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36 X-Requested-With: XMLHttpRequest"}resp = requests.post(self.url, data=form_data, headers=headers).texttranslate_results = json.loads(resp)if 'translateResult' in translate_results:translate_results = translate_results['translateResult'][0][0]['tgt']print("翻译的结果是:%s" % translate_results)else:print(translate_results)if __name__ == "__main__":y = youdao('语文,英语,数学')y.get_result()
爬虫有道词典进行自动翻译相关推荐
- python爬虫有道词典_Python爬取有道词典,有道的反爬很难吗?也就这样啊!
前言 大家好 最近python爬虫有点火啊,啥python爬取马保国视频--我也来凑个热闹,今天我们来试着做个翻译软件--不是不是,说错了,今天我们来试着提交翻译内容并爬取翻译结果 主要内容 PS ...
- python爬取有道词典_python 爬虫+有道词典实现一个简单翻译程序
#coding=utf-8 importurllibimporturllib2importjson'''功能说明: 根据输入要翻译的文字,进行有道自动翻译: 实现中文->英文.英语及其他语言-& ...
- 爬虫有道词典,高精度加密版
网上爬有道词典有两种主流方式,一种是简单的,一种是复杂的.翻译精度大不同. 简单的url:http://fanyi.youdao.com/translate?smartresult=dict& ...
- 利用爬虫有道词典进行翻译python3中的内置函数属性功能
from urllib import request from urllib import parse import json import time import random import has ...
- python 爬虫——有道翻译
一.网页解析 打开有道翻译官网: 通过F12,找到网络一栏,寻找"POST"请求,并在"消息头"下找到请求网址,即翻译的原网址 : 观察"参数&quo ...
- Python学习笔记--Python 爬虫入门 -17-5 js 加密 (和有道词典的瓜葛)
- js加密 - 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值) - 经过加密,传输的就是密文,但是 - 加密函数或者过程一定是在浏览器完成,也就是一定 ...
- python爬虫之SSL、加密、破解有道词典加密算法并编写有道词典实时翻译
1.SSL -SSL证书就是指遵守SSL安全套阶层协议的服务器数字证书(SercureSocketLayer) -美国王景公司开发 -CA(CertifacateAuthority)是数字证书认证中心 ...
- Python之爬虫-- js加密(破解有道词典加密的算法)
js加密 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值) 经过加密,传输的就是密文,但是 加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者 通过阅 ...
- 爬虫破解js加密破解(二) 有道词典js加密参数 sign破解
在爬虫过程中,经常给服务器造成压力(比如耗尽CPU,内存,带宽等),为了减少不必要的访问(比如爬虫),网页开发者就发明了反爬虫技术. 常见的反爬虫技术有封ip,user_agent,字体库,js加密, ...
最新文章
- 使用 Cufon 渲染网页字体
- Nacos 1.1.4 发布,业界率先支持 Istio MCP 协议
- 自定义TabHost,TabWidget样式 .
- 重磅!K8S 1.18版本将内置支持SideCar容器。
- Oracle 1204 RAC failover 测试 (一)
- 大数据 自学视频资料,纯分享
- Git提交本地代码到GitHub
- 职场中必需修炼的七项意识
- [swift] LeetCode 448. Find All Numbers Disappeared in an Array
- excel保存时 检测到错误,Microsoft Excel可通过删除或修复某些功能来保存此文件
- VSCode配置 C++环境
- Spring之ApplicationContext
- dat文件导入cad画图步骤_怎么样给CAD文件加密?
- rds对mysql优化_RDS MySQL参数调优最佳实践
- 研究War3编辑器(2):地图编辑器基本操作
- jtag、在线仿真器
- Spring AOP官网学习
- java的无参构造方法_Java有参构造方法和无参构造方法
- 【博学谷学习记录】超强总结,用心分享|移动app基础知识
- 小鹅通课程下载(一)