1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
| #coding=utf-8 import os import json import time import hashlib import random import requests import tornado.ioloop import tornado.web
# 首次请求直接返回index.html页面 class MainHandler(tornado.web.RequestHandler): def get(self): self.render("index.html") # 这是下面点击翻译按钮触发的请求类 class EnglineHandler(tornado.web.RequestHandler): # 通过get()函数,可以获取get请求的参数,还有post()函数 def get(self): # get_argument()是用来获取get请求的参数 msg = self.get_argument('msg', 'msw') # 调用有道翻译的api,并接受翻译结果 result = self.req_data(msg) # 将结果返回给请求的地方 self.write(result)
def req_data(self, kw): # 以下是破解和获取有道翻译api的过程 salt = str(random.randint(1, 10) + time.time() * 1000) s = "fanyideskweb%s%ssr_3(QOHT)L2dx#uuGR@r" % (kw, salt) sign = self.md5Encode(s) youdao_url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule" data = { "i": kw, "from": "AUTO", "to": "AUTO", "client": "fanyideskweb", "salt": salt, "sign": sign, "keyfrom": "fanyi.web", } headers={ "Cookie": "OUTFOX_SEARCH_USER_ID=-536406613@103.255.228.99; JSESSIONID=aaa3-OEP9rPK9_KECL_Cw; OUTFOX_SEARCH_USER_ID_NCOO=1519777863.8355908; ___rl__test__cookies=%s" % str(time.time()*1000), "Referer": "http://fanyi.youdao.com/", "User-Agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.102 Safari/537.36", } res = requests.post(youdao_url, headers=headers, data=data).text
return self.filter_content(res) # 将但会结果进行处理 def filter_content(self, value): res = json.loads(value) result = '' result += res.get('translateResult')[0] + '\n\n\n' if not res.get('smartResult'): return result result += '相关内容:\n' for data in res.get('smartResult')['entries']: result += (data + '\n') return result # 将参数加密 def md5Encode(self,msg): m = hashlib.md5() m.update(msg.encode('utf-8')) return m.hexdigest() # if __name__ == "__main__": # 运行tornado服务配置 settings = { "template_path":os.path.join(os.path.dirname(__file__), "templates"), #模板路径 "static_path":os.path.join(os.path.dirname(__file__), "static") , #静态文件路径 "debug":True } app = tornado.web.Application([ (r"/", MainHandler), (r"/engline", EnglineHandler) ], **settings) app.listen(8888) tornado.ioloop.IOLoop.instance().start()
|