Ilikuwa siku nzuri ya jua huko Seattle, na mke wangu alitaka kuwa na virusi maarufu Dubai Chocolate Pistachio Shake. Kwa msisimko, tuliamua kutembelea karibu Shake Shack, na kwa mshangao wetu, ilikuwa kuuzwa, na tulipaswa kuwaita kabla ya kutembelea. Hakuna dhamana kwamba itakuwa inapatikana siku inayofuata pia kutokana na utoaji mdogo. Siku mbili baadaye, nilikwenda huko tena ili kuona kama kulikuwa na yoyote, na tena nilikuwa nikabiliana na hasira. Sikuipenda njia, mimi au haja ya kuwaita kuangalia kwa bidhaa au kwenda maduka yao kuangalia kama inapatikana. Hii ilisababisha mawazo machache kwa ajili yangu: Nini kama kulikuwa na AI ambayo ingekuwa kufanya wito kwa ajili yangu na update mimi wakati mimi haja ya usajili, au kusubiri katika mstari mrefu kwa wito wa wateja, na kuunganisha na mimi wakati mimi ni tayari kuzungumza na mtu? Je, kuna njia ya kutambuliwa wakati bidhaa inapatikana kwenye Shake Shack? Ikiwa haipo, ninaweza kujenga miundombinu ya wingu kwa hili? Kuendeleza mawazo yangu juu ya wazo langu la pili, nilianza kuangalia kwenye tovuti yao. Inawezekana kuangalia kama bidhaa inapatikana na kuongeza kwenye gari la maagizo ya mtandaoni, ambayo ina maana kuna wito wa mtandao ambao tunaweza kutambua kama Dubai Chocolate Pistachio Shake inapatikana. Implementation utekelezaji Ili kupata habari kuhusu upatikanaji, tunahitaji pointi chache za data. Je, kuna njia ya kupata taarifa ya duka? Jinsi ya kutambua kama duka ina shake au sio? Kwa kupata habari ya duka, wakati tunapofungua kipengele cha uchunguzi na kuangalia wito wa mtandao, wakati tunapochagua Washington, tunaona wito kadhaa wa kuvutia. Nchi ya Washington ina maeneo saba, na tunahitaji kujua ambayo moja ya hizi ina shake. Ikiwa tutazingatia majibu ya habari za mkoa, tulikuwa na uwezo wa kupata habari zote za serikali. curl 'https://ssma24.com/production-location/regions?isAlpha=true' \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'authorization: Basic removedSecretCodeHere==' \ -H 'cache-control: no-cache' \ -H 'origin: https://shakeshack.com' \ -H 'platform-os: macos' \ -H 'platform-version: 1.71.20' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://shakeshack.com/' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'x-requested-with: XMLHttpRequest' Kwa mujibu wa hili, WA ID ni a3d65b58-ee3c-42af-adb9-9e39e09503c3, na tunaona habari ya duka ikiwa tunapeleka regionId kwenye API. curl 'https://ssma24.com/production-location/locations?regionId=a3d65b58-ee3c-42af-adb9-9e39e09503c3&channel=WEB&includePrivate=false' \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'authorization: Basic removedSecretCodeHere' \ -H 'cache-control: no-cache' \ -H 'origin: https://shakeshack.com' \ -H 'platform-os: macos' \ -H 'platform-version: 1.71.20' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://shakeshack.com/' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'x-requested-with: XMLHttpRequest' Taarifa hii bado si ya kutosha mpaka tunajua jinsi ya kufikia ukurasa wa duka na kutambua upatikanaji. Ikiwa duka ina shake, itaonyesha shake ya Dubai katika sehemu ya shake. Na baada ya kuchunguza wito wa curl, ninaona wito kwa chaguo la menu. curl 'https://ssma24.com/v1.0/locations/82099/menus?includeOptionalCategories=utensils&platform=web' \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'authorization: Basic removedSecretCodeHere==' \ -H 'cache-control: no-cache' \ -H 'channel: WEB' \ -H 'origin: https://shakeshack.com' \ -H 'platform-os: macos' \ -H 'platform-version: 1.71.20' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://shakeshack.com/' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'x-requested-with: XMLHttpRequest' Ikiwa shake inapatikana, basi tunaona katika sehemu ya bidhaa. Ikiwa duka haina, basi hatuwezi kuona katika jibu. Hivyo, tunahitaji tu kupata habari zote za duka na kuthibitisha maduka ambayo yana shake. Ikiwa unatafuta maswali ya maduka, oloId yake inahusishwa katika maswali yanayohusiana na maduka. Hii inaweza kuunganishwa na habari ya maduka kutoka maswali ya awali, ambayo nilikuwa na uwezo wa kupata ID zote za maduka. Pamoja na script ya msingi ya shell, nilikuwa na uwezo wa kuunda script hii ya curl, ambayo itakuambia ambayo duka litakuwa na shake. for store in 203514 236001 265657 82099 62274 96570 203515; do echo $store curl "https://ssma24.com/v1.0/locations/$store/menus?includeOptionalCategories=utensils&platform=web" \ -H 'accept: */*' \ -H 'accept-language: en-US,en;q=0.9' \ -H 'authorization: Basic removedSecretCodeHere==' \ -H 'cache-control: no-cache' \ -H 'channel: WEB' \ -H 'origin: https://shakeshack.com' \ -H 'platform-os: macos' \ -H 'platform-version: 1.71.20' \ -H 'pragma: no-cache' \ -H 'priority: u=1, i' \ -H 'referer: https://shakeshack.com/' \ -H 'sec-ch-ua: "Google Chrome";v="131", "Chromium";v="131", "Not_A Brand";v="24"' \ -H 'sec-ch-ua-mobile: ?0' \ -H 'sec-ch-ua-platform: "macOS"' \ -H 'sec-fetch-dest: empty' \ -H 'sec-fetch-mode: cors' \ -H 'sec-fetch-site: cross-site' \ -H 'user-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36' \ -H 'x-requested-with: XMLHttpRequest' | jq| grep '"name": "Dubai Chocolate Pistachio Shake",' done Ambapo kila duka ni storeId, na niliitumia maktaba ya jq kuunda majibu katika matokeo ya JSON, na nilifanya uchunguzi juu ya jina hili, maduka ambayo yana shake itatoa hit. Majibu ya sampuli Kulingana na hili, tunajua kwamba maduka 82099, 62274, na 96570 wana shakes, na nimepata anwani ya duka kutoka kwa wito uliopita na kupata shakes. :) Conclusion Mwisho wa Katika hati hii, tumeenda kupitia wito wa mtandao ili kutambua habari tunayohitaji na pia tulijifunza njia ya kupata habari ya duka kupitia wito wao wa mtandao.Kwa hiyo, tunaweza pia automatiska hii kupitia Selenium (ambayo ni hesabu kubwa), au tunaweza kutumia AI kuchambua tovuti na kufikiria njia ya kupata miundombinu hii tayari kwetu. Hii itakuwa maendeleo ambayo itaondoa kazi fulani zinazohusiana na QA kutoka kwa sekta (hatujafika hapo bado, lakini tutakuwa katika nafasi hiyo hivi karibuni). Katika makala zangu za baadaye, nitaonyesha jinsi tunaweza kuchukua wazo hili rahisi na kujenga miundombinu ya wingu karibu naye. Piga simu bila seva ya wingu ili kupata habari kutoka kwenye wavuti. Huduma ya trigger ya msingi ya wingu ambayo itachochea wito usio na seva. Mfumo wa kuhifadhi data hii kwa ajili ya caching - wapi tunaweza kuhifadhi majibu? Mfumo wa taarifa ya kutangaza kupitia programu ya simu au kwa njia nyingine kadhaa. Ikiwa tunapata pointi ya data ya kutosha, nitakuonyesha jinsi ya kujenga mfano wa ML kwa kutumia pointi za data ndogo. Hii ni kwa madhumuni ya elimu; mimi na mpenzi wangu (SGG) nimechukua mfano huu wa ulimwengu wa kweli wa kujenga miundombinu ya wingu, na msimbo na vifaa vingine havitachapishwa ili kuhakikisha tovuti za Shake Shack hazijali.