文章目录

  • 一、需求
  • 二、思路分析
  • 三、遇到的问题及解决措施
  • 四、代码分享

一、需求

爬虫实现“有道翻译”

二、思路分析

1、明确目标url

抓包前可以清空网页加载出来的数据包;抓包过程中可以查看preview或者response响应是否有我们所需要的数据,以此确认url


2、向url发送请求、获取对应的响应

向目标网址发送请求时,需要确定请求方式–post请求,需要携带data参数,提交表单数据

3、提取翻译的结果

结果发现,无法获取到翻译信息,出现了errorCode


三、遇到的问题及解决措施

(1)观察流程

a. 观察发现,form data中的sign、salt、lts的值会随着翻译内容i的变化而变化

b. 有一定反爬经验的话,可以猜测lts是时间戳,经过时间戳在线转换工具的验证,确实如此

c. 观察发现,salt的值和lts的有点像,salt就是在lts后面加了一个数字(加盐操作)

实际上,sign是在js文本中的js代码中加密生成的,那么我们需要在对应的js代码中找到其加密过程

(2)分析流程



r = "" + (new Date).getTime()   # r: 获取时间戳i = r + parseInt(10 * Math.random(), 10)   # i: r + 一个随机数字return {ts: r,     # ts: 以毫秒为单位的格林尼治时间戳bv: t,salt: i,   # salt: 时间戳+一位随机数字sign: n.md5("fanyideskweb" + e + i + "Ygy_4c=r#e#4EX^NUGUc5")   # sign: 使用md5加密算法对明文参数加密得到的密文,e是翻译内容,i也是salt}lts:ts    # lts:以毫秒为单位的格林尼治时间戳

(3)结论

(1)lts – 以毫秒为单位的格林尼治时间戳

int(time.time()*1000)

(2)salt – 以毫秒为单位的格林尼治时间戳 + 一个随机数字

int(time.time()*1000) + random.randint(0,9)

(3)sign – n.md5(“fanyideskweb” + e + i + “Ygy_4c=r#e#4EX^NUGUc5”)

hashlib.md5(明文参数.encode()).hexdigest()

四、代码分享

代码完善:

  1. 当输入“有道翻译”无法翻译的内容时,会报错,所以可以使用try…except…捕获异常
  2. 使用while True循环翻译
​import requests
import time
import random
import hashlibwhile True:content = input("请输入你要翻译的内容:")lts = int(time.time() * 1000)salt = lts + random.randint(0, 9)sign_para = "fanyideskweb" + str(content) + str(salt) + "Ygy_4c=r#e#4EX^NUGUc5"sign = hashlib.md5(sign_para.encode()).hexdigest()url = "https://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/100.0.4896.127 Safari/537.36","Referer": "https://fanyi.youdao.com/"}form_data = {"i": content,"from": "AUTO","to": "AUTO","smartresult": "dict","client": "fanyideskweb","salt": str(salt),"sign": str(sign),"lts": str(lts),"bv": "ac3968199d18b7367b2479d1f4938ac2","doctype": "json","version": "2.1","keyfrom": "fanyi.web","action": "FY_BY_REALTlME"}response = requests.post(url, headers=headers, data=form_data)try:dict_data = response.json()  # 解析json参数print("翻译结果:", dict_data["translateResult"][0][0]["tgt"])  # 除此方法,也可以使用jsonpath解析数据except:print("您输入的内容无法翻译,请重新输入..")continue  # 跳出本次循环,进行下一次循环​
  • 写在最后:有任何代码问题,欢迎交流~

有道翻译js逆向解析相关推荐

  1. 【爬虫逆向案例】某道翻译js逆向—— sign解密

    声明:本文只作学习研究,禁止用于非法用途,否则后果自负,如有侵权,请告知删除,谢谢! [爬虫逆向案例]某道翻译js逆向-- sign解密 1.前言 2.步骤 3.源码 4.号外 1.前言 相信各位小伙 ...

  2. js逆向之有道词js加密解析

    js逆向之有道词js加密解析 文章目录 js逆向之有道词js加密解析 需要用到的工具: 下面就介绍一下3种看js加密的代码方法: 第一种方法: 第二种: 第三种: 下面我们来了解我们要用什么解密md5 ...

  3. 破解有道翻译js加密,纯小白练手

    有道翻译js解析 第一次在csdn上发技术贴,以前都是在印象笔记,主要是最近闲的,太无聊了. 作为开始,想找一个超级简单的,然后循序渐进(比较有仪式感). 想起来当初学爬虫的时候,看韦世东的<P ...

  4. JS解密入门案例:python有道翻译JS解密

    前言 嗨喽!大家好呀,这里是魔王~ 课程亮点: 系统分析网页结构 动态数据抓包演示 json数据解析 JS解密 环境介绍: python 3.8 pycharm >>> 需要安装no ...

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

    爬虫:突破有道翻译js加密 代码已上传至个人GitHub,可供下载: 突破有道翻译js加密 思路:(python版本3.6) 1.分析post上传form信息,发现存在加密行为 2.查看网页js文件, ...

  6. JS逆向解析---某知名小说网站内容加密

    该小说网站的全部内容都是经过一个JS的加密,要想爬取这个网站那么将其内容解析是不可避免的,本文将讲解如何对其进行JS的逆向解析.网站:shuqi 随便点开一本书,打开浏览器自带的抓包工具: 点击第一个 ...

  7. Python爬虫入门之淘宝JS逆向解析请求参数Sign加密(一)

    关于JS逆向,相信这是很多小伙伴学习爬虫的一个门槛之一,如果你是初学者入门,开发一款爬虫,要以思路为主,代码是其次的 这里所说的思路指两个方面,一,分析观察目标站点思路,二,代码开发思路,二者缺一不可 ...

  8. 【JavaScript 逆向】某道翻译接口逆向

    前言 现在一些网站对 JavaScript 代码采取了一定的保护措施,比如变量名混淆.执行逻辑混淆.反调试.核心逻辑加密等,有的还对数据接口进行了加密,这次的案例就是对一种 MD5 加密方式的破解. ...

  9. 爬虫案例之网易有道翻译JS代码复杂版

    网易有道翻译逆向案例 本次案例逆向的是网易有道云翻译 https://fanyi.youdao.com/index.html#/ 用到的知识包括 requests 模块及方法 md5加密 js代码环境 ...

  10. python爬虫——有道翻译JS解密

    爬虫兴起的同时,反爬虫手段也在不断更新,今天以有道翻译http://fanyi.youdao.com/为例,介绍破解JavaScript加密的反爬虫基本流程. 分析网页 我们进入网站,随便输入一个内容 ...

最新文章

  1. 一张心酸得不想起名字的照片,人艰就别拆了好吗 | 每日趣闻
  2. 从数据库导出数据到word、excel、.txt
  3. 代码大全读后感(二)
  4. mean,std,var
  5. python长度为n的list_python “list*n”的坑你得注意
  6. 【Linux】一步一步学Linux——dpkg-preconfigure命令(275)
  7. 小程序开发配置接口域名提示:不在以下 request 合法域名列表中,请参考文档
  8. sar命令,linux中最为全面的性能分析工具之一
  9. 多布局怎么搭建_展会搭建如何吸引人的注意力?
  10. Spring源码分析笔记--AOP
  11. Unity中英对照汉化
  12. 470款日系文艺LR预设电影质感Lightroom预设PR/PS/AE/FCPX/LUT预设
  13. pip安装包下载与安装
  14. 计算机网络共享文件密码,如何给局域网共享文件夹设置访问密码
  15. 一个产品的风险预测怎么写_创业计划书中,项目风险评估怎么写?
  16. 台风怎么看内存颗粒_C9BKV颗粒,英睿达铂胜Max RGB 4000超频测试
  17. python 算法测试结果自动保存到excel表格
  18. php eclipse xampp,PHP版eclipse配置xampp
  19. GUI界面开发,Swing工具的JFrame开发记事本页面
  20. 论文翻译——中国武汉市2019年新型冠状病毒感染患者的临床特征

热门文章

  1. 项目管理十大知识领域运用流程
  2. Android Lottie动画
  3. python 微信开发库_WeRoBot 是一个微信公众号开发框架
  4. Java中的方法的重载
  5. 如何查找孔与轴配合的公差带表
  6. parasolid 原因 效率_SolidWorks、creo、UG哪个更适合机械设计?听听行业大咖怎么说...
  7. Java对接(顺丰、京东、跨越、EMS、DHL、FedEx、UPS)七大快递
  8. SDN是什么?SDN概念和应用
  9. 抖音ai智能机器人挂机_抖音上最火的人工智能机器人--LUKA绘本阅读机器人
  10. Hash 表的时间复杂度为什么是 O(1)(面试版)