Python爬取有道翻译

【Python爬虫】有道翻译2023新版 【Python爬虫】使用requests进行获取请求有道URL的结果,MD5加密sign值,AES解密翻译结果 阅读详情

转载自https://blog.youkuaiyun.com/nunchakushuang/article/details/75294947

一、正常的爬虫流程:

如果你要爬取他的翻译接口,这个流程还是不能少的。首先我们打开有道翻译的链接:http://fanyi.youdao.com/。然后在页面中右键->检查->Network项。这时候就来到了网络监听窗口,以后你在这个页面中发送的所有网络请求,都会在Network这个地方显示出来。接着我们在翻译的窗口输入我们需要翻译的文字,比如输入hello。然后点击自动翻译按钮,那么接下来在下面就可以看到浏览器给有道发送的请求,这里截个图看看:


01.png

在上图,我们可以看到发送了很多的网络请求,这里我们点击第一个网络请求进行查看:


02.png

可以看到,我们在点击自动翻译的时候,发送的请求就是上图中Request URL的那个URL,然后我们再点击那个Response,我们可以看到返回的结果:


03.png

并且,现在我们再回到Headers的地方,然后滚动到最下面,可以看到有一个Form Data的地方,这个下面展示了许多的数据,这些数据就是你在点击翻译的时候浏览器给服务器发送的数据:


04.png

对其中几个比较重要的数据进行解释:

  • i:需要进行翻译的字符串,这个地方我们输入的是hello。
  • salt:加密用到的盐。这个是我们破解有道反爬虫机制的关键点,后面会讲到。
  • sign:签名字符串。也是破解反爬虫机制的关键点。

其他的数据类型暂时就不怎么重要了,都是固定写法,我们后面写代码的时候直接鞋子就可以了。到现在为止,我们就可以写一个简单的爬虫,去调用有道翻译的接口了。这里我们使用的网络请求库是Python3自带的urllib,相关代码如下:

# 导入需要的库
import urllib.request
import urllib.parse
import json

# 等待用户输入需要翻译的单词
content = input('请输入需要翻译的单词:')

# 有道翻译的url链接
url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=null'

# 发送给有道服务器的数据
data = {}

# 需要翻译的文字
data['i'] = content
# 下面这些都先按照我们之前抓包获取到的数据
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '1500349255670'
data['sign'] = '997742c66698b25b43a3a5030e1c2ff2'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CL1CKBUTTON'
data['typoResult'] = 'true'

# 对数据进行编码处理
data = urllib.parse.urlencode(data).encode('utf-8')

# 创建一个Request对象,把url和data传进去,并且需要注意的使用的是POST请求
request = urllib.request.Request(url=self.url, data=data, method='POST')
# 打开这个请求
response = urllib.request.urlopen(request)
# 读取返回来的数据
result_str = response.read().decode('utf-8')
# 把返回来的json字符串解析成字典
result_dict = json.loads(result_str)

# 获取翻译结果
print('翻译的结果是:%s' % result_dict)

我们运行这个文件后,当我们输入的是hello的时候,我们可以得到哈罗的这个正确的翻译结果。而当我们输入其他需要翻译的字符串的时候,比如输入i love you,那么就会得到一个错误代码{"errorCode":50}。这就奇怪了,有道词典不可能只能翻译一个英文单词吧。而这个,就是有道词典的反爬虫机制。接下来我们就来破解有道词典的反爬虫机制。

二、破解反爬虫机制:

我们可以多次的进行翻译,并且每次翻译后都去查看翻译的时候发送的这个网络请求,比较每次翻译时候发送的Form Data的值。我们注意到,Form Data在每次发送网络请求的时候,只有i和salt以及sign这三个是不同的,其他的数据都是一样的,这里我用hello和world两个单词翻译时候Form Data的数据进行比较:


05.png

06.png

图中的Form Data也证实了我刚刚所说的,就是除了i、salt以及sign是不一样的。其余都是一样的。而i不一样是很正常的。因为i代表的是要翻译的字符串,这个不同是很正常。而salt和sign这两个东西不一样,是怎么产生的呢?这里我们可以分析一下,这两个值在每次请求的时候都不一样,只有两种情况:第一是每次翻译的时候,浏览器会从有道服务器获取一下这两个值。这样可以达到每次翻译的时候值不同的需求。第二是在本地,用JS代码按照一定的规则生成的。那么我们首先来看第一个情况,我们可以看到在每次发送翻译请求的时候,并没有一个请求是专门用来获取这两个值的:


07.png

所以就可以排除第一种情况。就只剩下一种可能,那就是在本地自己生成的,如果是在本地自己生成的,那么规则是什么呢?这里我们点击网页,查看网页源代码,查找所有的JS文件,我们找到那个fanyi.js:


08.png

然后点击这个文件,跳转到这个源文件中,然后全选所有的代码,复制下来,再打开站长工具:http://tool.chinaz.com/Tools/jsformat.aspx。把代码复制进去后,点击格式化:


09.png

然后把格式化后的代码,复制下来,用sublime或者pycharm打开都可以,然后搜索salt,可以找到相关的代码:


10.png

这里我们就可以发现所有的值的生成原理了。这里来做个简介:

  • d:代表的是需要翻译的字符串。
    • f:当前时间的时间戳加上0-10的随机字符串。
    • u:一个常量——fanyideskweb。
    • c:一个常量——rY0D^0'nM0}g5Mm1z%1G4。
    • salt:就是f变量,时间戳。
    • sign:使用的是u + d + f + c的md5的值。

知道salt和sign的生成原理后,我们就可以写Python代码,来对接他的接口了,以下是相关代码:

import urllib.request

import urllib.parse
import json
import time
import random
import hashlib

content = input('请输入需要翻译的句子:')

url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule&sessionFrom=https://www.google.com/'

data = {}

u = 'fanyideskweb'
d = content
f = str(int(time.time()*1000) + random.randint(1,10))
c = 'rY0D^0\'nM0}g5Mm1z%1G4'

sign = hashlib.md5((u + d + f + c).encode('utf-8')).hexdigest()

data['i'] = content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = f
data['sign'] = sign
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CL1CKBUTTON'
data['typoResult'] = 'true'

data = urllib.parse.urlencode(data).encode('utf-8')
request = urllib.request.Request(url=url,data=data,method='POST')
response = urllib.request.urlopen(request)

print(response.read().decode('utf-8'))
写在最后:

像以上这种,通过用JS在本地生成随机字符串的反爬虫机制,在爬虫的时候是经常会遇到的一个问题。希望通过以上的讲解,能为大家提供一种思路。以后再碰到这种问题的时候知道该如何解决。这样本篇文章的目的也就达到了。


谢谢原作者 南窗客斯黄 的分享


python爬虫实战之爬取有道翻译 文章目录介绍网页分析代码实战 当我们学习python爬虫时我们需要做大量的练习,往后我会发布更多的python爬虫练习实战代码,进一步剖析爬虫的每一个细节 介绍 本次爬取的是有道翻译,利用python爬虫程序向有道翻译发起请求,获取翻译结果 网页分析 下面我们将走进有道翻译网页分析 开发者模式可以通过f12或者单击鼠标右键找到检查打开 有道翻译 当我们进入网页以后,会出现两个框,1是输入,2是翻译结果,由于有道翻译他是自动识别我们输入的内容,也就是说我们每往输入框输入一个字符他就会发起一次请求,具体分析请 阅读详情

相关推荐

python爬取有道翻译(最新)

打开有道翻译的页面,我们先打开谷歌浏览器的开发者工具,切换到 network 抓包工具,然后在翻译中输入要翻译的内容,寻找翻译的url地址 我们发现,此请求为 POST 请求,既然是 POST 请求,那么我们肯定要找到对应的 请求体 参数, 不变的参数 from: AUTO to: AUTO smartresult: dict client: fanyideskweb bv: b286f0a34340b928819a6f64492585e8 doctype: json version: 2.1.

you are sherlocked by me! 1936

爬虫 | 基于 Python 实现有道翻译工具

Hi,大家好,我是半亩花海。本项目旨在利用 Python 语言实现一个简单的有道翻译工具。有道翻译是一款常用的在线翻译服务,能够实现多种语言的互译,提供高质量的翻译结果。

沉思默想,深度学习,半亩星河半亩月,半亩花海半亩云。 4599

python爬取有道翻译

用python爬取有道翻译 众所周知python作为一个优秀的语言,在爬虫方面一直是一个不可或缺的语言,今天我分享一个简单的例子 用python模拟网站接口爬取有道翻译 首先准备工作 安装request库 安装教程就不出了 csdn 上面教程很多 准备工作完成之后我们开始进入我们的主题:对有道翻译发起攻势 传送门 首先我们要知道爬取一个网页首先需要找到他的url 如何正确找到他的url很重要 我们打开网页后 按F12进入开发者模式(这里我用的是谷歌浏览器) 然后在输入框内输入想要翻译的单词 [外链图

qq_48327671的博客 613

用Python破解有道翻译反爬虫机制

想要系统的学习Python网络爬虫的可以看:零基础:21天搞定Python分布式爬虫破解有道翻译反爬虫机制web端的有道翻译,在之前是直接可以爬的。也就是说只要获取到了他的接口,你就可以肆无忌惮的使用他的接口进行翻译而不需要支付任何费用。那么自从有道翻译推出他的API服务的时候,就对这个接口做一个反爬虫机制(如果大家都能免费使用到他的翻译接口,那他的API服务怎么赚钱)。这个反爬虫机制在爬虫领域算...

NunchakusHuang的专栏 3万+

爬有道翻译 利用python(selenium)爬取有道翻译英语单词音标

利用python(selenium)爬取有道翻译英语单词音标 适合python初学者 网页爬虫示例 os库 import os secket库 import socket selenium库 webdriver对象 网页元素查询练

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

python有道翻译接口-python爬取有道翻译接口

#爬取有道翻译接口def youdao(word):import hashlibimport requestsimport timeimport randomimport reappVersion = '5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/74.0.3729.131 Safari/53...

weixin_37988176的博客 555

多模态RAG实战:为LLM装上视觉之眼,实现图文混合文档智能问答

检索增强生成(RAG)技术通过结合外部知识库,有效缓解了大语言模型(LLM)的幻觉问题,并扩展了其知识边界。其核心原理是将文档切分、向量化后存入向量数据库,在问答时通过语义检索召回相关上下文,辅助LLM生成更精准的答案。这项技术的核心价值在于,它为大模型应用提供了一种低成本、高效率的知识注入与实时更新方案,广泛应用于智能客服、知识库问答、文档分析等场景。随着应用深入,纯文本RAG在处理产品手册、学术论文、设计图纸等富含视觉信息的文档时面临瓶颈。本文聚焦的**多模态RAG**和**视觉理解**技术,正是为了解

weixin_30698527的博客 722

Python3爬取有道翻译的两种方法

一. 破解参数加密 有道翻译的请求是post,携带一系列参数,直接F12刷新进行调试,如下图所示: 这是一个 post 请求,目标网址是 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule' 接下来让我们看看发送该请求需要携带哪些参数 如图所示,红色方框里的就是需要携带的参数了。 ...

Mr_blueD的博客 5307

使用自制的NTC测量模块测试Plecs的热仿真效果

可以测试:您完全可以用这个模型来测试热仿真。NTC 模型是连接电气域和热域的关键桥梁。实现闭环:通过这种方式,您创建了一个高度真实的正反馈闭环系统:负载增加 -> 损耗增加 -> 温度升高 -> NTC 阻值变化 -> 控制电路可能因此调整(如降低频率或电流)-> 损耗变化 -> 温度变化。应用场景:这对于设计过温保护 (OTP) 电路风扇控制系统以及分析热失控条件非常有用。单位:确保热域中使用的单位( Kelvin 或 Celsius )与您的 C-Script 模型输入期望的单位一致。

311

Python 对接钉钉获取员工上一篇日报或周报内容

摘要:本文介绍使用Python对接钉钉API获取员工日报/周报的方法。首先需创建钉钉应用并开通日志权限,获取员工UserID。通过获取AccessToken进行鉴权,调用topapi/report/list查询日志记录,筛选最新日报/周报后,使用topapi/report/details获取详细内容。需注意权限控制、时间范围筛选和模板匹配等问题。文末提供完整代码示例,并建议扩展自动化触发、数据存储等功能。该方法适用于企业自动化获取员工工作日志的场景。

从技术实践立足,从项目管理方法论延伸思考 810

python如何爬有道翻译_Python爬虫实现简单的爬取有道翻译功能示例

本文实例讲述了Python爬虫实现简单的爬取有道翻译功能。分享给大家供大家参考,具体如下:# -*- coding:utf-8 -*-#!python3import urllib.requestimport urllib.parseimport jsonwhile True :content = input("请输入需要翻译的内容:(按q退出)")if content == 'q' :breaku...

weixin_39767887的博客 154

SAP 未清PO数量 = 采购订单数量 - 已收货数量

本文介绍了SAP系统中查询未清PO数量的6种方法:1.标准采购报表(ME2L/ME2M/ME2N)适合业务用户快速查询;2.物料需求报表(MD04)可查看单个物料的供需情况;3.SQVI快速查询器提供自定义字段的灵活性;4.ABAP报表适合开发人员处理复杂逻辑;5.SAPQuery经配置后可供业务用户使用;6.BI/HANA方案适合大数据量分析。每种方法各有优缺点,用户可根据自身技术水平和具体需求选择,日常查询推荐使用标准采购报表ME2L/ME2M。

金牌架构师 1860

Python爬取百度翻译及有道翻译

Python爬取百度翻译及网易有道翻译 百度翻译 一、简介 明确翻译链接,百度翻译链接:https://fanyi.baidu.com/,但是该链接不能为我们提供翻译的内容,此时需要在chrome浏览器对百度翻译页面中使用F12启动控制台,在页面中输入要翻译的内容,在左侧的控制台会出现name为sug详细信息,可以看到有多个sug,是因为没输入一个字符会出现一个sug,找到要翻译的那个sug即可。点击preview即可看到要翻译的信息。 二、分析: 以上提到sug中就有翻译的链接,点击Headers即

moster_zhuhao的博客 1004

生成模型实战 | ProGAN详解与实现

Progressive GAN (ProGAN) 是一种通过渐进式增长网络结构来生成高分辨率、高保真图像的技术。传统 GAN 难以直接生成超过 256x256 分辨率的图像,而 ProGAN 创新性地从低分辨率开始训练生成器和判别器,逐步添加网络层以提高分辨率,直至达到1024x1024。该方法结合了像素归一化、小批次统计信息和均衡化学习率等关键技术,并使用 WGAN-GP 损失函数确保训练稳定性。ProGAN 是首个能生成1024x1024高保真人脸图像的模型,但其训练耗时较长,且对计算资源要求较高。

盼小辉丶的博客 1435

SerDes学习笔记:均衡技术详解 01

本文系统阐述了高速SerDes链路中均衡技术的应用原理与实现方法。重点介绍了发射端预加重/FIR均衡和接收端CTLE/DFE/FFE等主流均衡方案,详细探讨了各类均衡器的频域特性、时域效果及硬件实现架构。

一只豌豆象的博客 1304

python爬取有道翻译出错 {‘errorcode’:50}

import urllib.request import urllib.parse import json content = input("Enter the words needs translated:") url = "http://fanyi.youdao.com/translate?smartresult=dict&smartresult=ugc" data = {}

weixin_38341450的博客 2万+

MTK(基础篇)ROM烧录以及分区的作用

本文介绍了MTK芯片设备的刷机流程及关键分区功能。首先通过MTK烧录工具加载ROM文件(包括引导文件和分区表),重点解析了各分区的核心作用:preloader类似BIOS负责硬件初始化;lk作为二级引导程序加载内核;vbmeta验证系统完整性;boot包含Linux内核;dtbo调整硬件配置;modem管理通信功能;tee保护生物识别数据;system/vendor分别存放系统核心和硬件驱动。特别指出preloader、vbmeta等关键分区损坏会导致设备变砖,而recovery分区是重要的救砖入口。全文简

weixin_49303682的博客 444

python爬取有道翻译的代码_有道翻译的爬取

有道翻译的爬取Python作为爬虫的强大人尽皆知,一个人不使用python爬取些什么,那么他的Python生涯一定是不完整的,这里简单写一下用Python爬取有道翻译的教程。关于有道翻译的爬取网上链接很多,这里爬取的时候发现有道反爬虫机制有一个小bug,直接绕过就可以了。话不多说,现在开始。一 服务器数据的获取右击检查、点击network在翻译框输入任意字符后点击headers将每一项挨个点开,寻...

weixin_39968861的博客 260

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

python爬取有道翻译的代码_基于python爬取有道翻译过程图解

1.准备工作先来到有道在线翻译的界面http://fanyi.youdao.com/F12 审查元素 ->选Network一栏,然后F5刷新 (如果看不到Method一栏,右键Name栏,选中Method)输入文字自动翻译后发现Method一栏有GET还有POST;GET是指从服务器请求和获得数据,POST是向指定服务器提交被处理的数据、随便打开一个POST,找到preview可以看到我们输入的“...

weixin_39920629的博客 81

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Python爬虫实战:爬取有道翻译(窗口化显示)

获取有道翻译结果并制作窗口显示 有道翻译界面:http://fanyi.youdao.com/ 输入内容点击翻译获取向服务器提交的表单Form,后续通过向服务器提交Form 获取翻译结果 多次提交表单后发现方框内的3项参数有变动 首先对salt参数进行获取 对salt参数进行搜索,发现以下: 查询到 salt 参数的来源 使用python代码进行实现 ——get_ts同时也指向的就是 lts的参数 # 获取时间戳 def get_ts(): return str(int(time.tim

Simple子夜 1793

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

python爬取有道翻译的代码_Python3--批量爬取数据之调用有道api进行翻译

上代码:# coding=utf-8import urllib,urllib.requestfrom fake_useragent import UserAgentimport jsonimport timeimport hashlibimport urllib.parseimport requestsimport randomimport csv,reclass YouDaoFanyi:def ...

weixin_39594457的博客 110

python爬取有道翻译的代码_使用python2爬取有道翻译

爬虫的核心思想:模拟浏览器正常访问服务器,一般情况只要浏览器能访问的,都可以爬,如果被反爬,则考虑反复测试添加Request Header数据,知道可以爬取为止。反爬思路目前知道的有:User-Agent,Cookie,Referer,访问速度,验证码,用户登录及前端js代码验证等。本例遇到js验证 User-Agent Referer Cookie共计4种反爬机制。关键部分是,参数headers...

weixin_39647186的博客 89

python urllib爬取有道翻译

python urllib爬取有道翻译 import urllib.request import urllib.parse from fake_useragent import UserAgent import json url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule' #translate_o去掉_o就可以 headers = { 'User-Agent':UserAgent().r

weixin_44124065的博客 645

使用Python爬取简单的有道翻译功能

python有道翻译功能简单的爬取 首先点开有道翻译官网,审查元素查看Network一栏,输入翻译内容获取translate信息(真正用到翻译功能的就是这个URL) 添加headers信息,代码如下 url = 'http://fanyi.youdao.com/translate?_osmartresult=dict&smartresult=rule' '''...

qq_39473176的博客 463
下一篇: 深入理解Python中yield关键字
寒风暖哥
博客等级 码龄9年 46粉丝 30原创
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值