百度翻譯接口測試(3)-最終篇_第1頁
百度翻譯接口測試(3)-最終篇_第2頁
百度翻譯接口測試(3)-最終篇_第3頁
百度翻譯接口測試(3)-最終篇_第4頁
百度翻譯接口測試(3)-最終篇_第5頁
已閱讀5頁,還剩1頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

百度翻譯接?測試(3)-最終篇經(jīng)過了的博客啟發(fā),我們?nèi)绻胍獙崿F(xiàn)百度翻譯,還需要搞清楚sign的值是從何?來的,搬好?板凳,開始上教程!第?步翻譯結(jié)果出來后我們打開開發(fā)者?具(或者按F12),然后按“Ctrl+Shift+F”進?全局搜索,搜索關(guān)鍵字“sign”,搜索出來后點擊打開點擊下?的標志可以格式化代碼第?步我們現(xiàn)在還不知道這個sign:y(a)是什么意思,我們就打上斷點調(diào)試?下,瀏覽器調(diào)試代碼?法請??百度。刷新頁?重新進?翻譯,調(diào)試到這?代碼之后,我們把?標放在這?,可以看到a的值就是我們輸?的要查詢的單詞,sign的值很可能就是由函數(shù)y產(chǎn)?的,那么y是什么呢?我們把?標放到y(tǒng)上?,就可以看到y(tǒng)的函數(shù)主體部分,?標點擊就可以進去這個函數(shù)主體函數(shù)主體部分的代碼如下:functione(r){varo=r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);if(null===o){vart=r.length;t>30&&(r=""+r.substr(0,10)+r.substr(Math.floor(t/2)-5,10)+r.substr(-10,10))}else{for(vare=r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/),C=0,h=e.length,f=[];h>C;C++)""!==e[C]&&f.push.apply(f,a(e[C].split(""))),C!==h-1&&f.push(o[C]);varg=f.length;g>30&&(r=f.slice(0,10).join("")+f.slice(Math.floor(g/2)-5,Math.floor(g/2)+5).join("")+f.slice(-10).join(""))}varu=void0,l=""+String.fromCharCode(103)+String.fromCharCode(116)+String.fromCharCode(107);u=null!==i?i:(i=window[l]||"")||"";for(vard=u.split("."),m=Number(d[0])||0,s=Number(d[1])||0,S=[],c=0,v=0;v<r.length;v++){varA=r.charCodeAt(v);128>A?S[c++]=A:(2048>A?S[c++]=A>>6|192:(55296===(64512&A)&&v+1<r.length&&56320===(64512&r.charCodeAt(v+1))?(A=6S[c++]=A>>18|240,S[c++]=A>>12&63|128):S[c++]=A>>12|224,S[c++]=A>>6&63|128),S[c++]=63&A|128)}for(varp=m,F=""+String.fromCharCode(43)+String.fromCharCode(45)+String.fromCharCode(97)+(""+String.fromCharCode(94)+String.fromCharCp+=S[b],p=n(p,F);returnp=n(p,D),p^=s,0>p&&(p=(2147483647&p)+2147483648),p%=1e6,p.toString()+"."+(p^m)}第三步我們把這份js代碼另存為fun_e(r).js,然后利?Python的PyExecJS庫調(diào)試運?下這段js代碼(需要提前裝好node.js環(huán)境)importexecjs#print(execjs.get().name)#輸出所?環(huán)境名稱withopen("pytest\翻譯接?\\fun_e(r).js","r",encoding='utf-8')asf:ctx=pile(f.read())print(ctx.call("e","我是?帥哥"))但是運?后提?變量i沒有被定義我們返回到瀏覽器,找到i,同樣的打上斷點,這?我給變量u也打上斷點了,?便看變量u值的變化,跟上??樣,調(diào)試后可以看到i的值為"320305.131321201"這時,我們還不能確定i的值是不是就是"320305.131321201",我們換個詞重新進?翻譯調(diào)試,經(jīng)過多次試驗,i的值固定不變,我們可以確定i的值就是"320305.131321201"(字符串類型)第四步我們在之前建好的js?件中定義?個i變量并賦值重新調(diào)試運??提?n沒有被定義我們故技重施,返回瀏覽器搜索到n,打斷點調(diào)試,可以找到n的函數(shù)主體我們把這段代碼復制下來放到js?件??的前?,重新運?代碼得到sign值?。ú淮_定是不是sign值的話就在瀏覽器中搜索相同的詞,看看提交表單的sign值是不是?樣,換詞多次試驗可以確定這個就是sign值)完整的js代碼如下functionn(r,o){for(vart=0;t<o.length-2;t+=3){vara=o.charAt(t+2);a=a>="a"?a.charCodeAt(0)-87:Number(a),a="+"===o.charAt(t+1)?r>>>a:r<<a,r="+"===o.charAt(t)?r+a&4294967295:r^a}returnr}functione(r){varo=r.match(/[\uD800-\uDBFF][\uDC00-\uDFFF]/g);if(null===o){vart=r.length;t>30&&(r=""+r.substr(0,10)+r.substr(Math.floor(t/2)-5,10)+r.substr(-10,10))}else{for(vare=r.split(/[\uD800-\uDBFF][\uDC00-\uDFFF]/),C=0,h=e.length,f=[];h>C;C++)""!==e[C]&&f.push.apply(f,a(e[C].split(""))),C!==h-1&&f.push(o[C]);varg=f.length;g>30&&(r=f.slice(0,10).join("")+f.slice(Math.floor(g/2)-5,Math.floor(g/2)+5).join("")+f.slice(-10).join(""))}vari="320305.131321201";varu=void0,l=""+String.fromCharCode(103)+String.fromCharCode(116)+String.fromCharCode(107);u=null!==i?i:(i=window[l]||"")||"";for(vard=u.split("."),m=Number(d[0])||0,s=Number(d[1])||0,S=[],c=0,v=0;v<r.length;v++){varA=r.charCodeAt(v);128>A?S[c++]=A:(2048>A?S[c++]=A>>6|192:(55296===(64512&A)&&v+1<r.length&&56320===(64512&r.charCodeAt(v+1))?(A=6S[c++]=A>>18|240,S[c++]=A>>12&63|128):S[c++]=A>>12|224,S[c++]=A>>6&63|128),S[c++]=63&A|128)}for(varp=m,F=""+String.fromCharCode(43)+String.fromCharCode(45)+String.fromCharCode(97)+(""+String.fromCharCode(94)+String.fromCharCp+=S[b],p=n(p,F);returnp=n(p,D),p^=s,0>p&&(p=(2147483647&p)+2147483648),p%=1e6,p.toString()+"."+(p^m)}第五步既然如何獲取sign值了,那么百度翻譯也就搞定啦,奉上完整代碼#破解sign值importrequestsimportreimportexecjsimportjsonheaders={"User-Agent":"Mozilla/5.0(WindowsNT6.1;WOW64)AppleWebKit/537.36(KHTML,likeGecko)Chrome/69.0.3497.100Safari/537.36",'Cookie':'PSTM=1575539987;BAIDUID=A80872D93185A688C8AC8CF159A4EF54:FG=1;BIDUPSID=3D8B9E5934B26CCEF003426B6773A431;BDORZ=B490B5}form_data={#'from':'zh',#'from':'zh',#'to':'en',#'query':word,'transtype':'realtime','simple_means_flag':'3',#'sign':None,'token':'42e08df4cfc832413f5c96516ed21cc3'}#獲取sign的值defgetSign(word):withopen('pytest\翻譯接?\\fun_e(r).js','r',encoding='utf-8')asf:sign_js=pile(f.read())returnsign_js.call('e',word)#獲取結(jié)果的json數(shù)據(jù)defgetResult(url):try:r=requests.post(url,data=form_data,headers=headers,timeout=30)r.raise_for_statusreturnr.textexcept:return''#主函數(shù)print("本程序同時?持漢譯英和英譯漢")print("漢譯英請輸?1,英譯漢請輸?其他?0數(shù)字")print("若想終?程序,請輸?0")while(True):a=eval(input("請輸?數(shù)字:"))ifa==1:f='zh't='en'elifa==0:breakelse:f='en't='zh'url_post="/v2transapi"word=input("請輸?要查詢的字符:")sign=getSign(word)form_data['from']=fform_data['t

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論