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

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

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

瀏覽:143日期: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久久,三上悠亚国产精品一区二区三区
亚洲少妇自拍| 日韩精品1区2区3区| 国产精品欧美在线观看| 亚洲另类av| 亚洲在线久久| 亚欧洲精品视频在线观看| 只有精品亚洲| 在线精品观看| 日本精品国产| 亚洲精品福利| 91精品啪在线观看国产爱臀| 综合一区在线| 91九色综合| 久久精品国产网站| 精品一区二区三区视频在线播放| 国产黄色精品| 国产传媒av在线| 日韩精品水蜜桃| 在线 亚洲欧美在线综合一区| 久久亚洲一区| 91精品国产自产观看在线| 国产精品亚洲综合久久| 精品国产一区二区三区av片| 成人亚洲欧美| 久久久久久久久久久9不雅视频| 婷婷丁香综合| 亚洲97av| 牛牛精品成人免费视频| 亚洲成av在线| 麻豆亚洲精品| 国产欧美日韩视频在线| 精品久久久网| 蜜桃tv一区二区三区| 亚洲影视一区二区三区| 国产精品色婷婷在线观看| 久久青青视频| 日韩午夜在线| 69堂免费精品视频在线播放| 精品亚洲自拍| 亚洲精品一级二级| 久久最新视频| 久久av影视| 免费av一区| 日本在线不卡视频一二三区| 久久男人av| 狠狠久久婷婷| 国产精品亚洲片在线播放| 神马久久午夜| 中文字幕一区二区三区四区久久 | 久久亚洲国产| 亚洲久久视频| 蜜桃视频在线网站| 三级亚洲高清视频| 欧美激情精品| 视频在线观看一区| 国内精品亚洲| 蜜桃久久久久久| 欧美激情另类| 日本中文字幕视频一区| 日韩在线综合| 欧美一区激情| 欧美成人综合| 欧美激情 亚洲a∨综合| 亚洲欧洲一区| 久久精品一区二区国产| 亚洲激情av| 欧美黑人巨大videos精品| 欧美不卡在线| 岛国精品一区| 中文字幕日韩高清在线| 91中文字幕精品永久在线| 亚洲制服欧美另类| 久久一区二区中文字幕| 国产精品久久亚洲不卡| 尤物网精品视频| 久久男人天堂| 国产精品一区二区精品| 在线亚洲观看| 日韩理论片av| 国产精品任我爽爆在线播放| 丝袜国产日韩另类美女| 三级在线看中文字幕完整版| 91午夜精品| 亚洲中字黄色| 日韩不卡视频在线观看| 国产精品极品| 亚洲免费福利一区| 女人天堂亚洲aⅴ在线观看| 欧美激情aⅴ一区二区三区 | 你懂的国产精品永久在线| 天堂成人国产精品一区| 日韩久久一区二区三区| 国产精品免费大片| 鲁大师影院一区二区三区| 99久久久久| 精品国产日韩欧美精品国产欧美日韩一区二区三区 | 国产精品丝袜xxxxxxx| 成人在线视频中文字幕| 奇米狠狠一区二区三区| 国产美女精品| 欧洲激情综合| 日韩精品麻豆| 久久久久久夜| 国产免费av国片精品草莓男男 | 精品一区二区三区免费看| 91欧美精品| 亚洲精品少妇| 日韩中文字幕1| 99精品99| 欧美日韩国产探花| 欧美成人精品| 亚洲国产一区二区三区在线播放| 日本一区二区高清不卡| 美女性感视频久久| 国产美女视频一区二区| 欧美一区免费| 日韩精品a在线观看91| 亚洲欧洲av| 综合亚洲自拍| 日韩国产一二三区| 欧美日本二区| 国产精品地址| 免费在线亚洲欧美| 风间由美中文字幕在线看视频国产欧美| 美女尤物国产一区| 免费日韩成人| 精品久久影院| 日韩国产在线| 久久久天天操| 不卡一区2区| 欧美在线影院| 久久午夜影视| 91亚洲无吗| 国产精品分类| 98精品视频| 秋霞影视一区二区三区| 欧洲av一区二区| 伊人久久成人| 亚洲影视一区二区三区| 日韩av中文在线观看| 欧美一区二区三区久久精品| 国产精品久久久久久妇女 | 六月婷婷一区| 日本久久一区| 精品国产亚洲一区二区三区大结局| sm捆绑调教国产免费网站在线观看 | 97精品中文字幕| 少妇精品导航| 在线一区欧美| 无码日韩精品一区二区免费| 国产欧美91| 国产成人免费视频网站视频社区| 国产在线观看www| 亚洲高清激情| 亚洲资源在线| 久久99蜜桃| 色老板在线视频一区二区| 国产视频一区三区| 日本不卡视频在线观看| 久久天堂影院| 在线成人直播| 欧美精品影院| 日韩精品诱惑一区?区三区| 99国产精品久久久久久久成人热| 日本不卡一区二区三区| 精品国产麻豆| 欧美日韩中文字幕一区二区三区| 久久福利毛片| 国产精品亚洲四区在线观看| 久久婷婷激情| 日韩高清中文字幕一区| 日韩欧美看国产| 亚洲精品裸体| 亚洲女同av| 男女性色大片免费观看一区二区 | 蜜臀av性久久久久蜜臀aⅴ流畅| 国产乱人伦精品一区| 天堂а√在线最新版中文在线| 狠狠爱成人网| 久久超碰99| 精品一区亚洲| 国产伦精品一区二区三区视频 | 婷婷国产精品| 日本特黄久久久高潮| 日本在线精品| 久久黄色影视| 天堂网在线观看国产精品| 国产精品天堂蜜av在线播放| 欧美a级片一区| 欧美黑人做爰爽爽爽| 国产模特精品视频久久久久| 美女免费视频一区| 亚洲欧美不卡| 精品一区视频| 伊人www22综合色| 欧美激情国产在线| 日韩久久一区| 久久久久久久久丰满| 国产精品久一| 日本大胆欧美人术艺术动态|