
AWS API Gateway के बड़े IP पूल को प्रॉक्सी के रूप में उपयोग करके वेब स्क्रैपिंग और ब्रूट फोर्सिंग के लिए छद्म-अनंत IP उत्पन्न करने के लिए एक Python लाइब्रेरी।
गर्व से प्रायोजित Swiftproxy
उच्च-प्रदर्शन वाले आवासीय प्रॉक्सी जिनमें 195+ देशों में 80M+ IP पूल है — बड़े पैमाने पर डेटा संग्रह और ब्राउज़र ऑटोमेशन के दौरान अनुरोध सफलता दर में सुधार करें और IP ब्लॉक को कम करें।
requests-ip-rotator, Playwright, Selenium और अन्य स्क्रैपिंग टूल्स के साथ उपयोग के लिए एकदम सही।
AWS API Gateway के बड़े IP पूल का उपयोग करके वेब स्क्रैपिंग और ब्रूट फोर्सिंग के लिए छद्म-अनंत IP उत्पन्न करने वाली एक Python लाइब्रेरी।
यह लाइब्रेरी उपयोगकर्ता को साइटों और सेवाओं के IP-आधारित दर-सीमाओं को बायपास करने की अनुमति देगी।
X-Forwarded-For हेडर स्वचालित रूप से यादृच्छिक किए जाते हैं और लागू किए जाते हैं, जब तक कि दिए न गए हों। ऐसा इसलिए है क्योंकि अन्यथा, AWS इस हेडर में क्लाइंट का वास्तविक IP पता भेज देगा।
AWS का ApiGateway अपने अनुरोध किसी भी उपलब्ध IP से भेजता है - और चूंकि AWS का बुनियादी ढांचा इतना बड़ा है, इसलिए यह लगभग गारंटी है कि हर बार अलग होगा। ApiGateway को प्रॉक्सी के रूप में उपयोग करके, हम हर बार विभिन्न IP से अनुरोध भेजने के लिए इसका लाभ उठा सकते हैं। कृपया ध्यान दें कि इन अनुरोधों को आसानी से पहचाना और ब्लॉक किया जा सकता है, क्योंकि ये अद्वितीय AWS हेडर (जैसे "X-Amzn-Trace-Id") के साथ भेजे जाते हैं।
यह पैकेज pypi पर है, इसलिए आप इसे निम्नलिखित में से किसी भी तरीके से स्थापित कर सकते हैं:
pip3 install requests-ip-rotatorpython3 -m pip install requests-ip-rotator
import requests
from requests_ip_rotator import ApiGateway
# Create gateway object and initialise in AWS
gateway = ApiGateway("https://site.com")
gateway.start()
# Assign gateway to session
session = requests.Session()
session.mount("https://site.com", gateway)
# Send request (IP will be randomised)
response = session.get("https://site.com/index.php", params={"theme": "light"})
print(response.status_code)
# Delete gateways
gateway.shutdown()
import requests
from requests_ip_rotator import ApiGateway
with ApiGateway("https://site.com") as g:
session = requests.Session()
session.mount("https://site.com", g)
response = session.get("https://site.com/index.php")
print(response.status_code)
कृपया याद रखें कि यदि विधि #1 का उपयोग करते समय गेटवे को shutdown() विधि के माध्यम से बंद नहीं किया जाता है, तो भविष्य में आपसे शुल्क लिया जा सकता है।
API Gateway प्रति क्षेत्र पहले मिलियन अनुरोधों के लिए मुफ्त है, जिसका अर्थ है कि अधिकांश उपयोग मामलों के लिए यह पूरी तरह से मुफ्त होना चाहिए।
लेखन के समय, AWS मुफ्त स्तर पार होने के बाद प्रति मिलियन अनुरोधों पर ~$3 शुल्क लेता है।
यदि आपके अनुरोधों में डेटा स्ट्रीम शामिल है, तो AWS $0.09 प्रति GB की दर से डेटा ट्रांसफर शुल्क लगाएगा।
पर्यावरण चर के माध्यम से प्रमाणीकरण सेटअप करने की अनुशंसा की जाती है। awscli के साथ, आप ऐसा करने के लिए aws configure चला सकते हैं, या वैकल्पिक रूप से, आप इस थ्रेड में बताए गए चरणों का पालन करते हुए स्वयं AWS_ACCESS_KEY_ID और AWS_SECRET_ACCESS_KEY वेरिएबल सेट कर सकते हैं।
आप आधिकारिक AWS ट्यूटोरियल का पालन करके अपनी एक्सेस कुंजी ID और गुप्त कुंजी पा सकते हैं।
ApiGateway क्लास को निम्नलिखित वैकल्पिक पैरामीटर के साथ बनाया जा सकता है:
from ip_rotator import ApiGateway, EXTRA_REGIONS, ALL_REGIONS
# Gateway to outbound HTTP IP and port for only two regions
gateway_1 = ApiGateway("http://1.1.1.1:8080", regions=["eu-west-1", "eu-west-2"])
# Gateway to HTTPS google for the extra regions pack, with specified access key pair
gateway_2 = ApiGateway("https://www.google.com", regions=EXTRA_REGIONS, access_key_id="ID", access_key_secret="SECRET")
फिर start विधि का उपयोग करके ApiGateway ऑब्जेक्ट शुरू किया जाना चाहिए।
डिफ़ॉल्ट रूप से, यदि साइट के लिए पहले से कोई ApiGateway मौजूद है, तो यह नया बनाने के बजाय मौजूदा एंडपॉइंट का उपयोग करेगा।
इसके लिए किसी पैरामीटर की आवश्यकता नहीं है, लेकिन यह निम्नलिखित स्वीकार करता है:
# Starts new ApiGateway instances for site, or locates existing endpoints if they already exist.
gateway_1.start()
# Starts new ApiGateway instances even if some already exist.
gateway_2.start(force=True)
ApiGateway ऑब्जेक्ट को requests Session ऑब्जेक्ट से जोड़कर अनुरोध भेजे जाते हैं।
mount में दी गई साइट ApiGateway कंस्ट्रक्टर में पास की गई साइट से मेल खानी चाहिए।
import requests
# Posts a request to the site created in gateway_1. Will be sent from a random IP.
session_1 = requests.Session()
session_1.mount("http://1.1.1.1:8080", gateway_1)
session_1.post("http://1.1.1.1:8080/update.php", headers={"Hello": "World"})
# Send 127.0.0.1 as X-Forwarded-For header in outbound request (otherwise X-Forwarded-For is randomised).
session_1.post("http://1.1.1.1:8080/update.php", headers={"X-Forwarded-For", "127.0.0.1"})
# Execute Google search query from random IP
session_2 = requests.Session()
session_2.mount("https://www.google.com", gateway_2)
session_2.get("https://www.google.com/search?q=test")
एक बार उनका उपयोग समाप्त हो जाने पर ApiGateway संसाधनों को बंद करना महत्वपूर्ण है, ताकि लटकते सार्वजनिक एंडपॉइंट को रोका जा सके जो आपके खाते पर अतिरिक्त शुल्क का कारण बन सकते हैं।
यह ApiGateway ऑब्जेक्ट की shutdown विधि के माध्यम से किया जाता है। यह ApiGateway ऑब्जेक्ट कंस्ट्रक्टर में निर्दिष्ट क्षेत्रों के लिए सभी संसाधनों को बंद कर देगा।
# This will shutdown all gateway proxies for "http://1.1.1.1:8080" in "eu-west-1" & "eu-west-2"
gateway_1.shutdown()
# This will shutdown all gatewy proxies for "https://www.google.com" for all regions in ip_rotator.EXTRA_REGIONS
gateway_2.shutdown()
वैकल्पिक रूप से, यदि आवश्यक हो, तो आप चुनिंदा रूप से विशिष्ट एंडपॉइंट को बंद कर सकते हैं। ऐसा करने के लिए, shutdown() विधि में एंडपॉइंट की एक सरणी पास करें, उदाहरण:
# This will force start a new gateway (i.e. create new endpoints even if some exist on the region already), and then delete the first 3 of them only.
gateway_3 = ApiGateway("http://1.1.1.1:8082", regions=ALL_REGIONS)
endpoints = gateway_3.start(force=True)
gateway_3.shutdown(endpoints[:3])
कृपया ध्यान रखें कि require_manual_deletion पैरामीटर को True पर सेट करके शुरू किए गए किसी भी गेटवे को shutdown विधि के माध्यम से हटाया नहीं जाएगा, और इसे AWS CLI या वेबसाइट के माध्यम से मैन्युअल रूप से हटाया जाना चाहिए।
मुख्य गेटवे निर्माण और संगठन कोड RhinoSecurityLabs के IPRotate Burp Extension से अनुकूलित किया गया था।
X-My-X-Forwarded-For हेडर फ़ॉरवर्डिंग अवधारणा मूल रूप से ustayready द्वारा उनके fireprox प्रॉक्सी में अवधारणाबद्ध की गई थी।
| नाम | विवरण | आवश्यक | डिफ़ॉल्ट |
|---|
| site | वह साइट (पथ के बिना) जिस पर अनुरोध भेजे जाएंगे। | True | |
| regions | गेटवे सेटअप करने के लिए AWS क्षेत्रों की एक सरणी। | False | ip_rotator.DEFAULT_REGIONS |
| access_key_id | AWS एक्सेस कुंजी ID (पर्यावरण चर को ओवरराइड करेगा)। | False | पर्यावरण चर पर निर्भर करता है। |
| access_key_secret | AWS एक्सेस कुंजी गुप्त (पर्यावरण चर को ओवरराइड करेगा)। | False | पर्यावरण चर पर निर्भर करता है। |
| verbose | स्थिति और त्रुटि संदेश शामिल करें। | False | True |
| नाम | विवरण | आवश्यक | डिफ़ॉल्ट |
|---|
| endpoints | पहले से मौजूद एंडपॉइंट की सरणी (जैसे पिछले सत्र से)। | False | |
| force | एंडपॉइंट का एक नया सेट बनाएं, भले ही कुछ पहले से मौजूद हों। | False | False |
| require_manual_deletion | बूल यह निर्दिष्ट करता है कि क्या Apigateway को shutdown() कॉल पर बने रहना चाहिए। | False | False |