鱼C论坛

 找回密码
 立即注册
查看: 12146|回复: 15

[已解决]Python爬虫百度翻译--error 997

[复制链接]
发表于 2018-3-30 18:07:55 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
#coding:utf-8
import urllib.request,urllib.parse

content = input('请输入需要翻译的内容:')

url = 'http://fanyi.baidu.com/v2transapi'

langdetect_url = 'http://fanyi.baidu.com/langdetect'

headers = {'User-Agent':'Mozilla/5.0 (Windows NT 6.1; Win64; x64)'
           ' AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36'
           }

data = {'from': 'en','to': 'zh','simple_means_flag': '3','transtype': 'realtime',
        'sign': '124092.329613','token': '3543aae597537a73df19a097215efa55'
        }

data['query'] = content

data = urllib.parse.urlencode(data).encode('utf-8')

req = urllib.request.Request(url,data=data,headers=headers)
response = urllib.request.urlopen(req)
html = response.read().decode('utf-8')
print(html)
最佳答案
2018-3-30 19:43:38
'sign': '124092.329613'
这个 sign 是js加密的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2023-4-26 14:19:01 | 显示全部楼层
时隔4年,回来看了一眼。
没有同学再去写这个sign的逆向,我来简单的说一下吧。
1.常规操作-F12调试
2.全局搜索sign,并断点找出sign的来源(index的那个js文件)。sign: b(e),如图sign-2023-04-26

3.console调试。输入b后出现f(t)函数,鼠标点击该函数直接就跳转到js文件。
4.至此sign的值就已经真相大白了呀。

sign-2023-04-26

sign-2023-04-26
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-30 18:37:27 | 显示全部楼层
网站反爬,就好比密码,你没有给对相应的密码当然返回错误。换个网站爬吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-30 19:43:38 | 显示全部楼层    本楼为最佳答案   
'sign': '124092.329613'
这个 sign 是js加密的。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-30 21:49:44 | 显示全部楼层
°蓝鲤歌蓝 发表于 2018-3-30 19:43
这个 sign 是js加密的。

谢谢!看了一下,每次都变动,不是固定值。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2018-3-30 21:50:37 | 显示全部楼层
ba21 发表于 2018-3-30 18:37
网站反爬,就好比密码,你没有给对相应的密码当然返回错误。换个网站爬吧。

3q
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-5-1 11:45:23 | 显示全部楼层
为什么这个sign每次变动能做到反爬呢,我人为的去网站输入,它不也在动吗。
另外为了可以不报错,可以把header改成手机版浏览,url也换成手机版的http://fanyi.baidu.com/basetrans
实测可用。
import urllib.request
import urllib.parse
import json

content = input('请输入要翻译的句子: ')
youdao_url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
baidu_url = 'http://fanyi.baidu.com/basetrans'

data = {}
data2 = {}

data['i']= content
data['from'] = 'AUTO'
data['to'] = 'AUTO'
data['smartresult'] = 'dict'
data['client'] = 'fanyideskweb'
data['salt'] = '1525141473246'
data['sign'] = '47ee728a4465ef98ac06510bf67f3023'
data['doctype'] = 'json'
data['version'] = '2.1'
data['keyfrom'] = 'fanyi.web'
data['action'] = 'FY_BY_CLICKBUTTION'
data['typoResult'] = 'false'
data = urllib.parse.urlencode(data).encode('utf-8')

data2['from'] = 'zh'
data2['to'] = 'en'
data2['query'] = content
data2['transtype'] = 'translang'
data2['simple_means_flag'] = '3'
data2['sign'] = '94582.365127'
data2['token'] = 'ec980ef090b173ebdff2eea5ffd9a778'
data2 = urllib.parse.urlencode(data2).encode('utf-8')

headers = {"User-Agent":"Mozilla/5.0 (Linux; Android 5.1.1; Nexus 6 Build/LYZ28E) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/63.0.3239.84 Mobile Safari/537.36"}

youdao_response = urllib.request.urlopen(youdao_url, data)
baidu_re = urllib.request.Request(baidu_url, data2, headers)
baidu_response = urllib.request.urlopen(baidu_re)

youdao_html = youdao_response.read().decode('utf-8')
baidu_html = baidu_response.read().decode('utf-8')

target = json.loads(youdao_html)
target2 = json.loads(baidu_html)

print('【有道】翻译为: %s'%(target['translateResult'][0][0]['tgt']))
print('【百度】翻译为: %s'%(target2['trans'][0]['dst']))
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2018-5-10 09:58:33 | 显示全部楼层
Cczhou 发表于 2018-5-1 11:45
为什么这个sign每次变动能做到反爬呢,我人为的去网站输入,它不也在动吗。
另外为了可以不报错,可以把he ...

嗯,移动端的着实可以~
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-11 14:11:23 | 显示全部楼层
移动端有道翻译可以爬取到,百度翻译还是不可以
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 11:03:12 | 显示全部楼层
用代码搞出了sign,也是不行,不知道怎么破
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 11:03:58 | 显示全部楼层
mongoole 发表于 2018-5-10 09:58
嗯,移动端的着实可以~

移动端没检查这个
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-19 16:42:43 | 显示全部楼层
本帖最后由 zylialiali 于 2019-3-19 17:02 编辑

实测上面6楼的代码也不行,移动端的也不能用了吗?
target并没有trans关键字。

-----编辑一下-----
是接口错了,应该是 url = 'https://fanyi.baidu.com/transapi'
果然是万能的百度
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-22 11:29:33 | 显示全部楼层
zylialiali 发表于 2019-3-19 16:42
实测上面6楼的代码也不行,移动端的也不能用了吗?
target并没有trans关键字。

您好 请问这个Url是怎么获得的 我在报文中没有发现这个url啊 谢谢解答!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-23 15:42:11 | 显示全部楼层
learningifsh 发表于 2019-3-22 11:29
您好 请问这个Url是怎么获得的 我在报文中没有发现这个url啊 谢谢解答!

别人的帖子看到的,不知道怎么来的,反正原来的v2那个服务器是不对的(好像是什么德语的(误)?)。
自己百度搜搜看吧,我也找不到链接了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-3-23 18:14:22 | 显示全部楼层
zylialiali 发表于 2019-3-23 15:42
别人的帖子看到的,不知道怎么来的,反正原来的v2那个服务器是不对的(好像是什么德语的(误)?)。
自 ...

谢谢!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-1 21:58:51 | 显示全部楼层
都在反爬虫,才开始学习没有实操也太难了吧
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-12-29 09:18

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表