網址:有道翻譯 python
開發工具:pycharmweb
開發環境:python3.7, Windows10編程
使用工具包:requests,random,hashlibjson
先區分數據的加載方式 請求數據時網址是沒有變化的 經過抓包獲取到動態數據markdown
找到對應的數據接口 獲取到網頁的請求接口 請求方法是post請求cookie
post須要提交的數據網絡
能夠明顯看出salt是時間戳 多個請求的數據進行比較 只有sign值是在不斷變化的加密數據 找到數據的加密規則 找到加密文件dom
打上斷點找到對應加密數據的位置 調試代碼進入斷點ide
sign值是由r.sign得來的 找到r的生成方式工具
找到最終的加密數據的位置
ts爲時間戳
salt爲時間戳加一個隨機數 sign爲MD5的加密方法生成的數據 sign是由時間戳的改變而改變的
明確加密的方式剩下的就是書寫代碼了
import time
import random
import hashlib
def main():
"""主程序"""
url = "http://fanyi.youdao.com/translate_o?smartresult=dict&smartresult=rule"
headers = {
'X-Requested-With': 'XMLHttpRequest',
'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.75 Safari/537.36',
'Origin': 'http://fanyi.youdao.com',
'Referer': 'http://fanyi.youdao.com/',
'Cookie': 'OUTFOX_SEARCH_USER_ID=-1808168645@10.108.160.208; JSESSIONID=aaaRyVJv8oEwg7dPaWrux; OUTFOX_SEARCH_USER_ID_NCOO=704285648.1294403; ___rl__test__cookies=1602406917270'
}
i = input("請輸入你要的數據:")
"""獲取參數"""
lts = str(int(time.time()*100))
salt = lts + str(random.randint(0, 9))
content = "fanyideskweb" + i + salt + "]BjuETDhU)zqSxf-=B#7m"
sign = hashlib.md5(content.encode("utf-8")).hexdigest()
data = {
'action': 'FY_BY_CLICKBUTTION',
'bv': '9caf244986fe6d1de38207408302e500',
'client': 'fanyideskweb',
'doctype': 'json',
'from': 'AUTO',
'i': i,
'keyfrom': 'fanyi.web',
'lts': lts,
'salt': salt,
'sign': sign,
'smartresult': 'dict',
'to': 'AUTO',
'version': '2.1'
}
response = requests.post(url=url,headers=headers,data=data)
print(response.json()["translateResult"][0][0]["tgt"])
if __name__ == '__main__':
main()
複製代碼
我是**白又白i**,一名喜歡分享知識的程序媛❤️
若是沒有接觸過編程這塊的朋友看到這篇博客,發現不會的或者想要學習Python的,能夠直接留言或者私我【很是感謝你的點贊、收藏、關注、評論,一鍵四連支持】