इसे छोड़कर कंटेंट पर जाएं

Rewrite Rules और Breakpoints

कैप्चरिंग आपको “देखने” देती है, rules और breakpoints आपको “बदलने” देते हैं। Trace Eagle आपको आपके ट्रैफ़िक का मालिक बनाता है: बिना कोड लिखे रिक्वेस्ट्स बदलें, साधारण, सीधे point-and-click rules का उपयोग करके हज़ारों फ़्लो को स्वचालित रूप से फिर से लिखें; या breakpoints का उपयोग करके फ़्लो को रोकें और एक-एक करके एडिट करें; केवल उस जटिल लॉजिक के लिए जिसे rules वाकई एक्सप्रेस नहीं कर सकते, आपको स्क्रिप्ट्स / plugins पर निर्भर होना पड़ता है।


1. Rewrite Rules (साधारण point-and-click, स्वचालित बदलाव)

Section titled “1. Rewrite Rules (साधारण point-and-click, स्वचालित बदलाव)”

रिक्वेस्ट्स बदलना शुरू करने का सबसे बुरा तरीका है स्क्रिप्ट लिखना। यहां आपको ऐसा करने की ज़रूरत नहीं है: cheat sheet से एक action चुनें और एक value भरें, और यही एक rule बन जाता है: साधारण, सहज, और बनाते ही लागू।

Rules एक लाइन में एक होता है, फॉर्म में <match> <action>://<value> (उदाहरण के लिए *.example.com resHeaders://X-Debug: 1)। खाली लाइनें और # comments को नज़रअंदाज़ किया जाता है, हर लाइन अपने आप में वैलिडेट होती है, और बदलाव सेव करते ही hot-applied हो जाते हैं; rules को नाम वाले groups में व्यवस्थित किया जा सकता है और group के हिसाब से टॉगल किया जा सकता है। इंटरफ़ेस में एक क्लिक करने योग्य cheat sheet भी है: एक क्लिक में matching उदाहरण insert हो जाता है, फिर बस value एडिट करें, कोई syntax याद रखने की ज़रूरत नहीं।

Rewrite rules: बाईं ओर हर लाइन में एक rule, groups और comments सपोर्टेड, दाईं ओर एक क्लिक करने योग्य action cheat sheet (redirect / mock / headers एडिट / fingerprint / breakpoint, आदि)

लचीली matching शर्तें

Section titled “लचीली matching शर्तें”
  • Exact domain: traceeagle.com (एक path prefix traceeagle.com/path भी शामिल हो सकता है)
  • Wildcard subdomain: *.traceeagle.com (apex domain के साथ-साथ सभी subdomains से मेल खाता है)
  • पूरे URL के खिलाफ़ regex: regex://…
  • Exact पूरा URL: $https://host/path
  • Port: :8080
  • Negation: किसी भी match के आगे ! लगाएं

Request दिशा

  • Redirect / forward: जिस IP से टारगेट डायल हो रहा है उसे बदलें (host), किसी अलग पूरे URL पर map करें (map-remote, किसी लोकल dev server की ओर पॉइंट कर सकता है), किसी upstream http/socks5 proxy से रूट करें, या क्लाइंट की नेटवर्क रिक्वेस्ट विशेषताओं को एक standard client जैसा बहाल करें (faithful reproduction)।
  • Mock फ़ेक डेटा: mock://200 या mock://200|<body>, सर्वर तक पहुंचे बिना एक पहले से तय रिस्पॉन्स लौटाएं, जब frontend किसी backend API का इंतज़ार कर रहा हो तो यह बहुत काम आता है।
  • Request line / headers एडिट करें: method, User-Agent, Referer, Basic auth, X-Forwarded-For, Content-Type / charset, Cookie, query parameters मर्ज करना, URL find-and-replace।
  • Request body एडिट करें: पूरी तरह बदलें / find-and-replace / append / prepend / लोकल फ़ाइल में dump करें।

Response दिशा

  • Status / headers एडिट करें: status code बदलें, कोई भी response header जोड़ें या हटाएं, Set-Cookie, एक क्लिक में CORS खोलें, attachment download को फ़ोर्स करें, cache control (caching बंद करना या max-age सेट करना), Cookie/compression/keep-alive बंद करना, header-value find-and-replace।
  • Response body एडिट करें: पूरी तरह बदलें / find-and-replace / append / prepend / shallow JSON merge।
  • Type के अनुसार inject करें: केवल तब जब Content-Type मेल खाता हो, HTML / JS / CSS में scripts, styles, या snippets inject या replace करें।

नेटवर्क और प्रोटोकॉल

  • फ़ाइल में dump करें: request / response body के अलावा, पूरा raw request / response भी एक क्लिक में लोकल फ़ाइल में dump किया जा सकता है, archiving या offline analysis के लिए।
  • कमज़ोर-नेटवर्क सिमुलेशन: request / response delay (मिलीसेकंड्स में), bandwidth throttling (2G / 3G / 4G presets के साथ)।
  • WebSocket frame rewrite: दिशा के अनुसार old=>new replacement (दोनों दिशाएं / client to server / server to client)।
  • Raw TCP / UDP rewrite: non-HTTP byte streams / SOCKS5 UDP datagrams पर दिशा के अनुसार replacement।

Rule values में ${url} ${host} ${port} ${method} ${status} ${now} ${random} ${randomUUID} ${req.headers.X} ${res.headers.X} जैसे dynamic variables इस्तेमाल किए जा सकते हैं, साथ ही कस्टम नामित values {name} (एक बार एक common value डिफ़ाइन करें, हर जगह reference करें)। नामित values {name} मुख्यतः request / response rewrites में इस्तेमाल होते हैं; WebSocket frame rewrite replacement values ${...} को सपोर्ट करती हैं।


2. Breakpoints (मैन्युअल एडिटिंग)

Section titled “2. Breakpoints (मैन्युअल एडिटिंग)”

जिन फ़्लो्स को सटीक, केस-दर-केस नियंत्रण की ज़रूरत है, उनके लिए breakpoint का उपयोग करें ताकि रिक्वेस्ट भेजे जाने से पहले या रिस्पॉन्स लौटने से पहले रुककर एक editor पॉप-अप हो।

ट्रिगर करने के दो तरीके

Section titled “ट्रिगर करने के दो तरीके”
  • Rule-triggered: यह सटीक रूप से चिह्नित करने के लिए कि कौन-से फ़्लो intercept करने हैं, breakpoint://req|res|both rule का उपयोग करें।
  • Global interception switch: पूरे session के लिए interception चालू करें, फिर वैकल्पिक रूप से interception filter rules (domain / method / stage के अनुसार फ़िल्टर) से scope को संकुचित करें; बिना किसी rule के, सब कुछ intercept होता है।

Intercept होने के बाद आप क्या बदल सकते हैं

Section titled “Intercept होने के बाद आप क्या बदल सकते हैं”
  • Request stage: method, URL (host, URL के साथ बदलता है), headers, body।
  • Response stage: status code, response headers, response body।
  • सीधे discard करें: Abort इस request / response को गिरा देता है (क्लाइंट को एक gateway error मिलता है)।
  • कई बार मैच होने वाले फ़्लो आपके लिए handle करने हेतु कतार में लगते हैं: आप हर एक को resume (Resume) कर सकते हैं, discard (Abort) कर सकते हैं, या सबको एक साथ resume कर सकते हैं। लंबे समय तक handle न किए गए फ़्लो अपने आप बिना बदलाव के resume हो जाते हैं, ताकि ट्रैफ़िक कभी अनिश्चित काल तक अटका न रहे।

3. Scripts और Plugins (एडवांस्ड ऑटोमेशन)

Section titled “3. Scripts और Plugins (एडवांस्ड ऑटोमेशन)”

जिस लॉजिक को rules एक्सप्रेस नहीं कर सकते, उसे स्क्रिप्ट या plugin को सौंप दें:

  • JavaScript scripts: onRequest(req) / onResponse(resp) डिफ़ाइन करें और असर के लिए सीधे fields एडिट करें। बिल्ट-इन helpers में logging, अन्य services को synchronous outbound calls, requests के बीच डेटा stash करना (counters / cached tokens के लिए), Base64 encode/decode, और अधिक शामिल हैं।
  • HTTP outbound plugins: request / response को प्रोसेसिंग के लिए अपनी खुद की plugin service को सौंपने के लिए plugin://name rule का उपयोग करें (HTTP पर कॉल किया जाता है), और plugin फिर से लिखी गई सामग्री लौटाता है (या सीधे mock करता है)। Language-agnostic, टीमों के लिए किसी भी भाषा में कस्टम प्रोसेसिंग लागू करने के लिए उपयुक्त।

4. प्रोसेसिंग क्रम

Section titled “4. प्रोसेसिंग क्रम”

कोई फ़्लो क्रम में इनसे होकर गुज़रता है: request rules, request scripts, request plugins, request breakpoint, forward / mock, response rules, response scripts, response plugins, response breakpoint। पैटर्न सीधा है: पहले स्वचालित rules, फिर scripts, फिर plugins, और सबसे आखिर में ही breakpoint मैन्युअल रूप से कदम रखता है, हर एक अपना काम करते हुए बाकी में हस्तक्षेप नहीं करता।


वापस प्रॉक्सी कैप्चर पर जाएं · संबंधित: Compose और Replay