Tā bija laba saulaina diena Sietlā, un mana sieva vēlējās, lai viņai būtu slavenā Dubai Chocolate Pistachio Shake. Ar satraukumu, mēs nolēmām apmeklēt tuvāko Shake Shack, un mūsu pārsteigumam tas tika pārdots, un mums tika pateikts, lai viņi zvanītu pirms apmeklējuma. Nav garantijas, ka tas būs pieejams nākamajā dienā, kā arī ierobežotas piegādes dēļ. Divas dienas vēlāk, es devos tur atkal, lai redzētu, vai tur būtu kāds, un atkal es saskārās ar vilšanos. man nepatika veids, man ir vai nu zvanīt viņiem, lai pārbaudītu priekšmetu vai doties uz savu veikalu, lai pārbaudītu, vai tas ir pieejams. Tas man radīja dažas idejas: Ko tad, ja būtu AI, kas man piezvanītu un atjauninātu mani, kad man ir nepieciešama rezervācija, vai gaidītu tajā garajā rindā klientu zvanus, un sazināties ar mani, kad esmu gatavs runāt ar kādu? Vai ir veids, kā saņemt paziņojumu, kad objekts ir pieejams Shake Shack? Turpinot domāt par manu otro ideju, es sāku apskatīt viņu tīmekļa vietni. ir iespējams pārbaudīt, vai priekšmets ir pieejams un pievienot to grozam tiešsaistes pasūtīšanai, kas nozīmē, ka ir daži tīkla zvani, ar kuriem mēs varam identificēt, vai Dubai Chocolate Pistachio Shake ir pieejams. Implementation īstenošana Lai iegūtu informāciju par pieejamību, mums ir nepieciešami daži datu punkti. Vai ir veids, kā iegūt informāciju par veikalu? Kā atšķirt, vai veikalā ir shake vai nē? Lai iegūtu veikala informāciju, kad mēs atveram inspekcijas elementu un apskatām tīkla zvanus, kad mēs izvēlamies Vašingtonu, mēs redzam dažus interesantus zvanus. Vašingtonas štatā ir septiņas vietas, un mums ir jāzina, kurai no tām ir satricinājums. Ja skatāmies reģiona informācijas reakciju, mēs varējām iegūt visu valsts informāciju. 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' Saskaņā ar to WA ID ir a3d65b58-ee3c-42af-adb9-9e39e09503c3, un mēs redzam noliktavu informāciju, ja mēs nododam regionId 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' Šī informācija joprojām nav pietiekama, kamēr mēs nezinām, kā nokļūt veikalā un identificēt pieejamību. Un pēc tam, kad esmu izpētījis curl zvanus, es redzu zvanu uz izvēlnes opciju. 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' Ja shake ir pieejams, tad mēs to redzam produkta sadaļā. Ja veikalā tā nav, tad mēs to neredzēsim atbildē.Tātad viss, kas mums jādara, ir iegūt visu veikalā esošo informāciju un pārbaudīt, kuriem veikaliem ir satricinājums.Ja jūs aplūkojat veikala vaicājumus, tā oloId ir saistīts ar vaicājumiem, kas saistīti ar veikalu.To var pārvietot uz veikala informāciju no iepriekšējiem vaicājumiem, ar kuru palīdzību es varēju iegūt visus veikala ID. Ar dažiem pamata apvalka skriptiem es varēju izveidot šo curl skriptu, kas pateiks, kurā veikalā būs satricinājums. 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 Ja katrs veikals ir storeId, un es izmantoju jq bibliotēku, lai formatētu atbildi JSON izejas formātā, un es uzņēmu šo nosaukumu, veikali, kuriem ir satricinājums, dos triecienu. Sample atbilde Pamatojoties uz to, mēs zinām, ka veikaliem 82099, 62274, un 96570 ir satricinājumi, un es saņēmu veikala adresi no iepriekšējiem zvanījumiem un saņēmu satricinājumus. :) Conclusion Secinājums Šajā dokumentā mēs pārbaudījām tīkla zvanus, lai identificētu nepieciešamo informāciju, un arī izdomājām veidu, kā iegūt veikala informāciju, izmantojot viņu tīkla zvanus. Tas būs solis uz priekšu, kas no nozares noņems noteiktus ar QA saistītus darbus (mēs vēl neesam tur, bet mēs ļoti drīz būsim šajā pozīcijā). Lielākā daļa pieeju, ko mēs šodien redzējām, bija manuāli. manā nākamajā rakstā es parādīšu, kā mēs varam izmantot šo vienkāršo ideju un veidot mākoņa infrastruktūru ap to. Uz mākoņa balstīts bezsaistē, lai iegūtu informāciju no tīmekļa. Uz mākoņa balstīts izsaukuma pakalpojums, kas izraisīs bezservera zvanu. Uzglabāšanas sistēma, lai glabātu šos datus kešatmiņā – kur mēs varam glabāt atbildes? Paziņošanas sistēma, lai paziņotu, izmantojot mobilo lietotni vai dažādos citos veidos. Ja mēs iegūstam pietiekami daudz datu punktu, es parādīšu, kā izveidot ML modeli, izmantojot retus datu punktus. Tas ir izglītības nolūkos; es un mans partneris (SGG) ņēma šo reālo piemēru, lai izveidotu mākoņa infrastruktūru, un kods un citi artefakti netiks publicēti, lai nodrošinātu, ka Shake Shack tīmekļa vietnes nav pārslogotas.