Google Fasiraadda API Jabsiga

Iyada oo qayb ka ah Google Cloud, Google waxay bixisaa Google Translation API oo leh qaab kharash ku saleysan adeegsi. Waxaa sidoo kale jira API aan sharciyeysneyn oo loo isticmaali karo fure la'aan , laakiin diidaya inuu shaqeeyo kadib codsiyo yar. Markaad isticmaaleyso howlaha turjumaadda websaydhka ee Google Chrome, waa la ogaan karaa in bogagga loo turjumi karo tayo aad u wanaagsan iyada oo aan wax xaddidan la ogaan karin.


Sida muuqata nmt-ka horumarsan ayaa mar horeba halkan lagu isticmaalay. Laakiin kee API ee Google Chrome u adeegsadaa gudaha inuu ku turjumo waxyaabaha ku jira isla markaana API-kan sidoo kale si toos ah wax looga qaban karo - xitaa dhinaca serverka? Si loo falanqeeyo taraafikada shabakadaha, aaladaha sida Wireshark ama Telerik Fiddler , oo waliba baari kara taraafikada taraafikada, ayaa lagula talinayaa. Laakiin Chrome xitaa waxay soo gudbisaa codsiyada ay u dirto tarjumaadda bogga lacag la'aan : Si fudud ayaa looga daawan karaa iyadoo la adeegsanayo Chrome DevTools:

Haddii aad tarjumaad fuliso, markaa la qabso POST codsi muhiim ah oo ah https://translate.googleapis.com adoo adeegsanaya "Nuqul> Nuqul sida cURL (bash)" oo aad ugu fuliso qalab sida Postman ah , tusaale ahaan, waxaad codsi u diri kartaa mar kale dhibaato la'aan:

Macnaha xuduudaha URL-ka sidoo kale waa mid inta badan cad.:

FureQiimaha tusaalahaMacnaha
xanaaq3Habka Fasiraadda (waxay saameyneysaa qaabka soo celinta)
macmiilte_libMacluumaadka macaamiisha (way kala duwan yihiin; iyada oo loo marayo is-dhexgalka shabakadda ee Google Translate qiimuhu waa "webapp"; wuxuu saameeyaa qaabka soo celinta iyo xaddidaadda heerka)
qaabhtmlQaabka xargaha (muhiim u ah tarjumaadda tags HTML)
v1.0Nambarka nooca Google Translate
fureAIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgwFuraha API (hoos eeg)
jaceylvTE_20200210_00Nooca borotokoolka
sldeLuuqada laga soo xigtay
tlenLuuqada Bartilmaameedka
spnmtQaabka ML
tc1lama yaqaan
sr1lama yaqaan
tk709408.812158Token (hoos eeg)
Dharka1lama yaqaan

Qaar ka mid ah madaxyada dalabka ayaa sidoo kale la dejiyaa - laakiin kuwan badiyaa waa la iska indhatiri karaa. Ka dib markii aad gacanta ka dooratay dhammaan madaxyada, oo ay ku jiraan kuwa ka socda wakiilka isticmaalaha , dhibaato habayn ayaa la ogaadaa marka la galayo jilayaal gaar ah (halkan markii la turjumayo " Hello World "):

Haddii aad dib u hawlgeliso wakiilka isticmaalaha (taasi guud ahaan waxyeello ma geysato), API waxay soo gudbineysaa xarfaha loo yaqaan 'UTF-8 encoded':

Hadda ma gaarnay yoolkeenna oo ma haynaa dhammaan macluumaadka aan ku isticmaalno API-gan meel ka baxsan Google Chrome? Si kastaba ha ahaatee, haddii aad beddesho xarigga la turjumayo (goobta xogta q ee codsiga POST) laga bilaabo, tusaale ahaan, "Hello World" una gudubto "Hello World ! ", waxaad heli doontaa farriin qalad ah.:

Hadda waxaan sameynaa turjumaad kale oo xariggan wax laga beddelay gudaha Google Chrome annagoo adeegsanayna shaqada turjumaadda mareegaha, waxaana ogaanay in, marka lagu daro parameter q , parameter tk uu sidoo kale isbeddelay (dhammaan xuduudaha kale way isku mid ahaayeen).:

Sida iska cad, waa astaan ​​ku tiirsan xariga, qaab dhismeedkiisana aan si sahal ah u muuqan. Markaad bilowdo tarjumaadda websaydhka, faylasha soo socda ayaa la raraa:

  • 1 Faylka CSS: translateelement.css
  • 4 sawiro: translate_24dp.png (2x), gen204 (2x)
  • 2 Faylasha JS: main_de.js , element_main.js

Labada fayl ee JavaScript waa la been abuuray oo waa la yaraeyay. Qalabka sida JS Nice iyo de4js ayaa hadda naga caawinaya inaan ka dhigno feylashaan kuwo la aqrin karo. Si toos ah looga takhaluso iyaga, waxaan kugula talineynaa Codsiga Kordhinta ee Chrome , kaas oo ku xidha faylasha fog fog ee gudaha duulimaadka:

Hadda waxaan ka saari karnaa koodhka ( CORS waa in marka hore lagu hawlgeliyaa server-ka maxalliga ah). Qaybta ku habboon ee koodhka ee soo saarista calaamaddu waxay umuuqataa in lagu qarinayo faylka element_main.js ee qaybtaan:

b7739bf50b2edcf636c43a8f8910def9

Halkan qoraalka ayaa lagu dhaqaajiyay iyadoo la kaashanayo xoogaa isbeddelo ah . Laakiin nasiib daro wali waxaan ka maqanahay hal xabbadood oo halxiraalaha ah: Marka lagu daro dooda a (oo ah qoraalka la turjumaayo), dood kale b ayaa loo gudbiyaa shaqada Bp () - nooc ka mid ah abuurka oo umuuqda inuu is badalayo waqti ka waqti taasna waxaa sidoo kale kujira qulqulaya Laakiin xaggee buu ka yimid? Haddii aan u boodno wicitaanka waxqabadka ee Bp () , waxaan helnaa qaybta koodhka soo socda:

b7739bf50b2edcf636c43a8f8910def9

Hawsha Hq horey ayaa loogu dhawaaqay sida soo socota:

b7739bf50b2edcf636c43a8f8910def9

Deobfuscater-ku wuxuu halkan kaga tagay qas; ka dib markii uu String.fromCharCode('...') ku beddelay xarfaha u dhigma, ka saaray a() duugoobay, oo isku xidhay wicitaanada shaqada [c(), c()] , natiijadu waa...:

b7739bf50b2edcf636c43a8f8910def9

Ama xitaa ka fudud:

b7739bf50b2edcf636c43a8f8910def9

Shaqada yq horey ayaa loo qeexay:

b7739bf50b2edcf636c43a8f8910def9

Abuurku wuxuu umuuqdaa inuu kujiro sheyga caalamiga ah google.translate._const._ctkk , kaas oo la heli karo waqtiga shaqada. Laakiin halkee la dhigay? Midda kale, horay loo raray faylka JS main_de.js, ugu yaraan sidoo kale waa la heli karaa bilowga. Waxaan ku darnaa waxyaabaha soo socda bilowga:

b7739bf50b2edcf636c43a8f8910def9

Konsol-ka waxaan dhab ahaan ku helnaa abuur hadda jira:

Tani waxay ka tagaysaa Google Chrome lafteeda, oo sida muuqata bixisa abuurka, oo ah ikhtiyaarka ugu dambeeya. Nasiib wanaagse, koodhkeeda asalka ah (Chromium, oo ay ku jiraan qaybta Translate) waa ilo furan sidaas darteedna si guud ayaa loo heli karaa. Waxaan jiidaneynaa keydka maxaliga ah waxaanan helnaa wicitaanka TranslateScript :: GetTranslateScriptURL oo kujira feylka translate_script.cc ee qaybaha / translate / core / browser folder:

b7739bf50b2edcf636c43a8f8910def9

Doorsoomaha leh URL-ka ayaa si adag loogu qeexay isla faylka:

b7739bf50b2edcf636c43a8f8910def9

Haddii aan hadda baarayno faylka element.js si aad u dhow (ka dib markii aan dib-u-turjumeyno mar kale), waxaan helnaa gelitaanka adag ee c._ctkk - sheyga google.translate ayaa sidoo kale loo dejiyaa si waafaqsan isla markaana raritaanka dhammaan hantida la xiriirta (taas oo aan horay u soo ogaannay) ayaa kicisay:

b7739bf50b2edcf636c43a8f8910def9

Hadda furaha halbeegga ayaa weli ah tixgelinta (oo leh qiimaha AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw). Taasi waxay umuuqataa furaha guud ee furaha API (oo waliba lagaheli karo natiijooyinka Google qaarkood). Waxaa lagu dejiyay Chromium faylka translate_url_util.cc oo ka kooban qaybaha / translate / core / folder browser:

b7739bf50b2edcf636c43a8f8910def9

Furaha waxaa laga soo saaray google_apis / google_api_keys.cc oo laga soo qaaday qiime dummy ah:

b7739bf50b2edcf636c43a8f8910def9

Si kastaba ha ahaatee, tijaabadu waxay muujinaysaa in wicitaanada API ay si fiican u shaqeeyaan iyada oo aan lahayn halbeeggan muhiimka ah. Tijaabada API-ga hadda waxay soo celisaa kood xaaladeed oo ah 200 wicitaanada guuleysta. Haddii xadka la gaaro, kood xaaladeed oo ah 411 ayaa lagu soo celiyaa farriinta " Codsiyada POST waxay u baahan yihiin cinwaan dherer-macluumaad ". Sidaa darteed, waxaa lagu talinayaa in sidoo kale lagu daro cinwaankan (kaas oo si toos ah loogu dejiyay Cinwaan Ku-meel-gaar ah oo ku jira Postman).

Qaabka soo noqoshada ee xargaha la tarjumay ayaa ah mid aan caadi ahayn marka ay jiraan weedho dhowr ah oo hal codsi ah. Jumladaha shaqsiga ah waxaa ku lifaaqan astaamaha i- / b-HTML:

Sidoo kale, Google Chrome kumuu dirin dhammaan HTML-ka API-ga, laakiin wuxuu keydiyaa qiyamka astaamaha sida href ee codsiga (oo taa beddelkeed wuxuu dejiyaa indices si markaas astaamaha mar dambe loogu qoondeeyo dhinaca macmiilka):

Haddii aad ka bedesho qiimaha macmiilka muhiimka ah POST te_lib (Google Chrome) webapp ( shabakada turjumaada Google ), waxaad heleysaa xarigii ugu dambeeyay ee la turjumay:

Dhibaatada jirta ayaa ah inaad aad ugu dhowdahay inaad kudhacdo xaddidaadda xaddidan marka loo eego te_lib (marka la barbardhigo: webapp tan waxaa lagu gaaraa 40,000 kadib, te_lib-na ma jirto xaddid xaddidan). Marka waxaan u baahanahay inaan si dhow u jaleecno sida Chrome natiijada u soo celinayo. Waxaan ka heli doonnaa halkan element_main.js:

b7739bf50b2edcf636c43a8f8910def9

Haddii aad u dirto dhammaan koodka HTML API-ga, waxay ka tagtaa sifooyinka jawaabta la turjumay. Sidaa darteed ma aha inaan ku dayno dhammaan hab-dhaqanka falanqaynta, laakiin kaliya ka soo saarno xadhigga ugu dambeeya, ee la turjumay jawaabta. Si tan loo sameeyo, waxaan dhiseynaa HTML tag parser yar oo meesha ka saaraysa <i> tagsyada ugu dambeeya oo ay ku jiraan waxa ku jira oo meesha ka saaraya <b>tamaha ugu dambeeya. Aqoontan ayaan hadda awoodnaa (ka dib markii aan ku rakibno ku-tiirsanaanta laxamiistaha waxay u baahan yihiin fzaninotto / faker vielhuber / stringhelper ) dhisida nooca server-ka ee tarjumaada API:

b7739bf50b2edcf636c43a8f8910def9

Waxyaabaha soo socdaa waa natiijooyinka tijaabada bilowga ah ee lagu qaaday shan nidaam oo kala duwan oo leh xayeysiisyo kala duwan iyo cinwaanno IP ah:

DabeecadCalaamadaha codsi kastaMuddadaQiyaasta qaladkaKharashka adoo adeegsanaya API-ga rasmiga ah
13.064.662~25003: 36: 17h0%237,78€
24.530.510~25011: 09: 13h0%446,46€
49.060.211~25020: 39: 10h0%892,90€
99.074.487~100061: 24: 37h0%1803,16€
99.072.896~100062: 22: 20h0%1803,13€
Σ284.802.766~ 50550159: 11: 37h0%5183.41

Xusuusin: Qoraalkan blog-ka oo ay ku jiraan qoraallada oo dhan waxaa loo qoray ujeeddooyin imtixaan oo keliya. Ha isticmaalin qabnay loo isticmaalo wax soo saar leh, halkii la rasmiga shaqeeyaan API Google Translation .

Dib u laabo