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 sidoo kale si weyn ayaa u muuqda:

FureQiimaha tusaalahaMacnaha
xanaaq3Habka Fasiraadda (waxay saameyneysaa qaabka soo celinta)
macmiilte_libMacluumaadka macmiilka (wuu kala duwan yahay, qiimaha waa "webapp" iyadoo la adeegsanayo bogga websaydhka ah ee Google Translate; wuxuu saameyn ku leeyahay qaabka soo noqoshada iyo xaddidaadda sicirka)
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':

Miyaynu horeyba u joognaa oo ma haynaa dhammaan macluumaadka aan ku adeegsan karno API-kan ka baxsan Google Chrome? Haddii aad u beddesho xarigga si loo tarjumo (xogta goobta q ee codsiyada POST) laga bilaabo, tusaale ahaan, "Waad salaaman tahay adduunka" illaa "Hello adduunka ! “, Waxaan helnay fariin qalad ah:

Waxaan hadda ku turjumeynaa midkan wax laga beddelay Google Chrome iyadoo la adeegsanayo tarjumaadda websaydhka oo waxaan ogaanay, marka lagu daro cabbirka q , tk dhimaya ayaa sidoo kale is beddelay (dhammaan xuduudaha kale waa isku mid):

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

Halkan Deobfuscater wuxuu uga tagay qashin xoogaa ah; Ka dib markii aan ku badalnay String.fromCharCode ('...') oo leh xarfaha astaamaha u gaarka ah, ka saar wixii duugoobay a () oo isku wada duub wicitaanka waxqabadka [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 noqotee, tijaabadu waxay muujineysaa in wicitaanada API ay isla shaqeynayaan iyada oo aan la helin halbeegga furaha. Haddii aad tijaabiso API, waxaad dib u heli doontaa lambarka xaaladda 200 haddii aad guuleysato. Haddii aad markaa xad u gudubto, waxaad dib u heli doontaa lambarka aqoonsiga ee 411 oo leh farriinta " Codsiyada POST waxay u baahan yihiin madax-dherer madax " Sidaa darteed waxaa lagugula talinayaa inaad ku darto cinwaankan (oo si otomaatig ah loogu qoro cinwaan ku meel gaar ah 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