其實在以前就盯上有道翻譯了
的,但是由於時間問題一直沒有研究(我的騷操作還在後面,記得關注),本文主要講解如何用python呼叫有道翻譯,講解這個爬蟲與有道翻譯的js「鬥爭
」的過程!
在這裡插入描述
對於乙個**,首先肯定要的就是分析,分析其中的網頁規則
分析url
在這裡插入描述
分析引數01
在這裡插入描述
在這裡插入描述
在這裡插入描述
分析引數02
這次,咱們使用瀏覽器呼叫堆疊的功能,檢視js執行的堆疊進行查詢。直接點選到對應模組打斷點即可進行觀察。最終你會找到這個位置generatesaltsign(n)
的這個函式,主要加密函式都在裡面執行
在這裡插入描述
在這裡插入描述
加密分析
其實有道翻譯的加密是比較簡單的了,你一看,
這個ts
不就是13位當前時間戳嗎!
這個salt
不就是時間戳後面加上100內的隨機數嗎,隨便取乙個就行。
這個sign
不就是"fanyideskweb" + 翻譯的字串 + salt + "n%a-rkat5fb[gy?;n5@tj"
這麼一串串數字然後md5加密的嘛!
通過後面的分析發現這些引數並沒有變化。所以這次生成的是唯一的,但是有乙個前提是5000字以內,如果超出5000字他會擷取前5000字,這點需要注意一下。
在這裡插入描述
注意點既然有了上面的規則,那麼咱們就可以通過這部分的規則和抓包的資訊整合用python模擬完成js的事件,傳送請求。這裡面有幾點需要注意的。
在這裡插入描述
請求**
返回結果是一串json,直接拿即可!
執行結果
在這裡插入描述
就這樣,我們從0開始優雅
的揭開有道翻譯的面紗!你可以利用這個做一些有趣的事情(待續
------)
如何用python優雅的實現二維列表平鋪
先來看最c的方法 alist 1,2,3 4,5,6 7,8,9 res for i in alist for j in i res 1 2,3 4,5 6,7 8,9 這個操作可以用列表推導式來生成,如下 alist 1,2,3 4,5,6 7,8,9 j for i in alist for j...
如何用反射呼叫scala方法
scala編譯出來的class可以用反射區呼叫。比如scala 如下 private def updateweightsandgaussians mean bdv double sigma breezematrix double weight double,sumweights double dou...
混合程式設計 如何用python11呼叫C
摘要 在實際開發過程中,免不了涉及到混合程式設計,比如,對於python這種指令碼語言,效能還是有限的,在一些對效能要求高的情景下面,還是需要使用c c 來完成。那怎樣做呢?我們能使用pybind11作為橋梁,pybind11的優點是對c 11支援很好,api比較簡單,現在我們就簡單記下pybind...