skafjdsdhfh 发表于 2017-9-18 20:23:57

{"errorCode":50} 的解决办法

本帖最后由 skafjdsdhfh 于 2017-9-18 20:52 编辑

大家好,之前重复下载猫咪图片和有道翻译的时候出现{"errorCode":50}。

今天在某网里面看到有人说只要去除url里面的_o字段,就可以解决问题。

试了一下可以使用,高兴的振臂欢呼。

基于大部分人都看过视频中老师的教学代码,所以下面贴出来的代码大家可以选择性忽略

import urllib.request
import urllib.parse

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

data = {'i':'有道',
      'from':'AUTO',
      'to':'AUTO',
      'smartresult':'dict',
      'client':'fanyideskweb',
      'salt':'1505653077725',
      'sign':'467d88b4cdc9c6adca72855020b6a1e8',
      'doctype':'json',
      'version':'2.1',
      'keyfrom':'fanyi.web',
      'action':'FY_BY_CLICKBUTTION',
      'typoResult':'true'}

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

r = urllib.request.urlopen(url,data)

html = r.read().decode('utf-8')

print(html)


以上只是把url中的_o给删除就可以重复老师的结果了。

我的问题是:1、为什么这样就可以?
                    2、字典信息和头部信息的内容太多,可以使用老师之前介绍pickle的方式吗?




~~~~~20:48 updata~~~~~~

太过于得意忘形。照老师接下来的代码再次出错。无论翻译什么词语都只会返回“内容”两个字!!!

import urllib.request
import urllib.parse
import json


content = input('请输入需要翻译的词语:')

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom='

data = {'i':'content',
      'from':'AUTO',
      'to':'AUTO',
      'smartresult':'dict',
      'client':'fanyideskweb',
      'salt':'1505653077725',
      'sign':'467d88b4cdc9c6adca72855020b6a1e8',
      'doctype':'json',
      'version':'2.1',
      'keyfrom':'fanyi.web',
      'action':'FY_BY_CLICKBUTTION',
      'typoResult':'true'}

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

r = urllib.request.urlopen(url,data)

html = r.read().decode('utf-8')

target = json.loads(html)

print('翻译结果是:%s'%(target['translateResult']['tgt']))



没有报错。不知道怎么办。我再也不敢随便高兴了。(′°̥̥̥̥̥̥̥̥ω°̥̥̥̥̥̥̥̥`)


                  

新手·ing 发表于 2017-9-18 21:27:04

http://bbs.fishc.com/thread-93823-1-1.html

skafjdsdhfh 发表于 2017-9-18 21:35:54

本帖最后由 skafjdsdhfh 于 2017-9-18 21:37 编辑

新手·ing 发表于 2017-9-18 21:27
http://bbs.fishc.com/thread-93823-1-1.html

。。。。。是可以使用没有错。

鬼先生写的代码里面import了一个hashlib。我不知道那是什么?

而且:m = hashlib.md5()
    d = '翻译'
    u = 'fanyideskweb'
    f = str(int(time.time()*1000))
    c = "rY0D^0'nM0}g5Mm1z%1G4"
    m.update((u + d + f + c).encode('utf-8'))

这一段是干什么用的?请问我要不要去翻文库啊?


谢谢告知,(如果fishC中有hashlib的中文解释,也麻烦告诉我一下,全篇英文就算现在看着还是害怕啊!)

新手·ing 发表于 2017-9-18 21:36:53

skafjdsdhfh 发表于 2017-9-18 21:35
。。。。。是可以使用没有错。

鬼先生写的代码里面import了一个hashlib。我不知道那是什么?


{:10_312:}说真的不也不懂
这个,,,一个Python内置库

skafjdsdhfh 发表于 2017-9-18 21:38:39

新手·ing 发表于 2017-9-18 21:36
说真的不也不懂
这个,,,一个Python内置库

那么我还是硬着头皮去翻文档好了,谢谢你!

新手·ing 发表于 2017-9-18 21:39:03

skafjdsdhfh 发表于 2017-9-18 21:38
那么我还是硬着头皮去翻文档好了,谢谢你!

加油

何处是天涯 发表于 2017-12-1 18:00:00

本帖最后由 何处是天涯 于 2017-12-1 18:01 编辑

import urllib.request
import urllib.parse
import json


content = input('请输入需要翻译的词语:')

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule&sessionFrom='

data = {'i':content,
      'from':'AUTO',
      'to':'AUTO',
      'smartresult':'dict',
      'client':'fanyideskweb',
      'salt':'1505653077725',
      'sign':'467d88b4cdc9c6adca72855020b6a1e8',
      'doctype':'json',
      'version':'2.1',
      'keyfrom':'fanyi.web',
      'action':'FY_BY_CLICKBUTTION',
      'typoResult':'true'
      }

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

r = urllib.request.urlopen(url,data)

html = r.read().decode('utf-8')

target = json.loads(html)

print('翻译结果是:%s'%(target['translateResult']['tgt']))

何处是天涯 发表于 2017-12-1 18:07:55

解决方法总结起来就两点:
第一种只是把url中的_o给删除就可以,需要注意的是在设置外部输入变量content时,在字典中的i键的值content应该不要单引号。
第二种是《用Python破解有道翻译反爬虫机制》里所说的导入hashlib模块和random产生md5时间戳

何处是天涯 发表于 2017-12-1 18:08:43

何处是天涯 发表于 2017-12-1 18:00
import urllib.request
import urllib.parse
import json


楼主,问题已经解决

skafjdsdhfh 发表于 2018-1-24 18:42:02

何处是天涯 发表于 2017-12-1 18:00
import urllib.request
import urllib.parse
import json


对不起,这么长时间才回复你。我之前已经设置过最佳答案了,想把最佳答案给你,但是搞不定,无论如何都谢谢你。

余浪e 发表于 2018-2-26 14:40:32

为什么去掉_o就可以。。。{:5_99:}

阿斯顿规范司 发表于 2018-3-12 16:08:11

这个_o?有人解释一下吗。。另外我发现这个字典里其实光放进 i 和 doctype就可以、、别的不放也一样

williamH 发表于 2018-3-18 16:10:53

我也想请问各位,那个"_o"是什么情况,麻烦知道的可否告知一下。
至于那个翻译内容不变的可能是这里“data['i'] = content”,里面的content是变量,如果用单引号就固定了值,变量才会根据每次的输入来判定翻译吧。。。

那头时空 发表于 2018-7-4 20:31:29

{'i':'content'这里的字典第一个元素的值是你翻译的值 不是字符串content呀

wjzeng 发表于 2018-8-15 20:28:14

我也想请问各位,那个"_o"是什么情况,麻烦知道的可否告知一下。

xiawanfuzhu 发表于 2018-9-3 10:54:14

http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule
带-o 的网址,复制的浏览器,显示:{"errorCode":50}

去掉-o就正常了.....

我爱小草hj 发表于 2018-12-14 10:54:43

返回内容两个字,是因为,data['i'] = 'content',你去掉content的单引号就行了,不然的话,他就是对content进行翻译了

隔壁本子叔 发表于 2019-7-13 18:15:41

天哪,你们难道没有发现楼主这个显而易见的问题吗,他的content变量在data里加了单引号,这当然只能翻译出内容两个字了,因为一直传递的参数就是conten这个英文。。。。。。。。。。
正确代码在这里
import urllib.request
import urllib.parse
import json

url = 'http://fanyi.youdao.com/translate?smartresult=dict&smartresult=rule'
content=input('请输入你需要翻译的内容:')
data = {'i':content,
      'from':'AUTO',
      'to':'AUTO',
      'smartresult':'dict',
      'client':'fanyideskweb',
      'salt':'1505653077725',
      'sign':'467d88b4cdc9c6adca72855020b6a1e8',
      'doctype':'json',
      'version':'2.1',
      'keyfrom':'fanyi.web',
      'action':'FY_BY_CLICKBUTTION',
      'typoResult':'true'}

data = urllib.parse.urlencode(data).encode('utf-8')
r = urllib.request.urlopen(url,data)
html = r.read().decode('utf-8')
target=json.loads(html)
print('翻译结果是:%s'%(target['translateResult']['tgt']))

隔壁本子叔 发表于 2019-7-13 18:21:41

何处是天涯 发表于 2017-12-1 18:07
解决方法总结起来就两点:
第一种只是把url中的_o给删除就可以,需要注意的是在设置外部输入变量content时 ...

额,刚才没仔细往下翻,您这是正解

哈加莎 发表于 2019-7-18 20:37:31

”您的请求来源非法,商业用途使用请关注有道翻译API官方网站\u201C有道智云“怎么办
页: [1] 2
查看完整版本: {"errorCode":50} 的解决办法