Bir API yanıtını taklit edin
Uygulamanızın API çağrılarından birine hazır bir yanıtla karşılık verin — elinizdeki telefonda, sahte sunucu ve yeniden derleme olmadan. Sabit bir gövde için Mock engelleme kuralı, tam bir kez tetiklenmesi gerektiğinde çalıştırma sınırı ve gövdenin hesaplanması gerektiğinde bir betik.
Gerçek bir cihazda taklit etmek, çoğu kurulumun dağıldığı yerdir: taslak sunucu bir dizüstünde yaşar, telefonun ona ulaşması ve uygulamanın ona yönlendirilmesi gerekir. Busymate DevTools taklidi bunun yerine yakalama yolunun içine koyar. Bir engelleme kuralı, bir yöntem ve ana bilgisayar-artı-yol desenine uyan her isteği izler ve eşleşmeyi kendisi yanıtlar — yapay bir hata, düşürülmüş bir bağlantı ya da tam olarak kaynaktan gelen bir yanıt gibi görünen taklit bir başarı. Üst sunucuyla asla iletişim kurulmaz.
Kurallar iki yerde uygulanır, bu yüzden her bağlantı modu kapsanır: tarayıcılar, proxy üzerinden Android ve PAC modundaki iOS için proxy sunucusu; VPN modundaki iOS için cihaz üzerindeki VPN tüneli. Genel kurallar her cihaza uygulanır; cihaz başına kurallar üstüne eklenir. Değişiklikler Realtime üzerinden yayılır, bu yüzden kaydettiğiniz bir kural yeniden bağlanmadan telefonda etkindir.
Neye ihtiyacınız
Zaten yakalama yapan bir telefon ve sahtesini üretmek istediğiniz uç nokta.
Yakalaması açık, eşleştirilmiş bir telefon — önce iPhone veya Android kılavuzunu izleyin.
O cihazın SSL proxy listesindeki API ana bilgisayarı. Bir yola göre eşleşen kural, yolu yalnızca şifresi çözülmüş bir ana bilgisayarda görebilir.
Yanıtlamak istediğiniz çağrının yöntemi, ana bilgisayarı ve yolu ile uygulamanızın geri beklediği gövde.
Yalnızca betik varyantı için: rolünüzde yönetici düzeyindeki betik yeteneği. Düz Mock kuralları özel bir rol gerektirmez.
Sırayla
Birden dörde kadar olan adımlar sabit bir taklit verir. Beş ve altı, sabit bir gövdenin yapamadığı iki durumu kapsar: bir kez tetiklenmek ve yanıtı hesaplamak.
- 01
Ana bilgisayarın şifresinin çözüldüğünden emin olun
Pano akışını açın ve uç noktaya giden gerçek bir istek bulun. Satırı çözülmüş bir gövde gösteriyorsa hazırsınız. Ana bilgisayar hâlâ şifreli görünüyorsa onu cihazın SSL proxy listesine ekleyin — satırın ana bilgisayar eylemlerinden ya da cihazın ayarlarından — ve çağrıyı yeniden tetikleyin. Şifreli geçen bir ana bilgisayarda uygulayıcı yalnızca ana bilgisayar adını eşleştirebilir; yol görünmezdir, bu yüzden yola hassas bir taklit asla tetiklenmez.
- 02
Blocks'u açın ve bir kural ekleyin
Genel bir kural için ayarlar gezinmesinden Blocks sayfasını açın ya da yalnızca bu telefona uygulanacak bir kural için cihaza, sonra Blocks'a gidin. Bir kural ekleyin ve yöntemi — ya da herhangi biriyle eşleşmesi için boş bırakın — ve deseni doldurun. Desenler, kesme noktalarının kullandığı aynı ana bilgisayar-artı-yol joker karakterleridir: ana bilgisayar, bir eğik çizgi, yol ve bir bölümün değiştiği her yerde bir yıldız.
- 03
Mock'u seçin ve yanıtı şekillendirin
Eylemi Mock olarak ayarlayın. Block bir çağrıyı başarısız kılmak, Drop ise ağ yok olmuş gibi göstermek içinken Mock onu tatmin etmek içindir: durumu — varsayılan 200 —, uygulamanın bakacağı başlıkları ve gövdeyi ayarlayın. Ona uygulamanızın ayrıştırdığı Content-Type'ı verin; metin yanıtı alan bir JSON istemcisi tek bir bayt okumadan başarısız olur. JSON olarak kaydedildiğinde kural şöyle görünür.
Bir özellik bayrakları çağrısını sabit bir gövdeyle yanıtlayan Mock kuralı json{ "enabled": true, "method": "GET", "pattern": "api.example.com/v1/feature-flags", "action": { "type": "mock", "status": 200, "headers": { "Content-Type": "application/json" }, "body": "{\"flags\": {\"newCheckout\": true}}" } } - 04
Kaydedin, çağrıyı tetikleyin ve akışı kontrol edin
Kuralı kaydedin ve uygulamayı kullanın. Eşleşen bir sonraki istek yakalama yolundan hiç çıkmadan yanıtlanır ve yine de akışınızda görünür — taklit olarak işaretlenmiş halde, böylece tam olarak neyin sahte olduğunu görür ve kuralın beklediğinizi yaptığını doğrularsınız. Uygulama yalnızca düz bir sunucu yanıtı görür: yapay yanıtlar dahili ya da tanımlayıcı başlık taşımaz, bu yüzden yanıttaki hiçbir şey müdahaleyi açığa çıkarmaz.
İşiniz bitince kuralı etkin anahtarıyla kapatın. Devre dışı bir kural hiçbir maliyet getirmez ve bir sonraki sefer için şeklini korur.
- 05
Çalıştırma sınırıyla tam bir kez tetikleyin
Bazı taklitler yalnızca bir kez olmalıdır. Klasik örnek, uygulamanın belirtecinin süresinin dolduğuna inanıp yenileme akışını çalıştırmasını sağlayan yapay bir 401'dir — her isteği böyle yanıtlarsanız uygulama yeniler, yeniden dener, bir 401 daha alır ve sonsuza dek döner. Max runs alanı bir kuralın kaç kez tetiklenebileceğini sınırlar; sınırda kendini devre dışı bırakır ve düzenleyici, sizin kapattığınız bir kuraldan farklı olarak otomatik devre dışı rozeti gösterir.
Sayım cihaz başına tutulur ve yeniden bağlanmalarla uygulama yeniden başlatmalarından sağ çıkar; bu yüzden bir sınırı o telefonda oturum başına bir kez değil, toplamda bir kez tetiklenir. Sınırlı bir genel kural yalnızca sınırı tüketen cihazda bastırılır ve filodaki diğer her telefonda tetiklenmeye devam eder. BusyBro'dan da doğal dille bir ana bilgisayarda tek seferlik bir taklit 401 isteyebilirsiniz; aynı kuralı yazar.
Tek seferlik 401 — normal bir taklitle aynı, artı bir çalıştırma sınırı json{ "enabled": true, "method": "GET", "pattern": "api.example.com/v1/me", "action": { "type": "mock", "status": 401, "headers": { "Content-Type": "application/json" }, "body": "{\"error\": \"token_expired\"}" }, "maxRuns": 1 } - 06
Gövdeyi bir betikle hesaplayın
Bir Mock gövdesi donmuş tek bir dizedir. Yanıt isteğe bağlı olmak zorundaysa — geri yansıtılan bir kimlik, bir zaman damgası, gerçek yanıta yamalanan bir alan — kuralın eylemini Script'e çevirin ya da Settings, sonra Scripts altında bağımsız bir betik oluşturun. İstek, yanıt ve yardımcı nesneler için otomatik tamamlamalı bir kod düzenleyici ile betiğinizi gerçek bir yakalanmış girdiye karşı çalıştırıp canlı trafiğe dokunmadan öncesi-sonrası farkını gösteren bir Test paneli edinirsiniz. Kuru çalıştırma, canlı proxy'nin kullandığı aynı korumalı alanı kullanır; bu yüzden testi geçmek canlıda çalıştığı anlamına gelir.
Hata fırlatan ya da zaman aşımına uğrayan bir betik açık başarısız olur: orijinal baytlar iletilir ve girdi denetleyicide işaretlenir, böylece bozuk bir betik asla bir bağlantıyı kilitleyemez ya da kendini uygulamaya belli edemez. Betikler yakalama yolunda rastgele kod çalıştırdığı için yönetici düzeyindedir.
Hesaplanmış bir JSON gövdesiyle kısa devre yapan bir istek kancası javascriptfunction onRequest(req) { if (req.path.startsWith("/v1/feature-flags")) { // computed per request — the upstream is never contacted return Response.json({ flags: { newCheckout: true, seed: Date.now() } }, { status: 200 }); } // no return → forward unchanged }
Neler ters
Ölü görünen bir kural neredeyse her zaman göremediği bir şeyle eşleşmeye çalışıyordur.
Kural hiç tetiklenmiyor
Ana bilgisayarın o cihaz için şifresinin çözüldüğünü kontrol edin — bir yol deseni buna ihtiyaç duyar —, sonra desenin yazımını ve yöntemin eşleştiğini ya da boş olduğunu kontrol edin. Gerçek isteğin akış satırı, kopyalanacak tam ana bilgisayar ve yolu gösterir.
Uygulama bir yenileme döngüsüne takıldı
Yapay 401'iniz her istekte tetikleniyor. Kuralın ilk isabetten sonra kendini devre dışı bırakması ve yeniden denenen isteğin gerçek sunucuya ulaşması için Max runs'ı bire ayarlayın.
Uygulama taklit yanıtı reddediyor
Genellikle Content-Type başlığı eksiktir ya da gövde şekli istemcinin ayrıştırdığıyla uyuşmaz. Başlangıç noktası olarak denetleyiciden gerçek bir yakalanmış yanıtın başlıklarını ve gövdesini kopyalayın.
Kural otomatik devre dışı rozeti gösteriyor
Bu cihazda çalıştırma sınırını tüketti. Yeniden kurmak için Max runs'ı temizleyin ya da kuralı yeniden etkinleştirin.
Betik çalıştı ama yanıt gerçek olandı
Betik hata fırlattı ya da zaman aşımına uğradı ve açık başarısız oldu. Girdiyi denetleyicide açın — hata rozeti iletiyi ve satırı taşır —, düzenleyicide düzeltin ve yeniden etkinleştirmeden önce Test panelini aynı girdiye karşı yeniden çalıştırın.
Sık sorulan
Uygulama taklit edildiğini anlayabilir mi?
Yanıtı inceleyerek anlayamaz. Taklit bir 200 ya da engellenmiş bir 403 tanımlayıcı başlık taşımaz ve kaynaktan gelen sıradan bir yanıt gibi görünür. Görünürlük tek yönlüdür: işaretli girdi yalnızca sizin akışınızda görünür.
Bu, iOS'ta VPN modunda çalışır mı, yoksa yalnızca proxy üzerinden mi?
İkisi de. Aynı kural motoru iOS VPN tünelinin içinde ve proxy sunucusunda çalışır; bu yüzden her iki moddaki iOS, proxy üzerinden Android ve tarayıcılar kurala uyar.
Bir kuralı değiştirdiğimde bir şey yeniden dağıtmam gerekiyor mu?
Hayır. Kurallar, cihazlara Realtime üzerinden akan aynı ayarlarda yaşar; bu yüzden bir kayıt yeni bağlantılara hemen uygulanır. Zaten açık olan bir keep-alive bağlantısı yeniden bağlanana kadar başladığı yapılandırmayı korur.
Yanıtı taklit edin,
Panoda tek bir kural ve elinizdeki uygulama test etmek istediğiniz yanıtı alır — taslak sunucu yok, yeniden derleme yok.