鱼C论坛

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

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

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

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

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

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

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

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

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

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

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

  12. data['query'] = content

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

  14. req = urllib.request.Request(url,data=data,headers=headers)
  15. response = urllib.request.urlopen(req)
  16. html = response.read().decode('utf-8')
  17. print(html)
复制代码
最佳答案
2018-3-30 19:43:38
  1. 'sign': '124092.329613'
复制代码

这个 sign 是js加密的。
小甲鱼最新课程 -> https://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
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-30 18:37:27 | 显示全部楼层
网站反爬,就好比密码,你没有给对相应的密码当然返回错误。换个网站爬吧。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2018-3-30 19:43:38 | 显示全部楼层    本楼为最佳答案   
  1. 'sign': '124092.329613'
复制代码

这个 sign 是js加密的。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

谢谢!看了一下,每次都变动,不是固定值。
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

3q
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

  7. data = {}
  8. data2 = {}

  9. data['i']= content
  10. data['from'] = 'AUTO'
  11. data['to'] = 'AUTO'
  12. data['smartresult'] = 'dict'
  13. data['client'] = 'fanyideskweb'
  14. data['salt'] = '1525141473246'
  15. data['sign'] = '47ee728a4465ef98ac06510bf67f3023'
  16. data['doctype'] = 'json'
  17. data['version'] = '2.1'
  18. data['keyfrom'] = 'fanyi.web'
  19. data['action'] = 'FY_BY_CLICKBUTTION'
  20. data['typoResult'] = 'false'
  21. data = urllib.parse.urlencode(data).encode('utf-8')

  22. data2['from'] = 'zh'
  23. data2['to'] = 'en'
  24. data2['query'] = content
  25. data2['transtype'] = 'translang'
  26. data2['simple_means_flag'] = '3'
  27. data2['sign'] = '94582.365127'
  28. data2['token'] = 'ec980ef090b173ebdff2eea5ffd9a778'
  29. data2 = urllib.parse.urlencode(data2).encode('utf-8')

  30. 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"}

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

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

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

  38. print('【有道】翻译为: %s'%(target['translateResult'][0][0]['tgt']))
  39. print('【百度】翻译为: %s'%(target2['trans'][0]['dst']))
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 1 反对 0

使用道具 举报

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

嗯,移动端的着实可以~
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-11 14:11:23 | 显示全部楼层
移动端有道翻译可以爬取到,百度翻译还是不可以
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-1-26 11:03:12 | 显示全部楼层
用代码搞出了sign,也是不行,不知道怎么破
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

移动端没检查这个
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

-----编辑一下-----
是接口错了,应该是 url = 'https://fanyi.baidu.com/transapi'
果然是万能的百度
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

您好 请问这个Url是怎么获得的 我在报文中没有发现这个url啊 谢谢解答!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

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

使用道具 举报

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

谢谢!
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2019-6-1 21:58:51 | 显示全部楼层
都在反爬虫,才开始学习没有实操也太难了吧
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-4-25 08:06

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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