各位大佬,我发现了一个翻译网页的翻译规律,请问有人明白这个算法是什么吗?
本帖最后由 马钰乔布轩 于 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: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'))
输出结果:
你好
就是对url post数据的编码
i
>>> urllib.parse.quote("你好")
'%E4%BD%A0%E5%A5%BD'
>>> urllib.parse.unquote('%E4%BD%A0%E5%A5%BD')
'你好'
谢谢,好像终于摸到一些门路了
页:
[1]