Ma ke ʻano he ʻāpana o kāna Google Cloud, hāʻawi ʻo Google i ka API Unuhi Google me kahi ʻano kumu kūʻai e pili ana i ka hoʻohana. Aia kekahi API undocumented i hiki ke hoʻohana ʻia me ke kī ʻole , akā hōʻole ʻole e hana ma hope o kekahi mau noi. Ke hoʻohana nei i ka hana unuhi pūnaewele o Google Chrome, ʻike ʻia hiki ke unuhi ʻia nā ʻaoʻao i ka maikaʻi maikaʻi loa me ka ʻole o ka palena palena ʻole.
ʻIke ʻia ua hoʻohana ʻia ke kime nmt holomua ma aneʻi. Akā ʻo wai ka API a Google Chrome e hoʻohana ai i loko e unuhi i ka ʻike a hiki i kēia API ke kuhikuhi pololei ʻia - ʻoiai ma ka ʻaoʻao kikowaena? No ke kālailai ʻana i nā kalepa pūnaewele, ʻo nā mea pono e like me Wireshark a i ʻole Telerik Fiddler , kahi e hiki ai ke kālailai i nā kaʻa i hoʻopā ʻia ʻia. Akā hāʻawi ʻo Chrome i nā noi i hoʻouna ʻia no ka unuhi ʻaoʻao me ka uku ʻole: Hiki ke ʻike maʻalahi ʻia iā lākou me ka hoʻohana ʻana iā Chrome DevTools:
Inā hoʻokō ʻoe i kahi unuhi, a laila hopu i ka noi POST koʻikoʻi e https://translate.googleapis.com ma o "Copy> Copy as cURL (bash)" a hoʻokō ʻia ia i kahi mea hana e like me Postman , no ka laʻana, hiki iā ʻoe ke hoʻouna hou i ka noi me ka ʻole o nā pilikia.:
ʻIke ʻia ka manaʻo o nā palena URL:
Kī | Waiwai laʻana | Manaʻo |
makahiki | 3 | Anotation mode (e hoʻopili i ka hoʻihoʻi hoʻi) |
mea kūʻai aku | te_lib | Ka ʻike o ka mea kūʻai aku (ʻokoʻa, ʻo "webapp" ka waiwai ma o ka pūnaewele unuhi pūnaewele Google; he hopena ma ka hōʻano hoʻihoʻi a me ka palena palena palena) |
hōʻano | html | Hōʻike string (nui no ka unuhi ʻana i nā tags HTML) |
v | 1.0 | Helu mana Google Translate |
kī | AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw | Kī API (ʻike ma lalo) |
paukū | vTE_20200210_00 | Mana hana mana |
sl | de | ʻLelo kumu |
tl | en | ʻ Targetlelo kūkā |
sp | nmt | Hoʻohālike ML |
tc | 1 | ʻike ʻole ʻia |
sr | 1 | ʻike ʻole ʻia |
tk | 709408.812158 | Kaha (ʻike ma lalo) |
Makahiki | 1 | ʻike ʻole ʻia |
Hoʻonohonoho ʻia kekahi mau poʻo pane - akā hiki i kēia ke nānā nui ʻia. Ma hope o ke koho lima ʻana i nā poʻo āpau, me nā mea mai ka ʻohana mea hoʻohana , ʻike ʻia kahi pilikia encode ke komo ʻana i nā huapalapala kūikawā (eia ke unuhi nei iā " Hello World "):
Inā hoʻoulu hou ʻoe i ka mea hoʻohana (ʻaʻole hana ʻino ia), hāʻawi ka API i nā huapalapala encode UTF-8:
Aia mākou ma laila a loaʻa iā mākou nā ʻike āpau e hoʻohana ai i kēia API ma waho o Google Chrome? Inā ʻoe e hoʻololi i ke aho e unuhi ʻia (kahua kahua ʻikepili q o ka noi POST) mai, no ka laʻana, "Aloha honua" i ka "Aloha honua ! ", Loaʻa iā mākou kahi leka uila:
Ua unuhi mākou i kēia mea i hoʻololi hou ʻia i loko o Google Chrome me ka hoʻohana ʻana i ka hana unuhi pūnaewele a ʻike ʻia, me ka hoʻohui ʻana i ka parameter q , ua loli pū ʻia ka parameter tk (ua like nā mea ʻē aʻe āpau):
ʻIke, he hōʻailona ia e pili i ke aho, ʻaʻole ʻike maʻalahi ʻia ke ʻano o ia. Ke hoʻomaka ʻoe i ka unuhi pūnaewele, hoʻouka nā faila aʻe:
- 1 faila CSS: translateelement.css
- 4 kiʻi paʻi: translate_24dp.png (2x), gen204 (2x)
- Nā faila 2 JS: main_de.js , element_main.js
Hoʻopiʻi ʻia a hoʻoliʻiliʻi ʻia nā faila JavaScript ʻelua. Ke kōkua nei nā mea hana e like me JS Nice a me de4js iā mākou e heluhelu hou i kēia mau faila. I mea e debug ai iā lākou ke ola, paipai mākou i ka Chrome Extension Requ Request, e tunnels i nā faila mamao ma kahi o ka lele:
I kēia manawa hiki iā mākou ke debug i ke code ( CORS pono e hoʻoulu mua ʻia ma ka kikowaena kikowaena). Ua hūnā ʻia ka ʻāpana code pili no ka hana ʻana i ka hōʻailona ma ka faila element_main.js i kēia ʻāpana:
b7739bf50b2edcf636c43a8f8910def9
Eia ua holoi ʻia ka huaʻōlelo me ke kōkua o kekahi mau hoʻololi iki . Akā eia naʻe ke nalowale nei mākou i hoʻokahi ʻāpana o ka puzzle: Ma waho aʻe o ka paio a (ʻo ia ka huaʻōlelo e unuhi ʻia), ua hāʻawi ʻia kahi paio b i ka hana Bp () kahe i ka hashing. Akā no hea ia? Inā lele mākou i ke kāhea hana o Bp () , ʻike mākou i ka ʻāpana code aʻe:
b7739bf50b2edcf636c43a8f8910def9
Ua hoʻolaha ʻia ka hana Hq ma mua e like me kēia:
b7739bf50b2edcf636c43a8f8910def9
Eia ka Deobfuscater i waiho i kahi ʻōpala; Ma hope o ko mākou pani ʻana iā String.fromCharCode ('...') me nā kaula o kēlā me kēia ʻano, e hemo i ka obsolete a () a ʻāpana pū i nā hana i hea ʻia [c (), c ()] , ʻo ka hopena:
b7739bf50b2edcf636c43a8f8910def9
A i ʻole maʻalahi hoʻi:
b7739bf50b2edcf636c43a8f8910def9
Ua wehewehe mua ʻia ka hana yq ma ke ʻano:
b7739bf50b2edcf636c43a8f8910def9
Aia paha ka hua i loko o ka mea honua google.translate._const._ctkk , i loaʻa i ka manawa holo. Akā ma hea i hoʻonohonoho ʻia ai? I kahi ʻē aʻe, i hoʻouka ʻia ma mua file JS main_de.js, ma ka liʻiliʻi hiki ke loaʻa pū i ka hoʻomaka. Pākuʻi mākou i ka mea aʻe i ka hoʻomaka:
b7739bf50b2edcf636c43a8f8910def9
I ka console e loaʻa maoli iā mākou ka hua o kēia manawa:
Haʻalele kēia iā Google Chrome iā ia iho, nāna e hāʻawi i ka hua ma ke ʻano he koho hope loa. ʻO ka mea pōmaikaʻi, ʻo kāna code kumu (Chromium, me ka ʻāpana unuhi) he hāmama a no laila ākea e loaʻa. Huki mākou i ka waihona ma kahi a ʻike i ke kāhea i ka hana TranslateScript :: GetTranslateScriptURL i ka translate_script.cc faila i nā ʻāpana / unuhi / kumu / polokalamu kele pūnaewele:
b7739bf50b2edcf636c43a8f8910def9
Hoʻohālikelike ka loli me ka URL i ka faila like:
b7739bf50b2edcf636c43a8f8910def9
Inā mākou e nānā i kēia manawa i ka faila element.js (ma hope o ka deobfuscating hou), ʻike mākou i ke komo paʻakikī c._ctkk - hoʻonohonoho pū ʻia ka mea google.translate a ʻo ka hoʻouka ʻana i nā waiwai kūpono āpau (a mākou i ʻike ai ma mua) ua hoʻomaka ʻia.:
b7739bf50b2edcf636c43a8f8910def9
I kēia manawa ke hoʻomau nei ke kī kī no ka noʻonoʻo (me ka waiwai AIzaSyBOti4mM-6x9WDnZIjIeyEU21OpBXqWBgw). Me he mea lā he kī API hoʻohiwahiwa generic (a hiki ke loaʻa pū i kekahi o nā hopena Google ). Hoʻokomo ʻia ia i loko o Chromium i ka faile translate_url_util.cc i nā waihona e unuhi / unuhi / kāna / ʻike / polokalamu kele pūnaewele:
b7739bf50b2edcf636c43a8f8910def9
Hoʻokumu ʻia ke kī ma google_apis / google_api_keys.cc mai kahi waiwai dummy:
b7739bf50b2edcf636c43a8f8910def9
Eia nō naʻe, hōʻike kahi hōʻike e like ka hana a ka API me ka ʻole o kēia kiʻina kī. Inā hoʻāʻo ʻoe me ka API, e hoʻihoʻi ʻoe i ke code kūlana 200 inā kūleʻa ʻoe. Inā ʻoe e holo i kahi palena, loaʻa iā ʻoe ke code kūlana 411 hoʻi me ka leka " POST noi koi i kahi poʻo-lōʻihi poʻo . No laila pono e hoʻokomo i kēia poʻo poʻo (i hoʻonohonoho ʻia ma ke ʻano he poʻo manawa ma Postman).
ʻO ka hōʻano hoʻihoʻi o nā kaula i unuhi ʻia he mea maʻamau ke nui nā ʻōlelo i hoʻokahi noi. Hoʻopili ʻia nā ʻōlelo pākahi e nā hāmeʻa i- / b-HTML:
Eia kekahi, ʻaʻole hoʻouna ʻo Google Chrome i ka HTML holoʻokoʻa i ka API, akā mālama ʻia nā waiwai e like me href i ke noi (a hoʻonohonoho i nā ʻikepili i hiki ke hāʻawi ʻia nā hōʻailona ma ka ʻaoʻao o ka mea kūʻai aku):
Inā hoʻololi ʻoe i ka waiwai o ka mea kūʻai mai POST mai te_lib (Google Chrome) ma ka webapp ( kahua pūnaewele unuhi Google ), loaʻa iā ʻoe ke aho unuhi hope loa:
ʻO ka pilikia e ʻoi aku paha kāu e holo i ka palena o ka palena ma mua o via te_lib (no ka hoʻohālikelike ʻana: me webapp e kiʻi ʻia ma hope o 40,000 chars, me te_lib ʻaʻohe palena palena). No laila pono mākou e nānā pono i ka pehea e hoʻopau ai ʻo Chrome i ka hopena. E loaʻa ia ma aneʻi ma element_main.js:
b7739bf50b2edcf636c43a8f8910def9
Inā hoʻouna ʻoe i ke code HTML holoʻokoʻa i ka API, waiho ia i nā ʻano ma ka pane unuhi. No laila ʻaʻole pono mākou e hoʻohālike i ke ʻano holoʻokoʻa holoʻokoʻa, akā e unuhi wale i ke kaula hope i unuhi ʻia mai ka pane. No ka hana ʻana i kēia, kūkulu mākou i kahi parser tag HTML liʻiliʻi e hoʻolei i nā huaʻōlelo <i> waho loa me kā lākou ʻike a wehe i nā hōʻailona <b> waho loa. Me kēia ʻike (ma hope o ka hoʻokomo ʻana i nā hilinaʻi me ka haku mele e koi iā fzaninotto / faker vielhuber / stringhelper ) hiki iā mākou ke kūkulu i kahi mana ʻaoʻao kikowaena o ka API unuhi.:
b7739bf50b2edcf636c43a8f8910def9
ʻO nā mea aʻe nā hopena o kahi hoʻokolohua mua i lawe ʻia ma nā ʻōnaehana ʻelima me nā bandwīwī like ʻole a me nā helu IP:
ʻano | Nā hāmeʻe no ke noi | Duration | Hewa helu | ʻO ke kumukūʻai ma o API kūhelu |
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 | ~ Ø550 | Σ159: 11: 37h | 0% | 5 € 5183.41 |
Kahakaha: Ua kākau ʻia kēia pou blog me nā palapala āpau no nā hana hoʻāʻo wale nō. Mai Mai hoʻohana i nā moʻolelo keaka no hoʻomāhuahua ai ana, kahi hana me ka kūhelu Google Translation API .