丝袜人妻一区二区三区_少妇福利无码视频_亚洲理论片在线观看_一级毛片国产A级片

當(dāng)前位置:首頁 > 話題廣場 > 攻略專題 > 游戲問答

有道詞典怎么翻譯頁面?終于找到答案了如何用python“優(yōu)雅”的調(diào)用有道翻譯?

前言

其實(shí)從以前開始就關(guān)注翻譯的好,但是因?yàn)闀r(shí)間問題一直沒有研究(我的騷操作還在后面,所以要注意),所以這篇文章主要解釋了如何翻譯成python,解釋了和這個(gè)爬蟲翻譯的js“斗爭”過程!

當(dāng)然,這篇文章只用作交流學(xué)習(xí),適合自己制作小物件進(jìn)行娛樂,禁止用于商業(yè)用途!轉(zhuǎn)載微信公眾號(hào):bigsai杜兆浩:一直以來胡農(nóng)都很酷。

分析

對(duì)于一個(gè)網(wǎng)站,首先要做的是分析,分析其中的web規(guī)則

進(jìn)入

分析url

適當(dāng)?shù)姆g后,您會(huì)發(fā)現(xiàn)URL沒有更改。也就是說,通過Ajax異步交互。

點(diǎn)擊F12,很容易在XHR中找到這個(gè)交互的請(qǐng)求,點(diǎn)擊查看信息,你會(huì)發(fā)現(xiàn)一串參數(shù),其中有幾個(gè)還是加密了的,啥salt鹽啥的。先有個(gè)數(shù)。

在這里插入圖片描述

分析參數(shù)01

可以大膽猜測(cè):這個(gè)關(guān)鍵參數(shù)肯定在一塊。我們搜索salt,然后正常的點(diǎn)擊,格式化展開,在js中再次搜索salt。想找相關(guān)salt附近看看能不能找到斷點(diǎn)進(jìn)行調(diào)試!當(dāng)然,最終你可以找到11個(gè)相關(guān)內(nèi)容可以在每個(gè)附近進(jìn)行斷點(diǎn)調(diào)試。你這樣樂意找到相關(guān)位置關(guān)鍵加密字段和函數(shù)。




分析參數(shù)02

這次,咱們使用瀏覽器調(diào)用堆棧的功能,查看js執(zhí)行的堆棧進(jìn)行查找。直接點(diǎn)擊到對(duì)應(yīng)模塊打斷點(diǎn)即可進(jìn)行觀察。最終你會(huì)找到這個(gè)位置generateSaltSign(n)的這個(gè)函數(shù),主要加密函數(shù)都在里面執(zhí)行



加密分析

其實(shí)有道翻譯的加密是比較簡單的了,你一看,

  • 不知道naviga是啥是吧,我打印一看。就是瀏覽器頭進(jìn)行md5加密的嘛,可以固定不變的,也就是說這個(gè)bv(t)參數(shù)它可以是固定不變的。
  • 這個(gè)ts不就是13位當(dāng)前時(shí)間戳嗎!
  • 這個(gè)salt不就是時(shí)間戳后面加上100內(nèi)的隨機(jī)數(shù)嗎,隨便取一個(gè)就行。
  • 這個(gè)sign不就是"fanyideskweb" + 翻譯的字符串 + salt + "n%A-rKaT5fb[Gy?;N5@Tj"這么一串串?dāng)?shù)字然后md5加密的嘛!

通過后面的分析發(fā)現(xiàn)這些參數(shù)并沒有變化。所以這次生成的是唯一的,但是有一個(gè)前提是5000字以內(nèi),如果超出5000字他會(huì)截取前5000字,這點(diǎn)需要注意一下。

模擬請(qǐng)求

注意點(diǎn)

既然有了上面的規(guī)則,那么咱們就可以通過這部分的規(guī)則和抓包的信息整合用python模擬完成js的事件,發(fā)送請(qǐng)求。這里面有幾點(diǎn)需要注意的。

  • Fristly,你要搞定python中md5加密模塊,時(shí)間time模塊,能夠做出一些等價(jià)的一些轉(zhuǎn)化。剛好,py的hashlib和time模塊 can fullfill 你。這個(gè)問題解決。
  • In addition,post請(qǐng)求的主體data字典需要進(jìn)行url編碼才能當(dāng)成data發(fā)送請(qǐng)求發(fā)過去。
  • last but not least,解決完加密最重要的就是header,大家一定不要麻批大意。這個(gè)content—length,經(jīng)過我的經(jīng)驗(yàn)告訴我它如果填錯(cuò)了就會(huì)報(bào)錯(cuò),并且不填經(jīng)過抓包分析系統(tǒng)會(huì)自動(dòng)生成。所以不要計(jì)算主體長度的,這個(gè)參數(shù)一定要省略。不放cookie會(huì)報(bào)錯(cuò),放了cookie經(jīng)過測(cè)試你會(huì)發(fā)現(xiàn)有些可以該甚至可有可無,有些必須遵從其樣式。而cookie中必須遵從的就是OUTFOX_SEARCH_USER_ID=-1053218418@117.136.67.240即數(shù)字+@+ip形式地址??赡苁菫榱藱z驗(yàn)而用,這個(gè)可以直接進(jìn)行模擬。

在這里插入圖片描述

請(qǐng)求代碼

返回結(jié)果是一串json,直接拿即可!

import?requests import?hashlib import?time import?urllib.parse #?創(chuàng)建md5對(duì)象 def?nmd5(str): ????m?=?() ????#?Tips ????#?此處必須encode ????#?若寫法為m.update(str)??報(bào)錯(cuò)為:?Unicode-objects?must?be?encoded?before?hashing ????#?因?yàn)閜ython3里默認(rèn)的str是unicode ????#?或者?b?=?bytes(str,?encoding='utf-8'),作用相同,都是encode為bytes ????b?=?(encoding='utf-8') ????m.update(b) ????str_md5?=?m.hexdigest() ????return??str_md5 def?formdata(transtr): ????#?待加密信息 ????headerstr?=?'5.0?(Windows?NT?10.0;?WOW64)?AppleWebKi?(KHTML,?like?Gecko)?Chrome?Safari; ????#print(round()*1000)) ????bv=nmd5(headerstr) ????ts=str(round()*1000)) ????salt=ts+'90' ????strexample='fanyideskweb'+transtr+salt+'n%A-rKaT5fb[Gy?;N5@Tj' ????sign=nmd5(strexample) ????#print(sign) ????i=len(transtr) ????#print(i) ????#?print('MD5加密前為?:'?+?headerstr) ????#?print('MD5加密后為?:'?+?bv) ????dict={'i':transtr,'from':'AUTO','TO':'AUTO','smartresult':?'dict', ??????????'client':'fanyideskweb', ??????????'salt':salt, ??????????'sign':sign, ??????????'ts':ts, ??????????'bv':bv, ??????????'doctype':'json', ??????????'version':'2.1', ??????????'keyfrom':';, ??????????'action':'FY_BY_REALTlME' ????} ????return?dict url=';smartresult=rule' header={'User-Agent':'Mozilla?(Windows?NT?10.0;?WOW64)?AppleWebKi?(KHTML,?like?Gecko)?Chrome?Safari;, ?'Referer':';, ?'Origin':?';, ?'Content-Type':'application/x-www-form-urlencoded;?charset=UTF-8', ?'X-Requested-With':'XMLHttpRequest', ?'Accept':'application/json,?text/javascript,?*/*;?q=0.01', ?'Accept-Encoding':'gzip,?deflate', ?'Accept-Language':'zh-CN,zh;q=0.9', ?'Connection':?'keep-alive', ?'Host':?';, ?'cookie':'_ntes_nnid=937f1c788f1e087cf91d616319dc536a,84;?OUTFOX_SEARCH_USER_ID_NCOO=;?OUTFOX_SEARCH_USER_ID=-10218418@11.136.67.24;?JSESSIONID=;?___rl__test__cookies=1' ?} input=input("請(qǐng)輸入翻譯內(nèi)容:") dict=formdata(input) dict=urllib.(dict) dict=str(dict) #dict=urllib.(dict).encode('utf-8') req=reque(url,data=dict,headers=header) val=req.json() print(val['translateResult'][0][0]['tgt'])

執(zhí)行結(jié)果


結(jié)語

就這樣,我們從0開始優(yōu)雅的揭開有道翻譯的面紗!你可以利用這個(gè)做一些有趣的事情(待續(xù)------)

當(dāng)然,這個(gè)可能難度不大,對(duì)于老鳥老說很簡單(勿噴),但是對(duì)于新手來說特別適合練手,如果感覺有問題或者不理解的可以通過公眾號(hào)交流!當(dāng)然,這個(gè)代碼不知道能保存多久會(huì)失效。所以請(qǐng)抓緊收藏嘗試!如果感覺可以還請(qǐng)點(diǎn)贊轉(zhuǎn)發(fā)!當(dāng)然,這個(gè)只是筆者腦洞的一個(gè)開端,好玩的還在后面!敬請(qǐng)期待!

1.《有道詞典怎么翻譯頁面?終于找到答案了如何用python“優(yōu)雅”的調(diào)用有道翻譯?》援引自互聯(lián)網(wǎng),旨在傳遞更多網(wǎng)絡(luò)信息知識(shí),僅代表作者本人觀點(diǎn),與本網(wǎng)站無關(guān),侵刪請(qǐng)聯(lián)系頁腳下方聯(lián)系方式。

2.《有道詞典怎么翻譯頁面?終于找到答案了如何用python“優(yōu)雅”的調(diào)用有道翻譯?》僅供讀者參考,本網(wǎng)站未對(duì)該內(nèi)容進(jìn)行證實(shí),對(duì)其原創(chuàng)性、真實(shí)性、完整性、及時(shí)性不作任何保證。

3.文章轉(zhuǎn)載時(shí)請(qǐng)保留本站內(nèi)容來源地址,http://f99ss.com/gl/3072709.html

上一篇

wps花式字體怎么弄?總結(jié)很全面速看!一招教你關(guān)閉360都解決不了WPS廣告彈窗

下一篇

在微信上怎么發(fā)文件看這里!微信上怎么發(fā)文件

有道詞典怎么翻譯頁面?總結(jié)很全面速看!少數(shù)民族語言聽不懂,不會(huì)說?網(wǎng)易有道上線民族語言翻譯功能

有道詞典怎么翻譯頁面?總結(jié)很全面速看!少數(shù)民族語言聽不懂,不會(huì)說?網(wǎng)易有道上線民族語言翻譯功能

有道詞典怎么翻譯頁面相關(guān)介紹,眾所周知,我國地域廣大,共有56個(gè)民族,許多少數(shù)民族不僅有獨(dú)特的文化,語言也與普通話差異很大,不使用普通話就很難實(shí)現(xiàn)溝通。 而針對(duì)這種情況,網(wǎng)易有道上線了民族語言翻譯功能。 一直以來,網(wǎng)易有道都是不錯(cuò)...