Skip to content
KitploitKITPLOIT
उपकरणब्लॉग
जमा करें
उपकरणब्लॉग
जमा करें

हैकिंग, पेनटेस्ट और साइबर सुरक्षा उपकरण आपके सुरक्षा शस्त्रागार के लिए!

Kitploit हैकिंग, साइबर सुरक्षा और पेंटेस्टिंग टूल्स की एक निर्देशिका है। कमजोरियों को खोजने, सिस्टम का विश्लेषण करने, परीक्षण को स्वचालित करने और अपनी सुरक्षा को मजबूत करने के लिए नवीनतम प्रोजेक्ट अपडेट खोजें।

··फ़ीड·संपर्क·गोपनीयता·© 2026 Kitploit

टूल निर्देशिका

श्रेणियाँ

सभी श्रेणियाँ देखें
Loading categories
toxy — हैक करने योग्य HTTP प्रॉक्सी जो रेज़िलिएंसी परीक्षण और सिम्युलेटेड नेटवर्क स्थितियों के लिए है। | Kitploit
उपकरण/GitHubGitHub/h2non/toxy
भेद्यता विश्लेषणवेब प्रॉक्सी और अवरोधनएपीआई सुरक्षा परीक्षणनेटवर्क सुरक्षापेनिट्रेशन टेस्टिंगकैओस इंजीनियरिंगArchived
GitHubh2non/toxy

toxy

हैक करने योग्य HTTP प्रॉक्सी जो रेज़िलिएंसी परीक्षण और सिम्युलेटेड नेटवर्क स्थितियों के लिए है।

रिपॉजिटरी देखें
2.7k8074 साल पहलेKitploit द्वारा समीक्षित

सबसे लोकप्रिय

सभी देखें →

हमारे समुदाय द्वारा सबसे अधिक उपयोग किए जाने वाले उपकरण खोजें।

सभी उपकरण खोजें

हमारे उपकरणों का संग्रह ब्राउज़ करें

सभी उपकरण देखें →
साझा करें

toxy Build Status Code Climate NPM js-standard-style

सक्रिय रूप से रखरखाव नहीं किया जा रहा है, नवीनतम node.js रनटाइम के साथ काम नहीं कर सकता। यदि आप toxy के रखरखाव में रुचि रखते हैं, तो कृपया एक मुद्दा खोलें।

हैक करने योग्य HTTP प्रॉक्सी जो सर्वर विफलता परिदृश्यों, सिस्टम लचीलापन परीक्षण और अप्रत्याशित नेटवर्क स्थितियों को सिम्युलेट करती है, node.js के लिए निर्मित।

यह मुख्य रूप से विफलता प्रतिरोध परीक्षण के लिए डिज़ाइन किया गया था, जब toxy किसी सिस्टम की दोष सहनशीलता और लचीलापन क्षमताओं को कवर करने के लिए विशेष रूप से उपयोगी हो जाता है, विशेष रूप से disruption-tolerant networks और service-oriented आर्किटेक्चर में, जहाँ toxy सेवाओं के बीच MitM प्रॉक्सी के रूप में कार्य कर सकता है ताकि विफलता इंजेक्ट कर सके।

toxy आपको poisons प्लग इन करने की अनुमति देता है, वैकल्पिक रूप से rules द्वारा फ़िल्टर किए गए, जो मूल रूप से आवश्यकतानुसार HTTP प्रवाह को इंटरसेप्ट और बदल सकते हैं, उस प्रक्रिया के बीच में कई बुरे कार्य करते हुए, जैसे बैंडविड्थ को सीमित करना, नेटवर्क पैकेट में देरी करना, नेटवर्क जिटर लेटेंसी इंजेक्ट करना या कस्टम एरर या स्टेटस कोड के साथ उत्तर देना। यह मुख्य रूप से L7 पर काम करता है, हालाँकि यह L3 नेटवर्क स्थितियों का अनुकरण कर सकता है।

toxy का programmatically या HTTP API के माध्यम से आसानी से उपयोग किया जा सकता है। यह rocky के ऊपर बनाया गया है, एक पूर्ण-सुविधा वाला मिडलवेयर-उन्मुख HTTP प्रॉक्सी, और यह connect/express में मानक मिडलवेयर के रूप में pluggable भी है।

node.js +4 की आवश्यकता है।

विषय सूची

  • विशेषताएं
  • परिचय
    • toxy क्यों?
    • अवधारणाएं
    • यह कैसे काम करता है
  • उपयोग
    • स्थापना
    • उदाहरण
  • बेंचमार्क
  • पॉइज़न
    • पॉइज़निंग स्कोप
    • पॉइज़निंग फेज़
    • अंतर्निहित पॉइज़न
      • लेटेंसी
      • इंजेक्ट रिस्पॉन्स
      • बैंडविड्थ
      • रेट लिमिट
      • स्लो रीड
      • स्लो ओपन
      • स्लो क्लोज़
      • थ्रॉटल
      • कनेक्शन को रद्द करें
      • टाइमआउट
    • पॉइज़न कैसे लिखें
  • नियम
    • अंतर्निहित नियम
      • संभावना
      • समय सीमा
      • विधि
      • कंटेंट टाइप
      • हेडर
      • प्रतिक्रिया हेडर
      • बॉडी
      • प्रतिक्रिया बॉडी
      • प्रतिक्रिया स्थिति
    • तीसरे पक्ष के नियम
    • नियम कैसे लिखें
  • प्रोग्रामेटिक API
  • HTTP API
    • उपयोग
    • प्राधिकरण
    • API
    • प्रोग्रामेटिक API
  • लाइसेंस

विशेषताएं

  • पूर्ण-विशेषताओं वाला HTTP/S प्रॉक्सी (rocky और http-proxy द्वारा समर्थित)
  • हैक करने योग्य और सुरुचिपूर्ण प्रोग्रामेटिक API (connect/express से प्रेरित)
  • बाहरी प्रबंधन और गतिशील कॉन्फ़िगरेशन के लिए एडमिन HTTP API
  • नेस्टेड कॉन्फ़िगरेशन के साथ विशेषता युक्त अंतर्निहित राउटर
  • नियम-आधारित फ़िल्टरिंग के साथ पदानुक्रमित और कम्पोज़ेबल पॉइज़निंग
  • पदानुक्रमित मिडलवेयर परत (दोनों वैश्विक और रूट स्कोप)
  • मिडलवेयर के माध्यम से आसानी से वर्धनीय (connect/express मिडलवेयर पर आधारित)
  • इनकमिंग और आउटगोइंग दोनों ट्रैफ़िक पॉइज़निंग का समर्थन करता है
  • अंतर्निहित पॉइज़न (बैंडविड्थ, एरर, एबॉर्ट, लेटेंसी, स्लो रीड...)
  • नियम-आधारित पॉइज़निंग (संभाव्यता, HTTP विधि, हेडर, बॉडी...)
  • तीसरे पक्ष के पॉइज़न और नियमों का समर्थन करता है
  • मिडलवेयर के माध्यम से अंतर्निहित बैलेंसर और ट्रैफ़िक इंटरसेप्टर
  • rocky से API और सुविधाएँ प्राप्त करता है
  • connect/express (और उनके अधिकांश मिडलवेयर) के साथ संगत
  • स्टैंडअलोन HTTP प्रॉक्सी के रूप में चलाने में सक्षम

परिचय

toxy क्यों?

बाज़ार में toxy जैसे कुछ अन्य समान समाधान हैं, लेकिन उनमें से अधिकांश उचित प्रोग्रामेटिक नियंत्रण प्रदान नहीं करते हैं और आमतौर पर हैक करने, कॉन्फ़िगर करने में आसान नहीं होते हैं या सीधे विस्तारशीलता के लिए बंद होते हैं। इसके अलावा, उन समाधानों में से अधिकांश केवल TCP L3 स्तर के स्टैक पर काम करते हैं, बजाय HTTP L7 प्रोटोकॉल के विशिष्ट डोमेन और प्रकृति में सामान्य आवश्यकताओं को कवर करने के लिए उच्च-स्तरीय एब्स्ट्रैक्शन प्रदान करने के, जैसा toxy प्रदान करने का प्रयास करता है। toxy एक शक्तिशाली हैक करने योग्य और विस्तारणीय समाधान लाता है जिसमें एक सुविधाजनक एब्स्ट्रैक्शन है, लेकिन HTTP प्रोटोकॉल प्रिमिटिव से आसानी से निपटने के लिए उचित निम्न-स्तरीय इंटरफ़ेस क्षमताओं को खोए बिना। toxy को composition, सरलता और extensibility के नियमों पर आधारित डिज़ाइन किया गया है। अपने अंतर्निहित पदानुक्रमित डोमेन-विशिष्ट मिडलवेयर परत के माध्यम से आप अपनी आवश्यकताओं के अनुसार toxy सुविधाओं को आसानी से बढ़ा सकते हैं।

अवधारणाएं

toxy दो निर्देश प्रस्तुत करता है: पॉइज़न और नियम।

पॉइज़न वह विशिष्ट तर्क है जो इनकमिंग या आउटगोइंग HTTP लेनदेन को संक्रमित करता है (उदा: लेटेंसी इंजेक्ट करना, एरर के साथ उत्तर देना)। एक HTTP लेनदेन एक या कई पॉइज़न द्वारा संक्रमित किया जा सकता है, और उन पॉइज़न को वैश्विक या रूट स्तर के ट्रैफ़िक दोनों को संक्रमित करने के लिए भी कॉन्फ़िगर किया जा सकता है।

नियम एक प्रकार के मिलान सत्यापन फ़िल्टर हैं जो यह निर्धारित करने के लिए HTTP अनुरोध/प्रतिक्रिया का निरीक्षण करते हैं कि दिए गए कुछ नियमों के अनुसार, HTTP लेनदेन को पॉइज़न किया जाना चाहिए या नहीं (उदा: हेडर मेल खाते हैं, क्वेरी पैरामीटर, विधि, बॉडी...)। नियमों का पुन: उपयोग किया जा सकता है और इनकमिंग और आउटगोइंग दोनों ट्रैफ़िक प्रवाहों पर लागू किया जा सकता है, जिसमें विभिन्न स्कोप शामिल हैं: वैश्विक, रूट या पॉइज़न स्तर।

यह कैसे काम करता है```

↓ ( Incoming request ) ↓ ↓ ||| ↓ ↓ +-------------+ ↓ ↓ | Toxy Router | ↓ -> Match the incoming request ↓ +-------------+ ↓ ↓ ||| ↓ ↓ +--------------------+ ↓ ↓ | Incoming phase | ↓ -> The proxy receives the request from the client ↓ |~~~~~~~~~~~~~~~~~~~~| ↓ ↓ | ---------------- | ↓ ↓ | | Exec Rules | | ↓ -> Apply configured rules for the incoming request ↓ | ---------------- | ↓ ↓ | ||| | ↓ ↓ | ---------------- | ↓ ↓ | | Exec Poisons | | ↓ -> If all rules passed, then poison the HTTP flow ↓ | ---------------- | ↓ ↓ +~~~~~~~~~~~~~~~~~~~~+ ↓ ↓ / \ ↓ ↓ \ / ↓ ↓ +--------------------+ ↓ ↓ | HTTP dispatcher | ↓ -> Forward the HTTP traffic to the target server, either poisoned or not ↓ +--------------------+ ↓ ↓ / \ ↓ ↓ \ / ↓ ↓ +--------------------+ ↓ ↓ | Outgoing phase | ↓ -> Receives response from target server ↓ |~~~~~~~~~~~~~~~~~~~~| ↓ ↓ | ---------------- | ↓ ↓ | | Exec Rules | | ↓ -> Apply configured rules for the outgoing request ↓ | ---------------- | ↓ ↓ | ||| | ↓ ↓ | ---------------- | ↓ ↓ | | Exec Poisons | | ↓ -> If all rules passed, then poison the HTTP flow before send it to the client ↓ | ---------------- | ↓ ↓ +~~~~~~~~~~~~~~~~~~~~+ ↓ ↓ ||| ↓ ↓ ( Send to the client ) ↓ -> Finally, send the request to the client, either poisoned or not

root@kitploit:~
## उपयोग

### स्थापना```
npm install toxy

उदाहरण

अधिक उपयोग के मामलों के लिए उदाहरण निर्देशिका देखें।```js var toxy = require('toxy') var poisons = toxy.poisons var rules = toxy.rules

// Create a new toxy proxy var proxy = toxy()

// Default server to forward incoming traffic proxy .forward('http://httpbin.org')

// Register global poisons and rules proxy .poison(poisons.latency({ jitter: 500 })) .rule(rules.probability(25))

// Register multiple routes proxy .get('/download/') .forward('http://files.myserver.net') .poison(poisons.bandwidth({ bps: 1024 })) .withRule(rules.headers({'Authorization': /^Bearer (.)$/i }))

// Infect outgoing traffic only (after the server replied properly) proxy .get('/image/*') .outgoingPoison(poisons.bandwidth({ bps: 512 })) .withRule(rules.method('GET')) .withRule(rules.timeThreshold({ duration: 1000, threshold: 1000 * 10 })) .withRule(rules.responseStatus({ range: [ 200, 400 ] }))

proxy .all('/api/*') .poison(poisons.rateLimit({ limit: 10, threshold: 1000 })) .withRule(rules.method(['POST', 'PUT', 'DELETE'])) // And use a different more permissive poison for GET requests .poison(poisons.rateLimit({ limit: 50, threshold: 1000 })) .withRule(rules.method('GET'))

// Handle the rest of the traffic proxy .all('/*') .poison(poisons.slowClose({ delay: 1000 })) .poison(poisons.slowRead({ bps: 128 })) .withRule(rules.probability(50))

proxy.listen(3000) console.log('Server listening on port:', 3000) console.log('Test it:', 'http://localhost:3000/image/jpeg')

root@kitploit:~
## बेंचमार्क

विवरण के लिए [toxy/benchmark](https://github.com/h2non/toxy/tree/master/benchmark) देखें।

## जहर

जहर होस्ट विशिष्ट तर्क होते हैं जो प्रॉक्सी सर्वर में HTTP लेन-देन को रोकते और बदलते हैं, लपेटते हैं, संशोधित करते हैं और/या रद्द करते हैं।
जहर को इनकमिंग या आउटगोइंग, या दोनों ट्रैफ़िक प्रवाहों पर लागू किया जा सकता है (देखें [जहर चरण](#poisoning-phases)).

जहर को विभिन्न HTTP परिदृश्यों के लिए संयोजित और पुन: उपयोग किया जा सकता है।
ये FIFO क्रम और अतुल्यकालिक रूप से निष्पादित होते हैं।

### जहर लगाने के स्कोप

`toxy` का दो अलग-अलग स्कोप पर आधारित एक पदानुक्रमित डिज़ाइन है: `global` और `route`।

**Global** स्कोप प्रॉक्सी सर्वर द्वारा प्राप्त सभी इनकमिंग HTTP ट्रैफ़िक को संदर्भित करता है, चाहे HTTP विधि या पथ कुछ भी हो।

**Route** स्कोप किसी विशिष्ट HTTP क्रिया और URI पथ से मेल खाने वाले किसी भी इनकमिंग ट्रैफ़िक को संदर्भित करता है।

जहर को दोनों स्कोप में प्लग किया जा सकता है, जिसका अर्थ है कि आप बेहतर सटीकता के साथ काम कर सकते हैं और जहर के दायरे को प्रतिबंधित कर सकते हैं,
उदाहरण के लिए, आप केवल कुछ मार्गों पर बैंडविड्थ सीमा जहर लागू करना चाह सकते हैं, जैसे `/download` या `/images`।

एक प्रदर्शित उदाहरण के लिए [routes.js](https://github.com/h2non/toxy/blob/master/examples/routes.js) देखें।

### जहर लगाने के चरण

जहर को इनकमिंग या आउटगोइंग ट्रैफ़िक प्रवाहों, या दोनों में भी प्लग किया जा सकता है।

**Incoming** जहर तब लागू किया जाता है जब ट्रैफ़िक प्रॉक्सी द्वारा प्राप्त किया गया है लेकिन अभी तक लक्ष्य सर्वर को अग्रेषित नहीं किया गया है।

**Outgoing** जहर उस ट्रैफ़िक को संदर्भित करता है जो लक्ष्य सर्वर को अग्रेषित किया गया है और
जब प्रॉक्सी उससे प्रतिक्रिया प्राप्त करता है, लेकिन वह प्रतिक्रिया अभी तक क्लाइंट को नहीं भेजी गई है।

इसका मूल रूप से अर्थ है कि आप अपने जहर को HTTP ट्रैफ़िक को संक्रमित करने के लिए प्लग कर सकते हैं
अनुरोध को लक्ष्य HTTP सर्वर को अग्रेषित करने या क्लाइंट को भेजने से पहले या बाद में।

यह आपको अनुरोध या सर्वर प्रतिक्रिया के आधार पर बेहतर और अधिक सटीक जहर लागू करने की अनुमति देता है।
उदाहरण के लिए, कुछ जहरों की प्रकृति को देखते हुए, जैसे `inject error`,
आप इसे लक्ष्य सर्वर प्रतिक्रिया के अनुसार सक्षम करना चाह सकते हैं (जैसे: कोई हेडर मौजूद है या नहीं)।

एक प्रदर्शित उदाहरण के लिए [poison-phases.js](https://github.com/h2non/toxy/blob/master/examples/poison-phases.js) देखें।

### अंतर्निहित जहर

#### विलंबता

<table>
<tr>
<td><b>नाम</b></td><td>latency</td>
</tr>
<tr>
<td><b>जहर चरण</b></td><td>इनकमिंग / आउटगोइंग</td>
</tr>
<tr>
<td><b>सर्वर तक पहुंचता है</b></td><td>true</td>
</tr>
</table>

HTTP प्रवाह को संक्रमित करता है जो प्रतिक्रिया में विलंबता जिटर इंजेक्ट करता है

**तर्क**:

- **options** `object`
  - **jitter** `number` - मिलीसेकंड में जिटर मान
  - **max** `number` - यादृच्छिक जिटर अधिकतम मान
  - **min** `number` - यादृच्छिक जिटर न्यूनतम मान```js
toxy.poison(toxy.poisons.latency({ jitter: 1000 }))
// Or alternatively using a random value
toxy.poison(toxy.poisons.latency({ max: 1000, min: 100 }))

प्रतिक्रिया इंजेक्ट करें

नामinject
विषाक्तता चरणआने वाला / जाने वाला
सर्वर तक पहुंचता हैfalse (केवल आने वाले विषाक्त के रूप में)

अनुरोध को लक्ष्य सर्वर पर भेजने से पहले उसे रोककर एक कस्टम प्रतिक्रिया इंजेक्ट करता है। सर्वर में उत्पन्न त्रुटियों को इंजेक्ट करने के लिए उपयोगी।

तर्क:

  • विकल्प object
    • code number - प्रतिक्रिया HTTP स्थिति कोड। डिफ़ॉल्ट 500
    • headers object - भेजने के लिए वैकल्पिक हेडर्स
    • body mixed - भेजने के लिए वैकल्पिक बॉडी डेटा। यह buffer या string हो सकता है
    • encoding string - बॉडी एन्कोडिंग। डिफ़ॉल्ट `utf8````js toxy.poison(toxy.poisons.inject({ code: 503, body: '{"error": "toxy injected error"}', headers: {'Content-Type': 'application/json'} }))
root@kitploit:~
#### बैंडविड्थ

<table>
<tr>
<td><b>नाम</b></td><td>bandwidth</td>
</tr>
<tr>
<td><b>विषाक्तता चरण</b></td><td>इनकमिंग / आउटगोइंग</td>
</tr>
<tr>
<td><b>सर्वर तक पहुँचता है</b></td><td>true</td>
</tr>
</table>

एक विशिष्ट समय सीमा के लिए आउटगोइंग HTTP ट्रैफ़िक में नेटवर्क पर भेजे गए बाइट्स की मात्रा को सीमित करता है।

यह पॉइज़न मूल रूप से [throttle](#throttle) का एक उपनाम है।

**तर्क**:

- **options** `object`
  - **bytes** `number` - भेजने के लिए बाइट्स के खंड की मात्रा. डिफ़ॉल्ट `1024`
  - **threshold** `number` - पैकेट समय सीमा मिलीसेकंड में. डिफ़ॉल्ट `1000````js
toxy.poison(toxy.poisons.bandwidth({ bytes: 512 }))

दर सीमा

नामrateLimit
विषाक्तता चरणincoming / outgoing
सर्वर तक पहुँचता हैtrue

प्रॉक्सी द्वारा एक निश्चित थ्रेशोल्ड समय अवधि में प्राप्त अनुरोधों की मात्रा को सीमित करता है। API सीमाओं का परीक्षण करने के लिए डिज़ाइन किया गया है। सामान्य X-RateLimit-* हेडर को उजागर करता है।

ध्यान दें कि यह बहुत ही सरल दर सीमा कार्यान्वयन है; वास्तव में सीमाएँ मेमोरी में संग्रहीत होती हैं, इसलिए पूरी तरह से अस्थायी हैं। कई सुविधाओं और सुसंगत दर सीमित करने वाले कार्यान्वयन npm में उपलब्ध हैं जिन्हें आप विष के रूप में प्लग इन कर सकते हैं। आपको टोकन बकेट एल्गोरिदम में भी रुचि हो सकती है।

तर्क:

  • options object
    • limit number - कुल अनुरोधों की संख्या। डिफ़ॉल्ट 10
    • threshold number - सीमा समय अवधि मिलीसेकंड में। डिफ़ॉल्ट 1000
    • message string - सीमा पहुँचने पर वैकल्पिक त्रुटि संदेश।
    • code number - सीमा पहुँचने पर HTTP स्थिति कोड। डिफ़ॉल्ट 429।```js toxy.poison(toxy.poisons.rateLimit({ limit: 5, threshold: 10 * 1000 }))
root@kitploit:~
#### धीमी पढ़ाई

<table>
<tr>
<td><b>नाम</b></td><td>slowRead</td>
</tr>
<tr>
<td><b>विषाक्तता चरण</b></td><td>incoming</td>
</tr>
<tr>
<td><b>सर्वर तक पहुँचता है</b></td><td>true</td>
</tr>
</table>

आने वाले पेलोड डेटा पैकेटों को धीरे-धीरे पढ़ता है। केवल गैर-GET अनुरोधों के लिए मान्य।

**तर्क**:

- **options** `object`
  - **chunk** `number` - पैकेट खंड का आकार बाइट्स में। डिफ़ॉल्ट `1024`
  - **threshold** `number` - सीमा समय-सीमा मिलीसेकंड में। डिफ़ॉल्ट `1000````js
toxy.poison(toxy.poisons.slowRead({ chunk: 2048, threshold: 1000 }))

Slow open

Name: slowOpen

NameslowOpen
Poisoning Phaseincoming
Reaches the servertrue

HTTP कनेक्शन की तैयार स्थिति में देरी करता है।

Arguments:

  • options object
    • delay number - कनेक्शन में मिलीसेकंड में देरी। डिफ़ॉल्ट 1000 है```js toxy.poison(toxy.poisons.slowOpen({ delay: 2000 }))
root@kitploit:~
#### धीमा बंद

<table>
<tr>
<td><b>नाम</b></td><td>slowClose</td>
</tr>
<tr>
<td><b>विषाक्तता चरण</b></td><td>आने वाला / जाने वाला</td>
</tr>
<tr>
<td><b>सर्वर तक पहुँचता है</b></td><td>true</td>
</tr>
</table>

HTTP कनेक्शन बंद संकेत (EOF) में विलंब करता है।

**तर्क**:

- **options** `object`
  - **delay** `number` - मिलीसेकंड में विलंब समय। डिफ़ॉल्ट `1000````js
toxy.poison(toxy.poisons.slowClose({ delay: 2000 }))

थ्रॉटल

नामथ्रॉटल
विषाक्तता चरणआने वाला / बाहर जाने वाला
सर्वर तक पहुँचता हैtrue

एक विशिष्ट थ्रेशोल्ड समय सीमा में नेटवर्क पर भेजे जाने वाले पैकेटों की मात्रा को प्रतिबंधित करता है।

तर्क:

  • options object
    • chunk number - बाइट्स में पैकेट चंक आकार। डिफ़ॉल्ट 1024 है।
    • delay object - मिलीसेकंड में डेटा चंक विलंब समय सीमा। डिफ़ॉल्ट 100 है।```js toxy.poison(toxy.poisons.throttle({ chunk: 2048, threshold: 1000 }))
root@kitploit:~
#### कनेक्शन समाप्त करें

<table>
<tr>
<td><b>नाम</b></td><td>abort</td>
</tr>
<tr>
<td><b>विषाक्ति चरण</b></td><td>इनकमिंग / आउटगोइंग</td>
</tr>
<tr>
<td><b>सर्वर तक पहुँचता है</b></td><td>गलत (केवल इनकमिंग पॉइजन के रूप में)</td>
</tr>
</table>

TCP कनेक्शन को समाप्त करता है। निचले स्तर के दृष्टिकोण से, यह सर्वर पर सॉकेट को नष्ट कर देगा, केवल TCP स्तर पर काम करता है और कोई विशिष्ट HTTP एप्लिकेशन स्तर डेटा नहीं भेजता है।

**तर्क**:

- **options** `object`
  - **delay** `number` - दिए गए मिलीसेकंड की प्रतीक्षा करने के बाद TCP कनेक्शन समाप्त करता है। डिफ़ॉल्ट `0` है।
  - **next** `boolean` - यदि `true` है, तो कनेक्शन समाप्त कर दिया जाएगा यदि लक्ष्य सर्वर को `delay` पैरामीटर समय से अधिक समय लगता है। डिफ़ॉल्ट `false` है।
  - **error** `Error` - सॉकेट को नष्ट करते समय उपयोग करने के लिए कस्टम आंतरिक node.js त्रुटि। डिफ़ॉल्ट `null` है।```js
// Basic connection abort
toxy.poison(toxy.poisons.abort())
// Abort after a delay
toxy.poison(toxy.poisons.abort(1000))
// In this case, the socket will be closed if
// the target server takes more than
// 2 seconds to respond
toxy.poison(toxy.poisons.abort({ delay: 2000, next: true }))

Timeout

नामtimeout
विषाक्ति चरणincoming / outgoing
सर्वर तक पहुँचता हैtrue

प्रतिक्रिया समय-सीमा को परिभाषित करता है। धीमे सर्वरों पर अग्रेषित करते समय उपयोगी।

तर्क:

  • milliseconds number - मिलीसेकंड में टाइमआउट सीमा```js toxy.poison(toxy.poisons.timeout(5000))
root@kitploit:~
### पॉइज़न कैसे लिखें

पॉइज़न को मानक मिडलवेयर फंक्शन के रूप में लागू किया जाता है, जिसका इंटरफ़ेस connect/express मिडलवेयर के समान होता है।

कुछ पॉइज़न को लागू करना आसान नहीं है, इसलिए आपको node.js [http](https://nodejs.org/api/http.html) मॉड्यूल और इसके API से परिचित होना होगा।

यहाँ सर्वर लेटेंसी पॉइज़न का एक सरल उदाहरण दिया गया है:```js
var toxy = require('toxy')

function customLatencyPoison (delay) {
  // We name the function since toxy uses it as identifier to get/disable/remove it in the future
  return function customLatency (req, res, next) {
    var timeout = setTimeout(process, delay)
    req.once('close', onClose)

    function onClose () {
      clearTimeout(timeout)
      next('client connection closed')
    }

    function process () {
      req.removeListener('close', onClose)
      next()
    }
  }
}

var proxy = toxy()

// Register and enable the poison
proxy
  .get('/foo')
  .poison(customLatencyPoison(2000))

आप वैकल्पिक रूप से बिल्ट-इन पॉइज़न को अपने स्वयं के पॉइज़न के साथ बढ़ा सकते हैं:```js toxy.addPoison(customLatency)

// Then you can use it as a built-in poison proxy .get('/foo') .poison(toxy.poisons.customLatency)

root@kitploit:~
एक विशिष्ट वास्तविक उदाहरण के लिए, [built-in poisons](https://github.com/h2non/toxy/tree/master/lib/poisons) कार्यान्वयन को देखें।

## नियम

नियम सरल मान्यता फिल्टर हैं जो आने वाले या बाहर जाने वाले HTTP ट्रैफ़िक का निरीक्षण करते हैं ताकि यह निर्धारित किया जा सके कि, कुछ नियमों (जैसे: विधि, हेडर, क्वेरी पैरामीटर, बॉडी आदि से मेल खाता है) के आधार पर, वर्तमान HTTP लेन-देन को जहर दिया जाना चाहिए या नहीं, नियम के समाधान मान के आधार पर।

नियम विषाक्तता के विभिन्न परिदृश्यों के बीच तर्क को संयोजित, अलग और पुन: उपयोग करने के लिए उपयोगी हैं।

नियमों को वैश्विक, मार्ग या यहां तक कि जहर के दायरे में लागू किया जा सकता है, और यह [विषाक्तता के चरणों](#poisoning-phases) दोनों पर भी लागू होता है।

नियम FIFO क्रम में निष्पादित होते हैं। उनका मूल्यांकन तर्क JavaScript में `Array#every()` के समतुल्य है: विषाक्तता के साथ आगे बढ़ने के लिए सभी नियमों को पास होना चाहिए।

### अंतर्निहित नियम

#### संभावना

<table>
<tr>
<td><b>नाम</b></td><td>probability</td>
</tr>
<tr>
<td><b>विषाक्तता चरण</b></td><td>incoming / outgoing</td>
</tr>
</table>

यादृच्छिक संभाव्यता द्वारा नियम को सक्षम करता है। यादृच्छिक विषाक्तता के लिए उपयोगी।

**तर्क**:

- **percentage** `number` - फ़िल्टरिंग का प्रतिशत। डिफ़ॉल्ट `50````js
var rule = toxy.rules.probability(85)
toxy.rule(rule)

समय सीमा

नामtimeThreshold
ज़हर चरणincoming / outgoing

एक विशिष्ट समय सीमा और अवधि के आधार पर ज़हर को सक्षम करने का सरल नियम। उदाहरण के लिए, आप एक समय सीमा (जैसे: 1 मिनट) के भीतर एक विशिष्ट समय (जैसे: 1 सेकंड) के लिए कुछ ज़हर सक्षम कर सकते हैं।

तर्क:

  • options object
    • duration number - समय अंतराल मिलीसेकंड में सक्षम करें। डिफ़ॉल्ट 1000
    • threshold number - ज़हर को पुनः सक्षम करने से पहले प्रतीक्षा करने के लिए मिलीसेकंड में समय सीमा। डिफ़ॉल्ट `10000````js // Enable the poisoning only 100 milliseconds per each 10 seconds proxy.rule(toxy.rules.timeThreshold(100)) // Enable poisoning during 1 second every minute proxy.rule(toxy.rules.timeThreshold({ duration: 1000, period: 1000 * 60 }))
root@kitploit:~
#### विधि

<table>
<tr>
<td><b>नाम</b></td><td>method</td>
</tr>
<tr>
<td><b>विष चरण</b></td><td>आने वाला / बाहर जाने वाला</td>
</tr>
</table>

HTTP विधि द्वारा फ़िल्टर करता है।

**तर्क**:

- **method** `string|array` - फ़िल्टर करने के लिए विधि या विधियाँ।```js
var method = toxy.rules.method(['GET', 'POST'])
toxy.rule(method)

Content Type

हेडर के अनुसार सामग्री प्रकार को फ़िल्टर करता है। यह मौजूद होना चाहिए।

Arguments:

  • value string|regexp - मिलान करने के लिए हेडर मान।```js var rule = toxy.rules.contentType('application/json') toxy.rule(rule)
root@kitploit:~
#### Headers

<table>
<tr>
<td><b>Name</b></td><td>headers</td>
</tr>
<tr>
<td><b>Poison Phase</b></td><td>incoming / outgoing</td>
</tr>
</table>

अनुरोध हेडर्स द्वारा फ़िल्टर करें।

**Arguments**:

- **headers** `object` - कुंजी-मान जोड़ी द्वारा मिलान करने के लिए हेडर्स। `value` एक string, regexp, `boolean` या `function(headerValue, headerName) => boolean` हो सकता है।```js
var matchHeaders = {
  'content-type': /^application/\json/i,
  'server': true, // meaning it should be present,
  'accept': function (value, key) {
    return value.indexOf('text') !== -1
  }
}

var rule = toxy.rules.headers(matchHeaders)
toxy.rule(rule)

प्रतिक्रिया हेडर

नामresponseHeaders
विष चरणoutgoing

लक्ष्य सर्वर से प्रतिक्रिया हेडर द्वारा फ़िल्टर करें। headers नियम के समान, लेकिन आउटगोइंग अनुरोध का मूल्यांकन करते हुए।

तर्क:

  • headers object - कुंजी-मान जोड़ी द्वारा मिलान करने के लिए हेडर। value एक string, regexp, boolean या function(headerValue, headerName) => boolean हो सकता है।```js var matchHeaders = { 'content-type': /^application/\json/i, 'server': true, // meaning it should be present, 'accept': function (value, key) { return value.indexOf('text') !== -1 } }

var rule = toxy.rules.responseHeaders(matchHeaders) toxy.rule(rule)

root@kitploit:~
#### बॉडी

<table>
<tr>
<td><b>नाम</b></td><td>body</td>
</tr>
<tr>
<td><b>विष चरण</b></td><td>आने वाला / बाहर जाने वाला</td>
</tr>
</table>

दिए गए `string`, `regexp` या कस्टम फ़िल्टर `function` द्वारा आने वाले बॉडी पेलोड का मिलान करें।

यह नियम काफी सरल है, इसलिए जटिल बॉडी मिलान (जैसे: JSON स्कीमा के विरुद्ध मान्य करना) के लिए आपको शायद अपना खुद का नियम लिखना चाहिए।

**तर्क**:

- **match** `string|regexp|function` - मिलान करने के लिए बॉडी सामग्री
- **limit** `string` - वैकल्पिक। मानव-पठनीय आकार में बॉडी सीमा। उदा: `5mb`
- **encoding** `string` - बॉडी एन्कोडिंग। डिफ़ॉल्ट `utf8`
- **length** `number` - बॉडी लंबाई। डिफ़ॉल्ट `Content-Length` हेडर से लिया गया```js
var rule = toxy.rules.body('"hello":"world"')
toxy.rule(rule)

// Or using a filter function returning a boolean
var rule = toxy.rules.body(function contains(body) {
  return body.indexOf('hello') !== -1
})
toxy.rule(rule)

प्रतिक्रिया निकाय

नामresponseBody
विष चरणoutgoing

दिए गए string, regexp या कस्टम फ़िल्टर function द्वारा आउटगोइंग बॉडी पेलोड का मिलान करें।

तर्क:

  • match string|regexp|function - मिलान करने के लिए बॉडी सामग्री
  • encoding string - बॉडी एन्कोडिंग। डिफ़ॉल्ट utf8
  • length number - बॉडी लंबाई। डिफ़ॉल्ट Content-Length हेडर से लिया गया```js var rule = toxy.rules.responseBody('"hello":"world"') toxy.rule(rule)

// Or using a filter function returning a boolean var rule = toxy.rules.responseBody(function contains(body) { return body.indexOf('hello') !== -1 }) toxy.rule(rule)

root@kitploit:~
#### प्रतिक्रिया स्थिति

<table>
<tr>
<td><b>नाम</b></td><td>responseStatus</td>
</tr>
<tr>
<td><b>ज़हर चरण</b></td><td>outgoing</td>
</tr>
</table>

लक्ष्य सर्वर से प्रतिक्रिया स्थिति का मूल्यांकन करता है।
केवल outgoing ज़हर पर लागू होता है।

**तर्क**:

- **range** `array` - मिलान करने के लिए स्थिति कोड की जोड़ी। डिफ़ॉल्ट `[200, 300]`.
- **lower** `number` - स्थिति की तुलना `से कम` संचालन के रूप में करें। डिफ़ॉल्ट `null`.
- **higher** `number` - स्थिति की तुलना `से अधिक` संचालन के रूप में करें। डिफ़ॉल्ट `null`.
- **value** `number` - कड़ी समानता तुलना का उपयोग करके मिलान करने के लिए स्थिति कोड। डिफ़ॉल्ट `null`.
- **include** `array` - मिलान करने के लिए स्थिति कोड की अक्रमित सूची। कस्टम स्थिति निर्दिष्ट करने के लिए उपयोगी। डिफ़ॉल्ट `null````js
// Strict evaluation of the status code
toxy.rule(toxy.rules.responseBody(200))
// Using a range of valid status
toxy.rule(toxy.rules.responseBody([200, 204]))
// Using relational comparison
toxy.rule(toxy.rules.responseBody({ higher: 199, lower: 400 }))
// Custom unordered status code to match
toxy.rule(toxy.rules.responseBody({ include: [200, 204, 400, 404] }))

तृतीय-पक्ष नियम

समुदाय द्वारा प्रदान किए गए उपलब्ध तृतीय-पक्ष नियमों की सूची। PR का स्वागत है।

  • IP - क्लाइंट IP पते के आधार पर poisons को सक्षम/अक्षम करें (CIDR, सबनेट, रेंज का समर्थन करता है...)।

नियम कैसे लिखें

नियम सरल मिडलवेयर फ़ंक्शन होते हैं जो एक boolean मान के साथ अतुल्यकालिक रूप से हल होते हैं, यह निर्धारित करने के लिए कि किसी दिए गए HTTP लेन-देन को जहर देते समय अनदेखा किया जाना चाहिए या नहीं।

आपके नियम को मिडलवेयर में next(err, shouldIgnore) फ़ंक्शन को कॉल करके boolean पैरामीटर के साथ हल करना होगा, यदि नियम से मेल नहीं खाता है और जहर लागू नहीं होना चाहिए तो true मान पास करता है, और इस प्रकार अगले मिडलवेयर स्टैक के साथ जारी रखता है।

यहाँ एक सरल नियम का उदाहरण है जो HTTP विधि से मेल खाता है यह निर्धारित करने के लिए कि:```js var toxy = require('toxy')

function customMethodRule(matchMethod) { /**

  • We name the function since it's used by toxy to identify the rule to get/disable/remove it in the future */ return function customMethodRule(req, res, next) { var shouldIgnore = req.method !== matchMethod next(null, shouldIgnore) } }

var proxy = toxy()

// Register and enable the rule proxy .get('/foo') .rule(customMethodRule('GET')) .poison(/* ... */)

root@kitploit:~
आप वैकल्पिक रूप से अंतर्निहित नियमों को अपने स्वयं के नियमों के साथ विस्तारित कर सकते हैं:```js
toxy.addRule(customMethodRule)

// Then you can use it as a built-in poison
proxy
  .get('/foo')
  .rules(toxy.rules.customMethodRule)

For featured real examples, take a look to the built-in rules implementation

प्रोग्रामेटिक API

toxy API पूरी तरह से rocky API पर आधारित है। दूसरे शब्दों में, आप rocky द्वारा मूल रूप से प्रदान किए गए किसी भी तरीके, सुविधाओं और मिडलवेयर लेयर का उपयोग कर सकते हैं।

toxy([ options ])

एक नया toxy प्रॉक्सी बनाएँ।

समर्थित options के लिए, कृपया rocky documentation देखें।```js var toxy = require('toxy')

toxy({ forward: 'http://server.net', timeout: 30000 })

toxy .get('/foo') .poison(toxy.poisons.latency(1000)) .withRule(toxy.rules.contentType('json')) .forward('http://foo.server')

toxy .post('/bar') .poison(toxy.poisons.bandwidth({ bps: 1024 })) .withRule(toxy.rules.probability(50)) .forward('http://bar.server')

toxy .post('/boo') .outgoingPoison(toxy.poisons.bandwidth({ bps: 1024 })) .withRule(toxy.rules.method('GET')) .forward('http://boo.server')

toxy.all('/*')

toxy.listen(3000)

root@kitploit:~
#### toxy#get(path, [ middleware... ])
Return: `ToxyRoute`

`GET` विधि के लिए एक नया रूट पंजीकृत करें।

#### toxy#post(path, [ middleware... ])
Return: `ToxyRoute`

`POST` विधि के लिए एक नया रूट पंजीकृत करें।

#### toxy#put(path, [ middleware... ])
Return: `ToxyRoute`

`PUT` विधि के लिए एक नया रूट पंजीकृत करें।

#### toxy#patch(path, [ middleware... ])
Return: `ToxyRoute`

#### toxy#delete(path, [ middleware... ])
Return: `ToxyRoute`

`DELETE` विधि के लिए एक नया रूट पंजीकृत करें।

#### toxy#head(path, [ middleware... ])
Return: `ToxyRoute`

`HEAD` विधि के लिए एक नया रूट पंजीकृत करें।

#### toxy#all(path, [ middleware... ])
Return: `ToxyRoute`

किसी भी विधि के लिए एक नया रूट पंजीकृत करें।

#### toxy#poisons `=>` Object

बिल्ट-इन पॉइज़न के साथ एक मैप प्रकट करता है। प्रोटोटाइप उपनाम `toxy.poisons`

#### toxy#rules `=>` Object

बिल्ट-इन पॉइज़न के साथ एक मैप प्रकट करता है। प्रोटोटाइप उपनाम `toxy.rules`

#### toxy#forward(url)

प्रॉक्सी द्वारा प्राप्त आने वाले ट्रैफ़िक को अग्रेषित करने के लिए एक URL परिभाषित करें।

#### toxy#balance(urls)

एकाधिक सर्वरों पर अग्रेषित करें, उनके बीच संतुलन बनाए रखें।

अधिक जानकारी के लिए, [rocky docs](https://github.com/h2non/rocky#programmatic-api) देखें।

#### toxy#replay(url)

एक नया रीप्ले सर्वर परिभाषित करें।
एकाधिक रीप्ले सर्वर परिभाषित करने के लिए आप इस विधि को कई बार कॉल कर सकते हैं।

अधिक जानकारी के लिए, [rocky docs](https://github.com/h2non/rocky#programmatic-api) देखें।

#### toxy#use(middleware)

एक कस्टम मिडलवेयर प्लग इन करें।

अधिक जानकारी के लिए, [rocky docs](https://github.com/h2non/rocky#middleware-layer) देखें।

#### toxy#useResponse(middleware)

एक रिस्पॉन्स आउटगोइंग ट्रैफ़िक मिडलवेयर प्लग इन करें।

अधिक जानकारी के लिए, [rocky docs](https://github.com/h2non/rocky#middleware-layer) देखें।

#### toxy#useReplay(middleware)

एक रीप्ले ट्रैफ़िक मिडलवेयर प्लग इन करें।

अधिक जानकारी के लिए, [rocky docs](https://github.com/h2non/rocky#middleware-layer) देखें।

#### toxy#requestBody(middleware)

आने वाले अनुरोध निकाय (request body) को इंटरसेप्ट करें। इसे चलते-फिरते संशोधित करने के लिए उपयोगी।

अधिक जानकारी के लिए, [rocky docs](https://github.com/h2non/rocky#programmatic-api) देखें।

#### toxy#responseBody(middleware)

बाहर जाने वाले प्रतिक्रिया निकाय (response body) को इंटरसेप्ट करें। इसे चलते-फिरते संशोधित करने के लिए उपयोगी।

अधिक जानकारी के लिए, [rocky docs](https://github.com/h2non/rocky#programmatic-api) देखें।

#### toxy#middleware()

connect/express के साथ उपयोग करने के लिए एक मानक मिडलवेयर लौटाता है।

#### toxy#host(host)

`Host` हेडर को एक कस्टम मान से ओवरराइट करें। `forwardHost` विकल्प के समान।

#### toxy#redirect(url)

ट्रैफ़िक को दिए गए URL पर रीडायरेक्ट करें।

#### toxy#findRoute(routeIdOrPath, [ method ])

रूट को ID या पथ और विधि द्वारा खोजें।

#### toxy#listen(port)

बिल्ट-इन HTTP सर्वर प्रारंभ करता है, एक विशिष्ट TCP पोर्ट पर सुनता है।

#### toxy#close([ callback ])

HTTP सर्वर बंद करता है।

#### toxy#poison(poison)
Alias: `usePoison`, `useIncomingPoison`

[आने वाले](#poisoning-phases) ट्रैफ़िक को संक्रमित करने के लिए एक नया पॉइज़न पंजीकृत करें।

#### toxy#outgoingPoison(poison)
Alias: `useOutgoingPoison`, `responsePoison`

[बाहर जाने वाले](#poisoning-phases) ट्रैफ़िक को संक्रमित करने के लिए एक नया पॉइज़न पंजीकृत करें।

#### toxy#rule(rule)
Alias: `useRule`

एक नया नियम पंजीकृत करें।

#### toxy#withRule(rule)
Aliases: `ifRule`, `whenRule`, `poisonRule`, `poisonFilter`

नवीनतम पंजीकृत पॉइज़न के लिए एक नया नियम लागू करें।

#### toxy#enable(poison)

नाम पहचानकर्ता द्वारा एक पॉइज़न सक्षम करें।

#### toxy#disable(poison)

नाम पहचानकर्ता द्वारा एक पॉइज़न अक्षम करें।

#### toxy#remove(poison)
Return: `boolean`

नाम पहचानकर्ता या वस्तु संदर्भ द्वारा एक आने वाले ट्रैफ़िक पॉइज़न को हटाएं।

#### toxy#removeOutgoing(poison)
Return: `boolean`

नाम पहचानकर्ता या वस्तु संदर्भ द्वारा एक बाहर जाने वाले ट्रैफ़िक पॉइज़न को हटाएं।

#### toxy#isEnabled(poison)
Return: `boolean`

जांचता है कि नाम पहचानकर्ता द्वारा एक पॉइज़न सक्षम है या नहीं।

#### toxy#disableAll()
Alias: `disablePoisons`

सभी पंजीकृत पॉइज़न को अक्षम करें।

#### toxy#getPoison(name)
Return: `Directive|null`

नाम पहचानकर्ता द्वारा स्टैक में पंजीकृत पॉइज़न खोजता और प्राप्त करता है।

#### toxy#getIncomingPoison(name)
Return: `Directive|null`

नाम पहचानकर्ता द्वारा स्टैक में पंजीकृत `incoming` पॉइज़न खोजता और प्राप्त करता है।

#### toxy#getOutgoingPoison(name)
Return: `Directive|null`

नाम पहचानकर्ता द्वारा स्टैक में पंजीकृत `outgoing` पॉइज़न खोजता और प्राप्त करता है।

#### toxy#getPoisons()
Return: `array<Directive>`

पंजीकृत पॉइज़न की एक सरणी लौटाता है।

#### toxy#getIncomingPoisons()
Return: `array<Directive>`

पंजीकृत `incoming` पॉइज़न की एक सरणी लौटाता है।

#### toxy#getOutgoingPoisons()
Return: `array<Directive>`

पंजीकृत `outgoing` पॉइज़न की एक सरणी लौटाता है।

#### toxy#flush()
Alias: `flushPoisons`

आने वाले और बाहर जाने वाले दोनों ट्रैफ़िक प्रवाहों के लिए सभी पंजीकृत पॉइज़न हटाएं।

#### toxy#enableRule(rule)

नाम पहचानकर्ता द्वारा एक नियम सक्षम करें।

#### toxy#disableRule(rule)

नाम पहचानकर्ता द्वारा एक नियम अक्षम करें।

#### toxy#removeRule(rule)
Return: `boolean`

नाम पहचानकर्ता द्वारा एक नियम हटाएं।

#### toxy#disableRules()

सभी पंजीकृत नियमों को अक्षम करें।

#### toxy#isRuleEnabled(rule)
Return: `boolean`

जांचता है कि दिया गया नियम नाम पहचानकर्ता द्वारा सक्षम है या नहीं।

#### toxy#getRule(rule)
Return: `Directive|null`

नाम पहचानकर्ता द्वारा स्टैक में पंजीकृत नियम खोजता और प्राप्त करता है।

#### toxy#getRules()
Return: `array<Directive>`

`Directive` के रूप में लिपटे पंजीकृत नियमों के साथ एक सरणी लौटाता है।

#### toxy#flushRules()

सभी नियम हटाएं।

### toxy.addPoison(name, fn)

बिल्ट-इन पॉइज़न का विस्तार करें।

### toxy.addRule(name, fn)

बिल्ट-इन नियमों का विस्तार करें।

### toxy.poisons `=>` Object

बिल्ट-इन पॉइज़न के साथ एक मैप प्रकट करता है।

### toxy.rules `=>` Object

बिल्ट-इन नियमों के साथ एक मैप प्रकट करता है।

### toxy.VERSION `=>` String

वर्तमान toxy सिमैंटिक वर्शन।

### ToxyRoute

`ToxyRoute` वही इंटरफ़ेस प्रकट करता है जो `Toxy` ग्लोबल इंटरफ़ेस है, यह केवल कुछ रूट स्तर के [अतिरिक्त विधियाँ](https://github.com/h2non/rocky#routepath) जोड़ता है।

`ToxyRoute` API के विरुद्ध आपके द्वारा किए गए आगे के कार्य केवल रूट-स्तर (नेस्टेड) पर लागू होंगे। दूसरे शब्दों में: आप पहले से ही API जानते हैं।

यह उदाहरण संभवतः संदेहों को स्पष्ट करेगा:```js
var toxy = require('toxy')
var proxy = toxy()

// Now using the global API
proxy
  .forward('http://server.net')
  .poison(toxy.poisons.bandwidth({ bps: 1024 }))
  .rule(toxy.rules.method('GET'))

// Now create a route
var route = proxy
  .get('/foo')
  .toPath('/bar') // Route-level API method
  .host('server.net') // Route-level API method
  .forward('http://new.server.net')

// Now using the ToxyRoute interface
route
  .poison(toxy.poisons.bandwidth({ bps: 512 }))
  .rule(toxy.rules.contentType('json'))

Directive(middlewareFn)

पॉइज़न और नियमों के लिए आंतरिक रूप से उपयोग किया जाने वाला एक सुविधाजनक रैपर।

आमतौर पर आपको इस इंटरफ़ेस को जानने की आवश्यकता नहीं है, लेकिन हैकिंग उद्देश्यों या अधिक निम्न-स्तरीय क्रियाओं के लिए उपयोगी हो सकता है।

Directive#enable()

वापसी: boolean

Directive#disable()

वापसी: boolean

Directive#isEnabled()

वापसी: boolean

Directive#rule(rule)

उपनाम: filter

Directive#handler()

वापसी: function(req, res, next)

HTTP API

toxy HTTP API JSON API सम्मेलनों का पालन करता है, जिसमें संसाधन-आधारित हाइपरमीडिया लिंकिंग शामिल है।

उपयोग

एक विशिष्ट उपयोग के मामले के लिए, admin server उदाहरण देखें।```js const toxy = require('toxy')

// Create the toxy admin server var admin = toxy.admin({ cors: true }) admin.listen(9000)

// Create the toxy proxy var proxy = toxy() proxy.listen(3000)

// Add the toxy instance to be managed by the admin server admin.manage(proxy)

// Then configure the proxy proxy .forward('http://my.target.net')

proxy .get('/slow') .poison(toxy.poisons.bandwidth({ bps: 1024 }))

// Handle the rest of the traffic proxy .all('/*') .poison(toxy.poisons.bandwidth({ bps: 1024 * 5 }))

console.log('toxy proxy listening on port:', 3000) console.log('toxy admin server listening on port:', 9000)

root@kitploit:~
For more details about the admin programmatic API, see [below](#programmatic-api-1).

### प्राधिकरण

HTTP API को अनधिकृत क्लाइंट्स से सुरक्षित किया जा सकता है।
अधिकृत क्लाइंट्स को `API-Key` या `Authorization` HTTP हेडर के माध्यम से API कुंजी टोकन परिभाषित करना होगा।

इसे सक्षम करने के लिए, आपको बस निम्नलिखित विकल्पों को `toxy` एडमिन सर्वर पर पास करने चाहिए:```js
const toxy = require('toxy')

const opts = { apiKey: 's3cr3t' }
var admin = toxy.admin(opts)

admin.listen(9000)
console.log('protected toxy admin server listening on port:', 9000)

API

पदानुक्रम:

  • सर्वर - प्रबंधित toxy इंस्टेंसेस
    • नियम - वैश्विक रूप से लागू नियम
    • पॉइज़न - वैश्विक रूप से लागू पॉइज़न
      • नियम - पॉइज़न-विशिष्ट नियम
    • रूट - कॉन्फ़िगर किए गए रूट्स की सूची
      • रूट - प्रत्येक विशिष्ट रूट के लिए ऑब्जेक्ट
        • नियम - रूट-स्तरीय पंजीकृत नियम
        • पॉइज़न - रूट-स्तरीय पंजीकृत पॉइज़न
          • नियम - रूट-स्तरीय पॉइज़न-विशिष्ट नियम

GET /

सर्वर

GET /servers

GET /servers/:id

नियम

GET /servers/:id/rules

POST /servers/:id/rules

स्वीकार करता है: application/json

उदाहरण पेलोड:```js { "name": "method", "options": "GET" }

root@kitploit:~
#### DELETE /servers/:id/rules

#### GET /servers/:id/rules/:id

#### DELETE /servers/:id/rules/:id

### विष

#### GET /servers/:id/poison

#### POST /servers/:id/poisons
स्वीकार करता है: `application/json`

उदाहरण पेलोड:```js
{
  "name": "latency",
  "phase": "outgoing",
  "options": { "jitter": 1000 }
}

DELETE /servers/:id/poisons

GET /servers/:id/poisons/:id

DELETE /servers/:id/poisons/:id

GET /servers/:id/poisons/:id/rules

POST /servers/:id/poisons/:id/rules

स्वीकार करता है: application/json

उदाहरण पेलोड:```js { "name": "method", "options": "GET" }

root@kitploit:~
#### DELETE /servers/:id/poisons/:id/rules

#### GET /servers/:id/poisons/:id/rules/:id

#### DELETE /servers/:id/poisons/:id/rules/:id

### Routes

#### GET /servers/:id/routes

#### POST /servers/:id/routes
स्वीकार करता है: `application/json`

उदाहरण पेलोड:```js
{
  "path": "/foo", // Required
  "method": "GET", // use ALL for all the methods
  "forward": "http://my.server", // Optional custom forward server URL
}

DELETE /servers/:id/routes

GET /servers/:id/routes/:id

DELETE /servers/:id/routes/:id

रूट नियम

GET /servers/:id/routes/:id/rules

POST /servers/:id/routes/:id/rules

स्वीकार करता है: application/json

उदाहरण payload:```js { "name": "method", "options": "GET" }

root@kitploit:~
#### DELETE /servers/:id/routes/:id/rules

#### GET /servers/:id/routes/:id/rules/:id

#### DELETE /servers/:id/routes/:id/rules/:id

### रूट पॉइज़न

#### GET /servers/:id/routes/:id/poisons

#### POST /servers/:id/routes/:id/poisons
स्वीकार करता है: `application/json`

उदाहरण पेलोड:```js
{
  "name": "latency",
  "phase": "outgoing",
  "options": { "jitter": 1000 }
}

DELETE /servers/:id/routes/:id/poisons

GET /servers/:id/routes/:id/poisons/:id

DELETE /servers/:id/routes/:id/poisons/:id

GET /servers/:id/routes/:id/poisons/:id/rules

POST /servers/:id/routes/:id/poisons/:id/rules

स्वीकार करता है: application/json

उदाहरण पेलोड:```js { "name": "method", "options": "GET" }

root@kitploit:~
#### DELETE /servers/:id/routes/:id/poisons/:id/rules

#### GET /servers/:id/routes/:id/poisons/:id/rules/:id

#### DELETE /servers/:id/routes/:id/poisons/:id/rules/:id

### प्रोग्रामेटिक API

बिल्ट-इन HTTP एडमिन सर्वर विस्तारशीलता और हैकिंग उद्देश्यों के लिए एक सरल इंटरफ़ेस भी प्रदान करता है।
उदाहरण के लिए, आप एडमिन सर्वर में अतिरिक्त मिडलवेयर जोड़ सकते हैं, या नए रूट रजिस्टर कर सकते हैं।

#### toxy.admin([ opts ])
रिटर्न करता है: `Admin`

**समर्थित विकल्प**:

- **apiKey** `string` - सर्वर को सुरक्षित करने के लिए वैकल्पिक API कुंजी
- **port** `number` - वैकल्पिक। TCP पोर्ट सुनने के लिए
- **cors** `boolean` - वेब ब्राउज़र एक्सेस के लिए CORS सक्षम करें
- **middleware** `array<function>` - अतिरिक्त मिडलवेयर प्लग इन करें
- **ssl** `object` - Node.js HTTPS सर्वर [TLS विकल्प](https://nodejs.org/api/tls.html#tls_tls_createserver_options_secureconnectionlistener)।

##### Admin#listen([ port, host ])

नेटवर्क पर सुनना शुरू करें।

##### Admin#manage(toxy)

एक `toxy` सर्वर इंस्टेंस प्रबंधित करें।

##### Admin#find(toxy)

एक toxy इंस्टेंस खोजें। toxy सर्वर ID या toxy इंस्टेंस स्वीकार करता है।

##### Admin#remove(toxy)

एक toxy इंस्टेंस का प्रबंधन बंद करें।

##### Admin#use(...middleware)

एक मिडलवेयर रजिस्टर करें।

##### Admin#param(...middleware)

एक पैराम मिडलवेयर रजिस्टर करें।

##### Admin#get(path, [ ...middleware ])

GET रूट रजिस्टर करें।

##### Admin#post(path, [ ...middleware ])

POST रूट रजिस्टर करें।

##### Admin#put(path, [ ...middleware ])

PUT रूट रजिस्टर करें।

##### Admin#delete(path, [ ...middleware ])

DELETE रूट रजिस्टर करें।

##### Admin#patch(path, [ ...middleware ])

PATCH रूट रजिस्टर करें।

##### Admin#all(path, [ ...middleware ])

कोई भी HTTP मेथड स्वीकार करने वाला रूट रजिस्टर करें।

##### Admin#middleware(req, res, next)

connect/express के साथ प्लग इन करने के लिए मिडलवेयर।

##### Admin#close(cb)

सर्वर बंद करें।

## लाइसेंस

MIT - टॉमस अपरिसियो

[![views](https://sourcegraph.com/api/repos/github.com/h2non/toxy/.counters/views.svg)](https://sourcegraph.com/github.com/h2non/toxy)
टूल डाउनलोड करें