如何用python「優雅的」呼叫有道翻譯?

2022-06-25 15:00:12 字數 1783 閱讀 7342

其實在以前就盯上有道翻譯了的,但是由於時間問題一直沒有研究(我的騷操作還在後面,記得關注),本文主要講解如何用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...