日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

用Python制作mini翻譯器的實現示例

瀏覽:139日期:2022-07-13 18:25:30

1. 實例描述

在平時編程的過程中,會經常在網上翻譯一些單詞,本文使用Python制作一款翻譯小工具,不僅可以自己用,還可以嵌入到程序當中。運行程序,效果如下圖所示,在文本框輸入英文或中文,單擊 翻譯 按鈕即可翻譯,并將翻譯內容顯示在下面的文本框中。單擊 保存 按鈕將輸入內容和翻譯內容保存到文本文件中以便日后復習。單擊 清空 按鈕,將清除文本框中的內容。

用Python制作mini翻譯器的實現示例

2. 技術要點

利用 requests 模塊獲取 有道詞典web 頁面的 post 信息,獲取需要的內容,通過 tkinter 模塊生成窗口界面,使用文件讀寫方法將內容保存到文本文件中。

2.1 有道詞典這樣的 JS 混淆加密應該怎么破

嘿嘿嘿,本文需要說說一些爬蟲過程中需要斗智斗勇的事情了,這次咱們就來說說關于一些 JS 混淆加密的事。所謂 JS ,就是 JavaScript,一種前端的腳本語言,一般情況下每個網站都需要 JS 來做一些數據交互,頁面渲染等一些異步操作。當然,對于反爬的人來說,JS 的用處還可以用來對一些數據進行加密。

今天咱們就以有道詞典這個在線翻譯的網站為例,看看他們是如何加密請求數據的,以及筆者是如何通過 Python 模擬請求從而獲得關鍵數據的。

點擊 此處 打開有道翻譯的網站:

用Python制作mini翻譯器的實現示例

輸入中文然后點擊翻譯按鈕就會翻譯出來英文,比如:

用Python制作mini翻譯器的實現示例

接著我們打開開發者工具,按下 F12 來抓一下數據,當我們點擊翻譯的時候,可以看到有了一個請求:

用Python制作mini翻譯器的實現示例

點進去看可以發現,POST 請求的地址是:

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

用Python制作mini翻譯器的實現示例

我們再來看一下請求過去攜帶的參數是啥:

用Python制作mini翻譯器的實現示例

可以看到,還是需要挺多參數的,其中的 i 就是我們要翻譯的內容,那簡單啊~想要得到翻譯后的數據,那么我們直接把請求頭和所需參數的值復制一下,然后用 requests 請求一波不就搞定了?運行一波,返回的是錯誤碼。

用Python制作mini翻譯器的實現示例

我們再點多幾次翻譯按鈕,然后就可以看到有多次請求。

用Python制作mini翻譯器的實現示例

可以發現,每一次的請求中的 salt、sign、lts、bv 參數是會一直變化的。

用Python制作mini翻譯器的實現示例

用Python制作mini翻譯器的實現示例

我們回到NetWork ,我們看到 Initiator 這一欄,可以看到它請求到了 fanyi.min.js:1 這個 js 文件。

用Python制作mini翻譯器的實現示例

我們就點 fanyi.min.js:1 進去看看,牛的一比,直接看不懂…還好,左下角有一個 {} ,可以點一下,發現有驚喜,直接幫我們把壓縮的 js 代碼格式化。

用Python制作mini翻譯器的實現示例

牛逼不,行號都給我們顯示出來了,不過到了這里,依然懵逼,我們還是不知道怎么拿到 salt、sign、lts、bv 這些參數的值…咋辦?恩,Chrome 瀏覽器的打斷點功能在這個時候就要派上用場。那么如何使用斷點功能呢,我們看到 Chrome 的右邊是這樣的:

用Python制作mini翻譯器的實現示例

看到這個 XHR/fetch BreakPoints 沒,在這里我們可以添加 url ,根據請求這個 url 打斷點。而我們要打的斷點就是一開始獲取到的請求 url :

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

點擊 XHR/fetch BreakPoints 右邊的 + 號,然后把鏈接復制進去:

用Python制作mini翻譯器的實現示例

這時候再點擊翻譯按鈕,突然,你的屏幕一灰,表示好事將近,我們成功打上了斷點,也就是說,現在我們可以在請求之前做一些騷操作。

用Python制作mini翻譯器的實現示例

這時候我們將右邊的 Call Stack 展開,點 t.translate 進去:

用Python制作mini翻譯器的實現示例

這些,就是我們在點擊翻譯按鈕之后,會調用到 js 里面的方法,從這里下手,來尋找參數是被如何加密的,

用Python制作mini翻譯器的實現示例

用Python制作mini翻譯器的實現示例

3. 代碼實現

用Python制作mini翻譯器的具體步驟如下:

首先安裝 requests 模塊。使用 pip 命令安裝,命令如下:

pip install --user -i http://pypi.douban.com/simple --trusted-host pypi.douban.com requests

導入相關模塊,代碼如下。

import tkinter as tkimport requestsimport timeimport hashlibimport random

定義翻譯函數,代碼如下。

def get_ts(): ''' 獲取時間戳 :return: 時間 ''' return str(int(time.time() * 1000))def get_bv(): ''' 獲取app版本 并通過md5加密 :return: 加密后的字符串 ''' navigator_appVersion = ’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3’ ’904.108 Safari/537.36’ m = hashlib.md5() m.update(navigator_appVersion.encode(’utf-8’)) return m.hexdigest()def get_salt(ts): return str(ts) + str(int(random.random() * 10))def get_sign(salt): str1 = text1.get() # 定義一個變量,用來接收輸入文本框的值 str_data = ’fanyideskweb’ + str1 + salt + ’]BjuETDhU)zqSxf-=B#7m’ m = hashlib.md5() m.update(str_data.encode(’utf-8’)) return m.hexdigest()def get_form_data(): str1 = text1.get() # 定義一個變量,用來接收輸入文本框的值 ts = get_ts() salt = get_salt(ts) form_data = { ’i’: str1, ’from’: ’AUTO’, ’to’: ’AUTO’, ’smartresult’: ’dict’, ’client’: ’fanyideskweb’, ’salt’: str(salt), ’sign’: get_sign(salt), ’ts’: ts, ’bv’: get_bv(), ’doctype’: ’json’, ’version’: ’2.1’, ’keyfrom’: ’fanyi.web’, ’action’: ’FY_BY_CLICKBUTTION’, } return form_data# 定義翻譯函數def translate(): url = 'http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule' headers = { ’User-Agent’: ’Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36’, ’Referer’: ’http://fanyi.youdao.com/’, ’Cookie’: ’OUTFOX_SEARCH_USER_ID_NCOO=173326173.72226533; OUTFOX_SEARCH_USER_ID='-1202396372@10.108.160.18'; DICT_UGC=be3af0da19b5c5e6aa4e17bd8d90b28a|; JSESSIONID=abcAjF-mxbKFQ_48uyLpx; __guid=204659719.1682486053682624500.1597281254731.5474; monitor_count=2; ___rl__test__cookies=1597285713766’ } response = requests.post(url=url, data=get_form_data(), headers=headers) if response.status_code == 200: result = response.json() translate_result = result[’translateResult’][0][0][’tgt’] text2.delete(1.0, 'end') # 清空輸出文本框 text2.insert(’end’, translate_result) # 將翻譯結果添加到輸出文本框中

定義寫入文本 txt 的函數,代碼如下。

# 定義寫入文本txt的函數def write(): f1 = open(’translate.txt’, ’a+’) f1.write(text1.get() + ’,’ + text2.get(0.0, tk.END))

定義清空文本框的函數,代碼如下。

# 定義清空文本框的函數def delete(): text1.delete(0, 'end') # 從第一行清除到最后一行 text2.delete(1.0, 'end')

窗口界面設計,代碼如下。

if __name__ == ’__main__’: window = tk.Tk() # 創建window窗口 window.wm_attributes('-topmost', 1) # 置頂 window.title('AmoXiang mini翻譯器') # 定義窗口名稱 window.resizable(width=False, height=False) # 決定框體大小是否能夠調整 text1 = tk.Entry(window, width=80, bg=’whitesmoke’) # 在窗體上添加一個輸入文本框,并設置尺寸和顏色 text2 = tk.Text(window, height=18, bg=’lightgrey’) # 在窗體上添加一個輸出文本框,并設置尺寸和顏色 text1.grid(row=0, sticky='W', padx=1) text2.grid(row=1) # 添加一個按鈕,用于觸發翻譯功能 t_button = tk.Button(window, text=’翻譯’, relief=tk.RAISED, width=8, height=1, font=’宋體’, bg=’red’, fg=’white’, command=translate) # 添加一個按鈕,用于觸發清空輸入文本框 button1 = tk.Button(window, text=’保存’, font=’宋體’, relief=tk.RAISED, width=8, height=1, command=write) # 添加一個按鈕,用于觸發清空輸出文本框 button2 = tk.Button(window, text=’清空’, font=’宋體’, relief=tk.RAISED, width=8, height=1, command=delete) # 添加背景圖片 image_file = tk.PhotoImage(file=’amo.gif’) label = tk.Label(window, image=image_file) # 完成界面布局,設置各個控件的位置 t_button.grid(row=0, column=1, padx=2) button1.grid(row=0, column=2, padx=2) button2.grid(row=0, column=3, padx=2) label.grid(row=1, column=1, columnspan=3) tk.mainloop()

到此這篇關于用Python制作mini翻譯器的實現示例的文章就介紹到這了,更多相關Python mini翻譯器內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
999国产精品永久免费视频app| 免费视频一区二区| 国产精品免费看| 成人一二三区| 亚洲三级视频| 精品1区2区3区4区| 天堂资源在线亚洲| 日韩久久精品网| 国产精品a级| 日韩在线视频一区二区三区| 国产精品毛片| 亚洲天堂黄色| 久久久水蜜桃av免费网站| 久久精品福利| 国产精品porn| 国产精品嫩草99av在线| 亚洲a在线视频| 精品中国亚洲| 久久av导航| 国产精品a级| 国产精品嫩草影院在线看| 亚洲日产av中文字幕| 美女精品网站| 日韩中文字幕1| 三级亚洲高清视频| 欧美中文字幕| 亚洲欧美日韩专区| 玖玖玖国产精品| 免费观看在线综合| 蜜芽一区二区三区| 奶水喷射视频一区| 午夜在线视频观看日韩17c| 亚洲激情社区| 尤物在线精品| 在线一区二区三区视频| 中文字幕乱码亚洲无线精品一区| 日本一不卡视频| 18国产精品| 日韩av字幕| 国产精品久久乐| 美女久久精品| 四虎8848精品成人免费网站| 日韩精品电影| 久久精品青草| 91精品高清| 亚洲二区三区不卡| 伊人久久亚洲影院| 久久成人精品| 欧美亚洲三区| 国模精品一区| 91精品蜜臀一区二区三区在线| 亚洲精品97| 亚洲视频电影在线| 欧美亚洲综合视频| 国产成人精选| 亚洲精品a级片| 亚洲激情国产| 久久国产免费看| 成人国产精选| 久久久久国产精品一区二区| 欧美日韩激情| 欧美国产另类| 免费精品视频| 韩国久久久久久| 欧美一区影院| 一区二区亚洲精品| 国产v日韩v欧美v| 天堂va欧美ⅴa亚洲va一国产| 日韩欧美一区二区三区在线视频 | 亚洲天堂久久| 国产精品对白| 综合精品一区| 亚洲精品小说| 国产a亚洲精品| 日本免费新一区视频| 欧美日韩亚洲在线观看| 久久精品免视看国产成人| 免费一级片91| 欧美91视频| 欧美国产美女| 国产经典一区| 五月国产精品| 9色国产精品| 色婷婷精品视频| 国产videos久久| 久久成人高清| 日本午夜精品久久久久| 免费在线观看视频一区| 久久久一本精品| 精品日本视频| 欧美日一区二区三区在线观看国产免 | 国产综合亚洲精品一区二| 欧美激情网址| 欧美一级网址| 亚洲91网站| 热久久免费视频| 99香蕉国产精品偷在线观看| 99久久亚洲精品| 亚洲黄色中文字幕| 欧美日一区二区在线观看| 综合视频一区| 中文字幕成人| 在线精品观看| 中文精品视频| 狠狠干综合网| 亚洲二区三区不卡| 99精品美女| 久久男女视频| 久久久精品五月天| 日韩中文影院| 日韩高清成人| 青青久久av| 久久在线电影| 九一精品国产| 成人羞羞视频在线看网址| 国产激情在线播放| 久久青青视频| 涩涩av在线| 日韩国产一区二区| 日韩高清中文字幕一区二区| 日韩美女一区二区三区在线观看| 高清一区二区三区| 亚洲免费福利| 日韩高清中文字幕一区二区| 秋霞国产精品| 午夜精品一区二区三区国产| 亚洲精品网址| 亚洲视频二区| 日韩精品免费一区二区夜夜嗨 | 精品久久中文| 成人福利一区 | 18国产精品| 国产精品日韩精品在线播放| 麻豆一区二区三| 91免费精品| 国产在线成人| 免费观看在线综合色| 婷婷成人av| 免费在线观看一区| 日韩成人精品一区| 久久九九精品| 午夜在线一区| 久久精品 人人爱| 精品国产欧美日韩一区二区三区| 神马久久午夜| 在线一区欧美| 日韩高清欧美激情| 久久一区欧美| 亚洲a在线视频| 亚洲最新av| 久久av网站| 久久视频国产| 亚洲精品视频一二三区| 国产精品一级在线观看| 日韩88av| 国产麻豆综合| 欧美精品影院| 综合日韩av| 蜜桃一区二区三区| 亚洲欧美在线综合| 久久wwww| 天堂资源在线亚洲| 亚洲欧美网站在线观看| 国产丝袜一区| 电影91久久久| 日韩午夜一区| 国产精品亚洲产品| 另类中文字幕国产精品| 亚洲久久视频| 精品国产一区二区三区噜噜噜| 久久人人88| 国产欧美一区二区三区精品观看| 三级在线看中文字幕完整版| 日韩专区在线视频| 精品精品99| 另类av一区二区| 麻豆免费精品视频| 国产精品毛片一区二区三区| 国产精品扒开腿做爽爽爽软件| 99久久婷婷这里只有精品| 奇米色欧美一区二区三区| av高清不卡| 日本视频一区二区| 欧美午夜精彩| 青青草精品视频| 日韩欧美一区二区三区在线视频| 婷婷久久免费视频| 久久婷婷久久| 国产欧美日韩在线观看视频| 欧美91视频| 国产精品久久久久久久久免费高清 | 在线一区av| 亚洲精品麻豆| 三上悠亚国产精品一区二区三区 | 99久久久久国产精品| 久久黄色影视| 亚洲欧美高清| 日韩大片在线| 国产精品sss在线观看av| 香蕉成人久久|