马钰乔布轩 发表于 2020-7-8 12:38:40

各位大佬,我发现了一个翻译网页的翻译规律,请问有人明白这个算法是什么吗?

本帖最后由 马钰乔布轩 于 2020-7-8 12:42 编辑

import urllib.request
import urllib.parse

url ='http://api.microsofttranslator.com/V2/Ajax.svc/Translate?appId=097AF90217CF1BC5B038F01CDE6CA88101A68CBE&oncomplete=translateTexts&from=zh-CN&to=en&text=%E4%BD%A0%E5%A5%BD'

data = {}
data['appId'] = '097AF90217CF1BC5B038F01CDE6CA88101A68CBE' #这段代码无论输入什么都没有变化
data['oncomplete'] = 'translateTexts'
data['from'] = 'zh-CN'
data['to'] = 'en'
data['text'] = ''    #text为输入内容,但是不重要,主要看URL中的代码段的最后那段,例如%E4%BD%A0%E5%A5%BD

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

req = urllib.request.Request(url,data)
req.add_header('User-Agent','Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/39.0.2171.65 Safari/537.36')

response = urllib.request.urlopen(req)

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

print(html)

发现:'Hello' 等于 %E4%BD%A0%E5%A5%BD
          'love'等于 %E7%88%B1

如果知道这个规律是什么就可以破解这个翻译器啦

备注翻译器网址:http://www.mutouyu.com/translate.html

Twilight6 发表于 2020-7-8 15:22:23

本帖最后由 Twilight6 于 2020-7-8 15:27 编辑



这个不是算法....

'Hello' 翻译成中文是 '你好' 而 '你好' 通过 quote 转码就可以变成 %E4%BD%A0%E5%A5%BD

from urllib.parse import quote
quote('你好')

输出结果:
%E4%BD%A0%E5%A5%BD

from urllib.parse import unquote
print(unquote('%E4%BD%A0%E5%A5%BD'))

输出结果:
你好

yifenyu 发表于 2020-7-8 15:26:13

就是对url post数据的编码
i
>>> urllib.parse.quote("你好")
'%E4%BD%A0%E5%A5%BD'
>>> urllib.parse.unquote('%E4%BD%A0%E5%A5%BD')
'你好'

马钰乔布轩 发表于 2020-7-8 15:31:54

谢谢,好像终于摸到一些门路了
页: [1]
查看完整版本: 各位大佬,我发现了一个翻译网页的翻译规律,请问有人明白这个算法是什么吗?