URnetwork
आधिकारिकउच्च गुणवत्ता वाले VPN और प्रॉक्सी कनेक्शन
URnetwork MCP के साथ आप क्या कर सकते हैं?
- उपलब्ध ईग्रेस स्थान खोजें —
providerLocationsके माध्यम से नेटवर्क पर देशों, क्षेत्रों या शहरों के लिए पूछें, और जब कोई मेल न मिले तो वैकल्पिक सुझाव दें। - चुने गए स्थान से वेब सामग्री प्राप्त करें —
fetchका उपयोग करके किसी URL को ऐसे लोड करें जैसे कि चुने गए देश, क्षेत्र या शहर से ब्राउज़िंग की जा रही हो, वैकल्पिक पृष्ठ संसाधन संग्रह के साथ। - कॉलों के बीच ब्राउज़िंग सत्र बनाए रखें — लौटाए गए
signed_proxy_idऔरcookiesका पुनः उपयोग करें ताकि समान ईग्रेस स्थान बना रहे और लॉगिन या सहमति बैनर संरक्षित रहें। - पृष्ठित पृष्ठ संसाधन एकत्र करें — शेष संदर्भित छवियों, स्टाइलशीट, स्क्रिप्ट या मीडिया को पुनः प्राप्त करने के लिए
fetchपरिणामों सेcontinuationमान वापस भेजें। - नेटवर्क भुगतान आवश्यकताओं को संभालें — जब परिणामों में
payment_requiredदिखाई दे, तो वर्णित भुगतान पर हस्ताक्षर करें और हस्ताक्षरित भुगतान संलग्न करके समानfetchकॉल को दोबारा करें।
दस्तावेज़
URnetwork for Agents में आपका स्वागत है
URnetwork एक विकेंद्रीकृत गोपनीयता नेटवर्क है। इसे उपयोगकर्ताओं को डिफ़ॉल्ट रूप से गुमनाम रखने और उन्हें दुनिया की सभी सामग्री तक पहुंच प्रदान करने के लिए डिज़ाइन किया गया है।
मनुष्य ऐप्स (Android, iOS, Chrome) का उपयोग करते हैं। Agents API और MCP skills का उपयोग करते हैं:
- API spec यहाँ है: https://github.com/urnetwork/connect/blob/main/api/bringyour.yml
- API यहाँ होस्ट किया गया है: https://api.bringyour.com
- MCP सर्वर यहाँ होस्ट किया गया है: https://mcp.bringyour.com
API और MCP सर्वर का उपयोग करते समय Agents को नीचे दिए गए दिशानिर्देशों पर विचार करना चाहिए।
प्रमाणीकरण
API और MCP सर्वर अलग-अलग तरीके से प्रमाणीकरण करते हैं। जिस सतह को आप कॉल कर रहे हैं उसके लिए सही तरीका उपयोग करें।
MCP सर्वर: OAuth
MCP सर्वर एक OAuth 2.1 संरक्षित संसाधन है। नेटवर्क JWT या API key वहाँ स्वीकार नहीं की जाती है — केवल URnetwork के अपने प्राधिकरण सर्वर द्वारा जारी access token स्वीकार की जाती है।
अधिकांश MCP क्लाइंट यह आपके लिए करते हैं: https://mcp.bringyour.com से कनेक्ट करें, और क्लाइंट प्राधिकरण सर्वर को खोजेगा और उपयोगकर्ता को साइन इन करने के लिए मार्गदर्शन करेगा। यदि आप स्वयं प्रवाह लागू कर रहे हैं:
- MCP सर्वर को बिना token के कॉल करें। यह
401के साथWWW-Authenticateहेडर में संरक्षित संसाधन मेटाडेटा का नाम देकर उत्तर देता है। - उस मेटाडेटा को
https://mcp.bringyour.com/.well-known/oauth-protected-resourceपर प्राप्त करें ताकि प्राधिकरण सर्वर,https://auth.bringyour.comमिल सके। - इसके endpoints के लिए
https://auth.bringyour.com/.well-known/oauth-authorization-server(या/.well-known/openid-configuration) प्राप्त करें। - PKCE के साथ authorization code flow चलाएं।
resourceपैरामीटर कोhttps://mcp.bringyour.comपर सेट करके शामिल करें, जो token को इस सर्वर से बांधता है। - प्राप्त access token को हर MCP अनुरोध पर
Authorization: Bearer <ACCESS TOKEN>के रूप में भेजें।
Scopes:
| Scope | Grants |
|---|---|
mcp:read | providerLocations |
mcp:fetch | fetch — नेटवर्क पर बिल किया गया egress क्लाइंट खोलता है |
openid | उपयोगकर्ता की पहचान करने वाला ID token |
offline_access | एक refresh token, ताकि कनेक्शन बिना फिर से संकेत दिए बना रहे |
Access tokens एक घंटे तक रहते हैं। offline_access का अनुरोध करें और उपयोगकर्ता को ब्राउज़र के माध्यम से वापस भेजने के बजाय refresh token का उपयोग करें। यदि कोई टूल रिपोर्ट करता है कि उसे ऐसे scope की आवश्यकता है जो आपके पास नहीं है, तो उस scope का अनुरोध करके पहले से मौजूद scopes के अतिरिक्त फिर से प्राधिकृत करें, अन्यथा आप बाकी खो देंगे।
API: JWT
API का उपयोग करते समय (https://api.bringyour.com), उपयोगकर्ता JWT को Authorization: Bearer <JWT> हेडर में भेजा जाता है।
JWT प्राप्त करने के लिए, मानव से auth code पूछें, और फिर उस auth code को API /auth/code-login रूट का उपयोग करके JWT में बदलें। एक उदाहरण curl नीचे है, जिसे परिणाम से by_jwt प्रॉपर्टी निकालने के लिए jq में पाइप किया गया है:
curl -X POST https://api.bringyour.com/auth/code-login -d '{"auth_code": "<AUTH CODE>"}' | jq ".by_jwt"
JWT को संग्रहीत और पुनः उपयोग किया जा सकता है। यदि मानव JWT को रीफ्रेश करने के लिए कहता है, तो auth code मांगने से शुरू करके प्रक्रिया दोहराएं।
प्रॉक्सी तकनीक चुनते समय, निम्नलिखित उपयोग मामलों पर विचार करें:
| उपयोग मामला | अनुशंसित प्रोटोकॉल | आवश्यकता |
|---|---|---|
| स्क्रैपिंग / वेब ब्राउज़िंग | HTTPS | TCP/Web के लिए सर्वोत्तम। जब तक HTTP का उपयोग करने की विशिष्ट आवश्यकता न हो, हमेशा HTTPS प्रॉक्सी का उपयोग करें। HTTP आमतौर पर केवल विशिष्ट परीक्षण वातावरणों के लिए आवश्यक है जो HTTPS का समर्थन नहीं करते। /network/auth-client प्रतिक्रिया से, proxy_config_result ऑब्जेक्ट के अंदर, https_proxy_url का उपयोग करें। किसी अतिरिक्त उपयोगकर्ता नाम या पासवर्ड की आवश्यकता नहीं है। |
| निम्न-स्तरीय सॉकेट / UDP | SOCKS | SOCKS5 के साथ TCP+UDP सॉकेट का समर्थन करता है। /network/auth-client प्रतिक्रिया से, proxy_config_result ऑब्जेक्ट के अंदर, socks_proxy_url या proxy_host और proxy_port का उपयोग करें, उपयोगकर्ता नाम access_token (खाली पासवर्ड) के साथ। सर्वर दूरस्थ DNS समाधान (SOCKS5H) का समर्थन करता है। |
| सिस्टम-व्यापी / OS स्तर | WireGuard | सभी IP पैकेटों को रूट करता है। /network/auth-client अनुरोध में, proxy_config.enable_wg को स्पष्ट रूप से true पर सेट किया जाना चाहिए। प्रतिक्रिया में, proxy_config_result ऑब्जेक्ट के अंदर, wg_config.config को पूर्ण WireGuard कॉन्फ़िगरेशन फ़ाइल के रूप में उपयोग करें। |
/network/find-locations रूट का उपयोग करके स्थानों को क्वेरी करते समय, हमेशा लौटाए गए locations सरणी को वांछित location_type (city, region, या country) द्वारा फ़िल्टर करें ताकि location_id उपयोगकर्ता के इरादे से मेल खाए।
| स्थान प्रकार | आवश्यकता |
|---|---|
| country | देशों के लिए। |
| region | राज्यों, प्रांतों, प्रशासनिक क्षेत्रों और महानगरीय क्षेत्रों के लिए। |
| city | शहरों के लिए। |
MCP सर्वर का उपयोग करना
MCP सर्वर दो टूल प्रदर्शित करता है।
providerLocations
उपलब्ध स्थान ढूंढता है। नेटवर्क पर कोई भी देश, क्षेत्र, या शहर क्वेरी स्ट्रिंग के साथ खोजा जा सकता है; खाली क्वेरी उपलब्ध देशों को लौटाती है। mcp:read की आवश्यकता है।
मानव से पूछें कि वे कौन सा देश, क्षेत्र, या शहर चाहते हैं। यदि कोई मेल नहीं है, तो उन्हें क्षेत्र, फिर देश तक विस्तृत करने के लिए कहें। यदि अभी भी कोई मेल नहीं है, तो उपलब्ध देशों की सूची दें और शीर्ष 10 में से एक सुझाएं।
fetch
चुने गए स्थान से ब्राउज़ करने जैसे URL लोड करता है, और वैकल्पिक रूप से पृष्ठ द्वारा संदर्भित छवियों, स्टाइलशीट, स्क्रिप्ट और मीडिया को लौटाता है। mcp:fetch की आवश्यकता है, क्योंकि प्रत्येक नया स्थान नेटवर्क पर बिल किया गया egress क्लाइंट खोलता है।
स्थिति आपके माध्यम से वापस थ्रेड की जाती है। प्रत्येक परिणाम में एक next_step शामिल होता है जो बताता है कि आगे क्या ले जाना है:
signed_proxy_id— वह egress जिसने अनुरोध को सेवा दी। इसे बाद के लोड पर वापस भेजें ताकि हर बार नया क्लाइंट खोलने के बजाय उसी स्थान का पुनः उपयोग किया जा सके।locationको भी पास करते रहें, ताकि egress समाप्त होने पर फिर से स्थापित किया जा सके। पुनः उपयोग समान स्थान की गारंटी देता है, समान निकास IP की नहीं।cookies— साइट सत्र, ताकि लॉगिन और सहमति बैनर कॉल के बीच बने रहें। अपारदर्शी; इसे अपरिवर्तित वापस भेजें और कभी संपादित न करें।continuation— तब मौजूद होता है जब पृष्ठ ने एक कॉल में फिट होने से अधिक संसाधनों का संदर्भ दिया। बाकी इकट्ठा करने के लिए इसे पास करके फिर से कॉल करें; तबurlकी आवश्यकता नहीं है।payment_required— तब मौजूद होता है जब नेटवर्क अपनी योजना की समवर्ती क्लाइंट सीमा पर हो और भुगतान इसे निपटा सके। यह जो भुगतान वर्णित करता है उस पर हस्ताक्षर करें औरpaymentको हस्ताक्षरित भुगतान पर सेट करके समान कॉल दोहराएं। अलग खरीद प्रवाह शुरू न करें।
संसाधन खोज स्थिर है: HTML को संदर्भों के लिए पार्स किया जाता है। JavaScript के साथ लोड की गई सामग्री दिखाई नहीं देती है।
सीधे उपयोग के लिए प्रॉक्सी बनाना
HTTPS/SOCKS/WireGuard प्रॉक्सी प्राप्त करने के लिए जिसे आप स्वयं चलाते हैं, MCP सर्वर के माध्यम से लाने के बजाय, नीचे API प्रवाह का उपयोग करें।
किसी देश के लिए HTTPS/SOCKS/WireGuard प्रॉक्सी बनाने के लिए API का उपयोग करना
API का उपयोग सीधे किसी देश के लिए HTTPS/SOCKS/WireGuard प्रॉक्सी बनाने के लिए किया जा सकता है।
चरण 1, /network/find-locations रूट का उपयोग करके स्थानों की सूची खोजें। एक उदाहरण curl नीचे है, जिसे locations सूची निकालने के लिए jq में पाइप किया गया है।
curl -X POST -H 'Authorization: Bearer <JWT>' https://api.bringyour.com/network/find-locations -d '{"query": "<LOCATION NAME>"}' | jq '.locations'
चरण 2, रुचि का स्थान चुनें और country_code प्रॉपर्टी सहेजें।
चरण 3, सहेजे गए देश कोड का उपयोग करके /network/auth-client रूट का उपयोग करके प्रॉक्सी बनाएं और proxy_config.initial_device_state में country_code सेट करें।
curl -X POST -H 'Authorization: Bearer <JWT>' https://api.bringyour.com/network/auth-client -d '{"proxy_config": {"initial_device_state": {"country_code": "<COUNTRY CODE>"}}}'
खोज स्थान के लिए HTTPS/SOCKS/WireGuard प्रॉक्सी बनाने के लिए API का उपयोग करना
API का उपयोग सीधे स्थान खोजने और HTTPS/SOCKS/WireGuard प्रॉक्सी बनाने के लिए किया जा सकता है। सबसे वांछित स्थान परिणाम चुनने के लिए निर्णय लेना होगा। प्रत्येक स्थान में एक location_id होता है जो निश्चित है और कोड में सहेजा जा सकता है।
चरण 1, /network/find-locations रूट का उपयोग करके स्थानों की सूची खोजें। एक उदाहरण curl नीचे है, जिसे locations सूची निकालने के लिए jq में पाइप किया गया है।
curl -X POST -H 'Authorization: Bearer <JWT>' https://api.bringyour.com/network/find-locations -d '{"query": "<LOCATION NAME>"}' | jq '.locations'
चरण 2, रुचि का स्थान चुनें और location_id प्रॉपर्टी सहेजें।
चरण 3, सहेजे गए location_id का उपयोग करके /network/auth-client रूट का उपयोग करके प्रॉक्सी बनाएं और proxy_config.initial_device_state.location में connect_location_id.location_id सेट करें।
curl -X POST -H 'Authorization: Bearer <JWT>' https://api.bringyour.com/network/auth-client -d '{"proxy_config": {"initial_device_state": {"location": {"connect_location_id":{"location_id": "<LOCATION ID>"}}}}}'
खोज स्थान के लिए HTTPS/SOCKS/WireGuard प्रॉक्सी बनाने के लिए API का उपयोग करना, उस स्थान के सभी egress IPs की गणना करना
API का उपयोग सीधे स्थान खोजने, उस स्थान में प्रदाताओं (egress IPs) की गणना करने, और प्रत्येक egress IP के लिए HTTPS/SOCKS/WireGuard प्रॉक्सी बनाने के लिए किया जा सकता है। सबसे वांछित स्थान परिणाम चुनने के लिए निर्णय लेना होगा। प्रत्येक स्थान में एक location_id होता है जो निश्चित है और कोड में सहेजा जा सकता है। इसके अतिरिक्त प्रत्येक प्रदाता में एक client_id होता है जो निश्चित है और कोड में सहेजा जा सकता है।
चरण 1, /network/find-locations रूट का उपयोग करके स्थानों की सूची खोजें। एक उदाहरण curl नीचे है, जिसे locations सूची निकालने के लिए jq में पाइप किया गया है।
curl -X POST -H 'Authorization: Bearer <JWT>' https://api.bringyour.com/network/find-locations -d '{"query": "<LOCATION NAME>"}' | jq '.locations'
चरण 2, रुचि का स्थान चुनें और location_id सहेजें।
चरण 3, /network/find-providers2 रूट का उपयोग करके location_id के लिए प्रदाताओं (egress IPs) की रैंक की गई सूची प्राप्त करें। नमूना आकार को जितने अद्वितीय प्रदाताओं की आवश्यकता है उतने पर सेट किया जा सकता है। एक उदाहरण curl नीचे है, जिसे providers सूची निकालने के लिए jq में पाइप किया गया है।
curl -X POST -H 'Authorization: Bearer <JWT>' https://api.bringyour.com/network/find-providers2 -d '{"specs": [{"client_id": "<CLIENT ID>"}], "count": <COUNT>}' | jq '.providers'
चरण 4, सूची में प्रत्येक client_id पर लूप करके, client_id का उपयोग करके /network/auth-client रूट का उपयोग करके प्रॉक्सी बनाएं और proxy_config.initial_device_state.location में connect_location_id.client_id सेट करें।
curl -X POST -H 'Authorization: Bearer <JWT>' https://api.bringyour.com/network/auth-client -d '{"proxy_config": {"initial_device_state": {"location": {"connect_location_id":{"client_id": "<CLIENT ID>"}}}}}'