欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

詳解python使用金山詞霸的翻譯功能(調(diào)試工具斷點(diǎn)的使用)

 更新時(shí)間:2021年01月07日 16:41:53   作者:yuankingping  
這篇文章主要介紹了詳解python使用金山詞霸的翻譯功能(調(diào)試工具斷點(diǎn)的使用),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

今天試著用python獲取金山詞霸的翻譯功能,鏈接在這里:
ICIBA傳送門(mén)
打開(kāi)之后,界面是這樣的,還是比較干凈的。

在這里插入圖片描述

按F12,打開(kāi)調(diào)試工具,選擇Network,找到XHR

在這里插入圖片描述

這里就是查看網(wǎng)絡(luò)傳輸?shù)膬?nèi)容。XHR就是不刷新頁(yè)面的網(wǎng)絡(luò)傳輸,就是常說(shuō)的ajax(阿賈克斯,像是希臘神話里的名字……)。
然后我們?cè)诜g窗口寫(xiě)點(diǎn)兒內(nèi)容,然后點(diǎn)翻譯

在這里插入圖片描述

看,左邊的頁(yè)面出現(xiàn)了翻譯結(jié)果,右邊調(diào)試窗口出現(xiàn)了兩條數(shù)據(jù)傳輸。
兩條?那我們選哪條呢?點(diǎn)開(kāi)看看……
哦,天哪~兩條都是一樣的,那我們隨便選一條就可以了。
點(diǎn)一下,看后面的內(nèi)容

在這里插入圖片描述

好了,首先看到的是Request URL。嗯……就是我們要的URL了。
先記下來(lái)……
(你是用復(fù)制、粘貼,還是鍵盤(pán)上手打?難道是抄在本子上?)
下面的Post也要記住,這是請(qǐng)求類型,別用成get了。
再往下,

在這里插入圖片描述

上面那部分是不是很熟悉?對(duì)了,就是URL鏈接里的東西。不管他,URL里有了就好了。
下面的部分,就是要提交的數(shù)據(jù)了。
把這部分轉(zhuǎn)成字典格式:

data = {
	'from':'zh'
	'to':'en'
	'q':'風(fēng)'
}

 

fromto這就好理解了,就是從中文到英文嘛。好,咱們不管他是中是英,都給成“auto”,讓他自己去猜去……
q就是我們查的詞語(yǔ),那我們就用變量q表示吧,這樣改后的字典就是:

data = {
	'from':'auto'
	'to':'auto'
	'q':q
}

提交的數(shù)據(jù)有了,那我們把請(qǐng)求頭建立起來(lái)吧
再讓我們回到調(diào)試工具里去看下

在這里插入圖片描述

headers就是請(qǐng)求頭部,那里面這么多東西,我們要用什么呢?
當(dāng)然**User-Agent:**不能少了

headers = {
  'User-Agent':'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/57.0.2987.98 Safari/537.36 LBBROWSER'
  }

好了,我們需要的東西都齊了,那就開(kāi)始吧:
首先是引入文件,

import requests

我們?cè)俚秸{(diào)試工具里看下返回值,看下獲取的內(nèi)容是什么格式的。一般返回值有json的,也有html的。

在這里插入圖片描述

這里把返回的結(jié)果給你了,這就是json的數(shù)據(jù)格式。
我們用q來(lái)獲取輸入的文本

q = input('請(qǐng)輸入要翻譯的內(nèi)容:')

整理后就是這樣了:

import requests
q = input('請(qǐng)輸入要翻譯的內(nèi)容:')
headers = {
 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
 }
url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_ciba&sign=c1b23d3ff9163427'
data = {
 'from':'auto',
 'to':'auto',
 'q':q
  }

res = requests.post(url=url,headers=headers,data=data).json()
print(res)

好了,運(yùn)行一遍試下

在這里插入圖片描述

我們輸入要翻譯的內(nèi)容,

在這里插入圖片描述

不錯(cuò),結(jié)果返回了,是json格式的數(shù)據(jù),里面有我們需要的結(jié)果。
再換個(gè)詞試下……

在這里插入圖片描述

這是什么情況?為什么錯(cuò)了?
好吧,我們?cè)跒g覽器里試下

在這里插入圖片描述

點(diǎn)開(kāi)看一下……

發(fā)現(xiàn)了嗎?sign不一樣……
前一個(gè)是什么?

sign=c1b23d3ff9163427'

這個(gè)是

sign=4b733a5ea3f4dd5a

sign是動(dòng)態(tài)生成的,怎么辦?找生成方法!

在這里插入圖片描述

我們看這里……

這是運(yùn)行的代碼的位置,我們點(diǎn)進(jìn)去……

在這里插入圖片描述

上面老長(zhǎng)一行了,怎么辦?
看左下角的大括號(hào)了嗎?點(diǎn)下就會(huì)有驚喜!

在這里插入圖片描述

好棒!已經(jīng)排列整齊了……
下面就是在這里查找sign的位置了,Ctrl+F,開(kāi)始搜索

在這里插入圖片描述

23個(gè)結(jié)果,一個(gè)個(gè)看過(guò)去……找找哪個(gè)比較像加密的……

在這里插入圖片描述

看,這里是對(duì)URL進(jìn)行拼接的。上面就是sign的加密方式
sign后面拼接的是個(gè)r,r就是上面的一行算出來(lái)的,

r = c()("6key_cibaifanyicjbysdlove1".concat(t.q.replace(/(^\s*)|(\s*$)/g, ""))).toString().substring(0, 16);

你看,這個(gè)r就是用一系列字符串拼接起來(lái)的,都有什么呢?

1、"6key_cibaifanyicjbysdlove1"
2、t.q.replace(/(^\s*)|(\s*$)/g, "")

第一個(gè)簡(jiǎn)單,就是一串固定的字符串
第二個(gè)呢?t.q是什么鬼?我們來(lái)找一下……
好,我們?cè)谶@一行打個(gè)斷點(diǎn),就是在前面的行號(hào)上點(diǎn)一下。

在這里插入圖片描述

看見(jiàn)藍(lán)色的標(biāo)簽了吧,這就是個(gè)斷點(diǎn)。在運(yùn)行的時(shí)候,運(yùn)行到這里就會(huì)停止,然后把當(dāng)前狀態(tài)給你報(bào)出來(lái)。好了,斷點(diǎn)有了,

咱們讓點(diǎn)下翻譯,讓他運(yùn)行下看看

在這里插入圖片描述

運(yùn)行到斷點(diǎn)時(shí),停止了,并將當(dāng)前的參數(shù)顯示了出來(lái)。把鼠標(biāo)放在q上……

在這里插入圖片描述

所得寺內(nèi)!原來(lái)就是我們要查的詞哦……
然后就把他們拼在一起……

"6key_cibaifanyicjbysdlove1"+"云"

可是c()又是什么鬼?好吧,我們看下加密后的結(jié)果是什么

在這里插入圖片描述

這個(gè)字符串是不是很眼熟?很像md5不是嗎?
好的,那我們找一個(gè)md5加密工具試下,把加密前的字符串拼接起來(lái)

"6key_cibaifanyicjbysdlove1云"

然后我們放到md5加密工具里,看結(jié)果

在這里插入圖片描述

看這里……

在這里插入圖片描述

是不是這個(gè)?32位加密后的前16位!
我們?cè)衮?yàn)證一下,換一個(gè)詞查下,我們查下“雨”

在這里插入圖片描述

我把字符串拼接好

"6key_cibaifanyicjbysdlove1雨"

放到md5工具里看下

在這里插入圖片描述

是不是一樣的?好了,我們知道sign的加密規(guī)則了,那我們自己就把這個(gè)sign加密。
要用到md5,我們就要引用新的文件了

import hashlib

至于md5的用法,可以看下:

import hashlib
 
 
hash = hashlib.md5()#md5對(duì)象,md5不能反解,但是加密是固定的,就是關(guān)系是一一對(duì)應(yīng),所以有缺陷,可以被對(duì)撞出來(lái)
hash.update(bytes('admin',encoding='utf-8'))#要對(duì)哪個(gè)字符串進(jìn)行加密,就放這里
print(hash.hexdigest())#拿到加密字符串
# hash2=hashlib.sha384()#不同算法,hashlib很多加密算法
# hash2.update(bytes('admin',encoding='utf-8'))
# print(hash.hexdigest())
 
 
hash3 = hashlib.md5(bytes('abd',encoding='utf-8'))
''' 如果沒(méi)有參數(shù),所有md5遵守一個(gè)規(guī)則,生成同一個(gè)對(duì)應(yīng)關(guān)系,如果加了參數(shù),
就是在原先加密的基礎(chǔ)上再加密一層,這樣的話參數(shù)只有自己知道,防止被撞庫(kù),
因?yàn)閯e人永遠(yuǎn)拿不到這個(gè)參數(shù)
'''
hash3.update(bytes('admin',encoding='utf-8'))
print(hash3.hexdigest())

然后我們把sign的加密寫(xiě)一下

sign = (hashlib.md5(("6key_cibaifanyicjbysdlove1"+q).encode('utf-8')).hexdigest())[0:16]

再把sign拼接到url上

sign = (hashlib.md5(("6key_cibaifanyicjbysdlove1"+q).encode('utf-8')).hexdigest())[0:16]
url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_ciba'
url = url+'&sign='+sign

然后我們運(yùn)行下看看

在這里插入圖片描述

一切OK,沒(méi)問(wèn)題!
最后我們從返回的json數(shù)據(jù)里提取出我們要的那部分

rt= res['content']['out']
print('翻譯完成:'+rt)

全部代碼就是

import requests
import hashlib

q = input('請(qǐng)輸入要翻譯的內(nèi)容:')

headers = {
 'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/72.0.3626.121 Safari/537.36'
 }


url = 'https://ifanyi.iciba.com/index.php?c=trans&m=fy&client=6&auth_user=key_ciba'
sign = (hashlib.md5(("6key_cibaifanyicjbysdlove1"+q).encode('utf-8')).hexdigest())[0:16]
url = url+'&sign='+sign

data = {
 'from':'auto',
 'to':'auto',
 'q':q
  }

res = requests.post(url=url,headers=headers,data=data).json()

rt= res['content']['out']
print('翻譯完成:'+rt)

運(yùn)行看下:

在這里插入圖片描述

OK,翻譯完工!

總結(jié):
post請(qǐng)求的所有data都是已知的,只有url里有一個(gè)動(dòng)態(tài)的sign。麻煩的地方就是查找sign的加密方式。
一般情況下,大部分sign的加密都是使用的md5,你只要找到用來(lái)加密的字符串就可以了。
使用斷點(diǎn)來(lái)跟蹤運(yùn)行過(guò)程是比較常用的手段,但也不是全都能找到結(jié)果的。

到此這篇關(guān)于詳解python使用金山詞霸的翻譯功能(調(diào)試工具斷點(diǎn)的使用)的文章就介紹到這了,更多相關(guān)python金山詞霸的翻譯內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)按中文排序的方法示例

    Python實(shí)現(xiàn)按中文排序的方法示例

    這篇文章主要介紹了Python實(shí)現(xiàn)按中文排序的方法,涉及Python基于locale模塊的中文編碼與排序相關(guān)操作技巧,需要的朋友可以參考下
    2018-04-04
  • python 一維二維插值實(shí)例

    python 一維二維插值實(shí)例

    這篇文章主要介紹了python 一維二維插值實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-04-04
  • Python?SQLAlchemy庫(kù)的實(shí)現(xiàn)示例

    Python?SQLAlchemy庫(kù)的實(shí)現(xiàn)示例

    SQLAlchemy庫(kù)是一個(gè)強(qiáng)大的工具,為開(kāi)發(fā)人員提供了便捷的方式來(lái)處理與數(shù)據(jù)庫(kù)的交互,本文主要介紹了Python?SQLAlchemy庫(kù)的實(shí)現(xiàn)示例,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-06-06
  • tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T

    tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU

    這篇文章主要介紹了tensorflow/core/platform/cpu_feature_guard.cc:140] Your CPU supports instructions that this T的相關(guān)知識(shí),本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-06-06
  • Python3.x對(duì)JSON的一些操作示例

    Python3.x對(duì)JSON的一些操作示例

    最近在學(xué)習(xí)python3,正巧遇到了一些json的操作,索性整理一下分享出來(lái),下面這篇文章主要給大家介紹了關(guān)于Python3.x對(duì)JSON的一些操作,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-09-09
  • python自動(dòng)發(fā)送測(cè)試報(bào)告郵件功能的實(shí)現(xiàn)

    python自動(dòng)發(fā)送測(cè)試報(bào)告郵件功能的實(shí)現(xiàn)

    這篇文章主要介紹了python自動(dòng)發(fā)測(cè)試報(bào)告郵件功能的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • Python集合魔法解鎖數(shù)據(jù)去重技巧應(yīng)用實(shí)例

    Python集合魔法解鎖數(shù)據(jù)去重技巧應(yīng)用實(shí)例

    這篇文章主要為大家介紹了Python集合魔法解鎖數(shù)據(jù)去重技巧應(yīng)用實(shí)例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-11-11
  • PyCharm搭建一勞永逸的開(kāi)發(fā)環(huán)境

    PyCharm搭建一勞永逸的開(kāi)發(fā)環(huán)境

    這篇文章主要介紹了PyCharm搭建一勞永逸的開(kāi)發(fā)環(huán)境,本文通過(guò)圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-04-04
  • python學(xué)習(xí)print中format的用法示例

    python學(xué)習(xí)print中format的用法示例

    這篇文章主要為大家介紹了python學(xué)習(xí)print中format的用法示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-03-03
  • 詳解python中absl包的使用

    詳解python中absl包的使用

    "absl" 是 Google 開(kāi)發(fā)的一個(gè) Python 軟件包,用于提供一些常見(jiàn)的 Python 編程功能和工具,以改善代碼的可讀性、可維護(hù)性和性能,下面我們就來(lái)看看absl包的具體使用吧
    2023-11-11

最新評(píng)論