python爬蟲實例——基於python實現有道雲翻譯接口

# 分析包
# 分析post請求中參數
# 使用python模擬lts、sign、salt參數運算
# 執行結果
> > 1、按F12對網頁進行分析,填寫內容後自動翻譯的功能一般是通過ajax實現的,所以可以有目的的對xhr包進行篩選,如果不知道這個點也可以一個個包進行查看分析,找包裏面有需要翻譯的內容和翻譯結果

 

 

 

 

> > 2、分析發送請求中參數的參數,發送兩次請求也就是翻譯兩次,對兩次的包進行分析,可以發現每次發送的請求中salt、sign、lts的數據都不同,所以該網站可能是通過js對這些數據進行了處理

> > 3、尋找到這些參數運算的過程。點擊Initiator(表示連接由誰發起),找到另一個包,在該包中分析salt、lts、sign運算過程

 

 

> 這裡需要一些js知識,但一般學過其他語言也可以很清楚發現 lts是時間戳
> salt是在==時間戳後面==隨機加上一個0-9的數字
> sign是對「fanyideskweb」+ e + i +”Y2FYu%TNSbMCxc3″進行==hash==運算,然後回看發送請求中sign的參數,發現他是16進制,所以最終結果我們也要以16進制展現
> e是我們輸入的需要翻譯的內容,i和salt相同 看不懂代碼的話可以複製代碼到console中看運算結果,例:

 

 

==e==可以通過設置斷點來判斷,斷點設置好後,再翻譯一次,然後把鼠標箭頭放在e上,可以很明顯的發現e的取值與我們輸入的內容相同

 

 

到現在,我們把發送post請求需要的所有參數找到了,然後就是用python模擬這些參數的運算。

> > 4、模擬lts、salt、sign參數運算

模擬lts,lts是時間戳
使用time模塊就行了
“`python
lts = int(round(time.time()*1000))

“`
模擬salt,salt是時間戳後面加上一個0-9的隨機數
“`python
salt = str(lts) + str(random.randint(0,9))
“`
模擬sign,需要使用到hashlib庫(自帶的庫不用安裝)

“`python
#創建hash對象
md5 = hashlib.md5()
#向hash對象中加入需要hash運算的字符串
n = ‘fanyideskweb’ + self.kw + salt + ‘Y2FYu%TNSbMCxc3t2u^XT’
md5.update(n.encode())
#轉換成16進制
sign = md5.hexdigest()
“`
5、執行結果