当爬虫有道词典时出现“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()

爬虫有道词典进行自动翻译相关推荐

  1. python爬虫有道词典_Python爬取有道词典,有道的反爬很难吗?也就这样啊!

    前言 大家好 ​ 最近python爬虫有点火啊,啥python爬取马保国视频--我也来凑个热闹,今天我们来试着做个翻译软件--不是不是,说错了,今天我们来试着提交翻译内容并爬取翻译结果 主要内容 PS ...

  2. python爬取有道词典_python 爬虫+有道词典实现一个简单翻译程序

    #coding=utf-8 importurllibimporturllib2importjson'''功能说明: 根据输入要翻译的文字,进行有道自动翻译: 实现中文->英文.英语及其他语言-& ...

  3. 爬虫有道词典,高精度加密版

    网上爬有道词典有两种主流方式,一种是简单的,一种是复杂的.翻译精度大不同. 简单的url:http://fanyi.youdao.com/translate?smartresult=dict& ...

  4. 利用爬虫有道词典进行翻译python3中的内置函数属性功能

    from urllib import request from urllib import parse import json import time import random import has ...

  5. python 爬虫——有道翻译

    一.网页解析 打开有道翻译官网: 通过F12,找到网络一栏,寻找"POST"请求,并在"消息头"下找到请求网址,即翻译的原网址 : 观察"参数&quo ...

  6. Python学习笔记--Python 爬虫入门 -17-5 js 加密 (和有道词典的瓜葛)

    - js加密     - 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值)     - 经过加密,传输的就是密文,但是     - 加密函数或者过程一定是在浏览器完成,也就是一定 ...

  7. python爬虫之SSL、加密、破解有道词典加密算法并编写有道词典实时翻译

    1.SSL -SSL证书就是指遵守SSL安全套阶层协议的服务器数字证书(SercureSocketLayer) -美国王景公司开发 -CA(CertifacateAuthority)是数字证书认证中心 ...

  8. Python之爬虫-- js加密(破解有道词典加密的算法)

    js加密 有的反爬虫策略采用js对需要传输的数据进行加密处理(通常是取md5值) 经过加密,传输的就是密文,但是 加密函数或者过程一定是在浏览器完成,也就是一定会把代码(js代码)暴露给使用者 通过阅 ...

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

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

最新文章

  1. 使用 Cufon 渲染网页字体
  2. Nacos 1.1.4 发布,业界率先支持 Istio MCP 协议
  3. 自定义TabHost,TabWidget样式 .
  4. 重磅!K8S 1.18版本将内置支持SideCar容器。
  5. Oracle 1204 RAC failover 测试 (一)
  6. 大数据 自学视频资料,纯分享
  7. Git提交本地代码到GitHub
  8. 职场中必需修炼的七项意识
  9. [swift] LeetCode 448. Find All Numbers Disappeared in an Array
  10. excel保存时 检测到错误,Microsoft Excel可通过删除或修复某些功能来保存此文件
  11. VSCode配置 C++环境
  12. Spring之ApplicationContext
  13. dat文件导入cad画图步骤_怎么样给CAD文件加密?
  14. rds对mysql优化_RDS MySQL参数调优最佳实践
  15. 研究War3编辑器(2):地图编辑器基本操作
  16. jtag、在线仿真器
  17. Spring AOP官网学习
  18. java的无参构造方法_Java有参构造方法和无参构造方法
  19. 【博学谷学习记录】超强总结,用心分享|移动app基础知识
  20. 小鹅通课程下载(一)

热门文章

  1. 多元函数的高阶微分公式 与 Taylor公式
  2. 现阶段云计算的市场运用
  3. 解不等式之调和级数不等式
  4. 微服务+微信小程序实现社区服务
  5. 简单证明圆锥体积为三分之一圆柱
  6. dorado java_概述-Dorado JDBC Addon
  7. 给你的个人网站领养只萌萌的小仓鼠
  8. 没有乌云,天就一定晴了么
  9. 关于寒武纪的前世今生与未来
  10. 用Python把它做出来:EXCEL文件合并/拆分工具 (含VBA版)