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.:
| Fure | Qiimaha tusaalaha | Macnaha |
| xanaaq | 3 | Habka Fasiraadda (waxay saameyneysaa qaabka soo celinta) |
| macmiil | te_lib | Macluumaadka 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) |
| qaab | html | Qaabka xargaha (muhiim u ah tarjumaadda tags HTML) |
| v | 1.0 | Nambarka nooca Google Translate |
| fure | AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw | Furaha API (hoos eeg) |
| jaceyl | vTE_20200210_00 | Nooca borotokoolka |
| sl | de | Luuqada laga soo xigtay |
| tl | en | Luuqada Bartilmaameedka |
| sp | nmt | Qaabka ML |
| tc | 1 | lama yaqaan |
| sr | 1 | lama yaqaan |
| tk | 709408.812158 | Token (hoos eeg) |
| Dharka | 1 | lama 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:
| Dabeecad | Calaamadaha codsi kasta | Muddada | Qiyaasta qaladka | Kharashka adoo adeegsanaya API-ga rasmiga ah |
| 13.064.662 | ~250 | 03: 36: 17h | 0% | 237,78€ |
| 24.530.510 | ~250 | 11: 09: 13h | 0% | 446,46€ |
| 49.060.211 | ~250 | 20: 39: 10h | 0% | 892,90€ |
| 99.074.487 | ~1000 | 61: 24: 37h | 0% | 1803,16€ |
| 99.072.896 | ~1000 | 62: 22: 20h | 0% | 1803,13€ |
| Σ284.802.766 | ~ 50550 | 159: 11: 37h | 0% | 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 .