Ishte një ditë e mirë diellore në Seattle, dhe gruaja ime donte të kishte të famshme virale Dubai Chocolate Pistachio Shake. Me eksitim, ne vendosëm të vizitojmë Shake Shack më të afërt, dhe për habinë tonë, ajo u shit, dhe na thanë që t'i telefonojmë para vizitës. Nuk ka asnjë garanci se ajo do të jetë në dispozicion ditën tjetër, si dhe për shkak të furnizimit të kufizuar. Dy ditë më vonë, unë shkova atje përsëri për të parë nëse do të ketë ndonjë, dhe përsëri unë u përball me zhgënjim. nuk më pëlqeu mënyra, unë ose kam për të thirrur ata për të kontrolluar për një artikull ose të shkojnë në dyqan e tyre për të kontrolluar nëse është në dispozicion. Kjo çoi në disa ide për mua: Po sikur të kishte një IA që do të bënte thirrjet për mua dhe të më përditësonte kur kam nevojë për një rezervim, ose të prisja në atë linjë të gjatë për thirrjet e klientëve, dhe të lidhesha me mua kur jam gati të flas me dikë? A ka ndonjë mënyrë për t'u njoftuar kur një artikull është i disponueshëm në Shake Shack? Nëse nuk është atje, a mund të ndërtoj një infrastrukturë cloud për këtë? Duke vazhduar me mendimet e mia për idenë time të dytë, fillova të shikoja në faqen e tyre të internetit. është e mundur të kontrollosh nëse një artikull është në dispozicion dhe ta shtosh atë në shportën për porosinë në internet, që do të thotë se ka disa thirrje të rrjetit përmes të cilave mund të identifikojmë nëse Dubai Chocolate Pistachio Shake është në dispozicion. Implementation Zbatimi Për të marrë informacionin rreth disponueshmërisë, na duhen disa pika të të dhënave. A ka ndonjë mënyrë për të marrë informacionin e dyqanit? Si të dallojmë nëse një dyqan ka një shake ose jo? Për të marrë informacionin e dyqanit, kur hapim elementin e inspektimit dhe shikojmë thirrjet e rrjetit, kur zgjedhim Uashingtonin, shohim disa thirrje interesante. Shteti i Uashingtonit ka shtatë vende, dhe ne duhet të dimë se cila prej tyre ka tronditjen. Nëse shikojmë përgjigjen e informacionit të rajonit, ne ishim në gjendje të marrim të gjitha informacionet shtetërore. 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' Sipas kësaj, ID WA është a3d65b58-ee3c-42af-adb9-9e39e09503c3, dhe ne shohim informacionin e magazinës nëse kalojmë regionId në 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' Kjo informacion ende nuk është e mjaftueshme derisa ne e dimë se si të shkojmë në një faqe dyqan dhe të identifikojmë disponueshmërinë. nëse një dyqan ka një shake, ajo do të shfaqë shake Dubai në seksionin shake. Dhe pas hulumtimit thirrjet curl, unë shoh thirrjen për opsionin 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' Nëse një shake është në dispozicion, atëherë ne e shohim atë në seksionin e produktit. Nëse një dyqan nuk e ka atë, atëherë ne nuk do ta shohim atë në përgjigje. Pra, gjithçka që duhet të bëjmë është të marrim të gjithë informacionin e dyqanit dhe të verifikojmë se cilat dyqane kanë shake. Nëse shikoni në pyetjet e dyqanit, oloId e tij lidhet në pyetjet që lidhen me një dyqan. Kjo mund të hartohet në informacionin e dyqanit nga pyetjet e mëparshme, duke përdorur të cilën unë isha në gjendje të merrja të gjitha ID-të e dyqanit. Me disa skripte bazë shell, unë isha në gjendje të krijoja këtë skrip curl, i cili do të tregojë se cila dyqan do të ketë 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 Ku çdo dyqan është storeId, dhe unë kam përdorur bibliotekën jq për të formatuar përgjigjen në output JSON, dhe bëri një kapje në këtë emër, dyqanet që kanë shake do të japë një hit. Përgjigje e mostrës Bazuar në këtë, ne e dimë se dyqanet 82099, 62274, dhe 96570 kanë shake, dhe unë mora adresën e dyqanit nga thirrjet e mëparshme dhe mora shake. :) Conclusion Konkludimi Në këtë dokument, ne kemi shkuar nëpër thirrjet e rrjetit për të identifikuar informacionin që na nevojitet dhe gjithashtu kemi gjetur një mënyrë për të marrë informacionin e dyqanit përmes thirrjeve të tyre të rrjetit. që tha, ne gjithashtu mund ta automatizojmë këtë përmes Selenium (që është kompjuterike), ose mund të përdorim një AI për të analizuar faqen e internetit dhe të gjejmë një mënyrë për të marrë këtë infrastrukturë të gatshme për ne. Kjo do të jetë një përparim që do të heqë disa vende pune të lidhura me QA nga industria (ne nuk jemi atje akoma, por do të jemi në atë pozitë shumë shpejt). Shumica e qasjeve që pamë sot ishin manuale.Në artikujt e mi të ardhshëm, unë do të tregoj se si mund ta marrim këtë ide të thjeshtë dhe të ndërtojmë një infrastrukturë cloud rreth saj. Një thirrje pa server bazuar në re për të marrë informacionin nga web. Një shërbim i bazuar në cloud që do të shkaktojë thirrjen pa server. Një sistem ruajtjeje për të ruajtur këto të dhëna për caching – ku mund të ruajmë përgjigjet? Një sistem njoftimi për të njoftuar përmes një aplikacioni celular ose në mënyra të ndryshme të tjera. Nëse ne jemi duke marrë pikë të mjaftueshme të të dhënave, unë do të tregoj se si të ndërtoj një model ML duke përdorur pikë të dhënave të rralla. Kjo është për qëllime edukative; unë dhe partneri im (SGG) morëm këtë shembull të botës reale për të ndërtuar një infrastrukturë cloud, dhe kodi dhe artefakte të tjera nuk do të publikohen për të siguruar që faqet e internetit të Shake Shack nuk janë të mbingarkesës.