पॉवरशेल Invoke-WebRequest के साथ प्रॉक्सी का उपयोग कैसे करें
Specialist in Anti-Bot Strategies
सुरक्षित, गुमनाम वेब अनुरोधों के लिए PowerShell प्रॉक्सी कॉन्फ़िगरेशन में महारत हासिल करें। ट्रैफ़िक को आवासीय प्रॉक्सियों के माध्यम से रूट करें ताकि भू-प्रतिबंधों को औसत करें और आईपी ब्लॉकिंग से बचें।
मुख्य बातें
- Invoke-WebRequest का -Proxy पैरामीटर प्रॉक्सी सर्वरों के माध्यम से ट्रैफ़िक को रूट करने में सक्षम बनाता है
- PowerShell 7.x HTTPS और SOCKS प्रॉक्सियों का समर्थन करता है; पहले के संस्करण केवल HTTP का समर्थन करते हैं
- ProxyCredential पैरामीटर उस प्रमाणीकरण को संभालता है जब प्रॉक्सियों को लॉगिन क्रेडेंशियल की आवश्यकता होती है
- आवासीय प्रॉक्सी वैध ISP द्वारा असाइन किए गए आईपी प्रदान करते हैं जो आईपी-आधारित ब्लॉकिंग को हराते हैं
- सत्र वस्तुएँ कई अनुरोधों के बीच प्रॉक्सी सेटिंग्स को अपने आप बनाए रखती हैं
Invoke-WebRequest प्रॉक्सी को समझना
Invoke-WebRequest PowerShell का देशी cmdlet है जो HTTP और HTTPS अनुरोध बनाने के लिए है। -Proxy पैरामीटर निर्दिष्ट प्रॉक्सी सर्वरों के माध्यम से अनुरोधों को रूट करता है बजाए इसके कि लक्षित वेबसाइटों से सीधे कनेक्ट किया जाए। यह क्षमता स्क्रिप्ट को सक्षम बनाती है:
- विशिष्ट स्थानों से भू-प्रतिबंधित सामग्री तक पहुँचें
- दर सीमा से बचने के लिए कई आईपी में अनुरोध वितरित करें
- लक्षित वेबसाइटों से स्क्रिप्ट की उत्पत्ति छुपाएँ
- कॉर्पोरेट प्रॉक्सियों के माध्यम से नेटवर्क कनेक्टिविटी का परीक्षण करें
प्रॉक्सी पैरामीटर URLs को इस प्रारूप में स्वीकार करता है: <PROTOCOL>://<HOST>:<PORT>
बुनियादी HTTP प्रॉक्सी कॉन्फ़िगरेशन
सादा प्रॉक्सी सेटअप HTTP पते और पोर्ट को निर्दिष्ट करता है:
powershell
$proxyUrl = "http://47.252.29.28:11222"
$response = Invoke-WebRequest -Uri "https://httpbin.io/ip" -Proxy $proxyUrl
Write-Output $response.Content
यह आदेश अनुरोध को निर्दिष्ट प्रॉक्सी सर्वर के माध्यम से रूट करता है। लक्षित वेबसाइट प्रॉक्सी के आईपी पते से अनुरोध प्राप्त करती है न कि आपके कंप्यूटर के आईपी से।
प्रॉक्सी प्रमाणीकरण
कई प्रॉक्सी प्रदाता अनधिकृत उपयोग को रोकने के लिए प्रमाणीकरण की आवश्यकता करते हैं। -ProxyCredential पैरामीटर उपयोगकर्ता नाम और पासवर्ड भेजता है:
powershell
$proxyUrl = "http://proxy.example.com:8080"
$proxyCreds = Get-Credential
$response = Invoke-WebRequest -Uri "https://httpbin.io/ip" `
-Proxy $proxyUrl `
-ProxyCredential $proxyCreds
Get-Credential एक इंटरैक्टिव प्रॉम्प्ट खोलता है जो क्रेडेंशियल्स के लिए अनुरोध करता है। स्वचालित स्क्रिप्टों के लिए, कार्यक्रमmatically क्रेडेंशियल्स बनाएँ:
powershell
$username = "proxy_user"
$password = "proxy_password"
$secPassword = ConvertTo-SecureString $password -AsPlainText -Force
$proxyCreds = New-Object System.Management.Automation.PSCredential `
-ArgumentList $username, $secPassword
$response = Invoke-WebRequest -Uri "https://httpbin.io/ip" `
-Proxy "http://proxy.example.com:8080" `
-ProxyCredential $proxyCreds
एंबेडेड क्रेडेंशियल प्रॉक्सी URLs
वैकल्पिक रूप से, प्रॉक्सी URL में सीधे क्रेडेंशियल्स डालें:
powershell
$proxyUrl = "http://username:password@proxy.example.com:8080"
$response = Invoke-WebRequest -Uri "https://httpbin.io/ip" -Proxy $proxyUrl
यह दृष्टिकोण स्क्रिप्ट के लिए सुविधाजनक है जहां क्रेडेंशियल प्रबंधन कम महत्वपूर्ण है।
HTTPS और SOCKS प्रॉक्सी समर्थन
PowerShell 7.x+ HTTPS और SOCKS प्रॉक्सियों का समर्थन करता है। यदि पहले के संस्करणों का उपयोग कर रहे हैं, केवल HTTP प्रॉक्सी काम करते हैं। पूर्ण प्रॉक्सी प्रोटोकॉल समर्थन के लिए PowerShell 7 में अपडेट करें:
powershell
# HTTPS प्रॉक्सी
$response = Invoke-WebRequest -Uri "https://example.com" `
-Proxy "https://username:password@proxy.example.com:8080"
# SOCKS5 प्रॉक्सी
$response = Invoke-WebRequest -Uri "https://example.com" `
-Proxy "socks5://username:password@proxy.example.com:1080"
अपने PowerShell संस्करण की पुष्टि करें:
powershell
$PSVersionTable.PSVersion
प्रॉक्सी रोटेशन रणनीति
विशाल पैमाने पर स्क्रैपिंग या API कॉल के लिए, कई प्रॉक्सियों के बीच रोटेटिंग अलग-अलग आईपी में अनुरोधों का वितरण करता है, दर सीमाओं और आईपी प्रतिबंधों से बचता है:
powershell
$proxyList = @(
"http://user:pass@proxy1.example.com:8080",
"http://user:pass@proxy2.example.com:8080",
"http://user:pass@proxy3.example.com:8080"
)
$urls = @(
"https://api.example.com/page1",
"https://api.example.com/page2",
"https://api.example.com/page3"
)
foreach ($url in $urls) {
$randomProxy = $proxyList | Get-Random
$response = Invoke-WebRequest -Uri $url -Proxy $randomProxy
Write-Output "Response from $url using $randomProxy"
}
यह दृष्टिकोण प्रत्येक अनुरोध के लिए एक अलग प्रॉक्सी यादृच्छिक रूप से चुनता है, आईपी-विशिष्ट अनुरोध संचय को रोकता है जो ब्लॉकिंग को सक्रिय करता है।
PowerShell के साथ प्रीमियम आवासीय प्रॉक्सी
Scrapeless Residential Proxies पेशेवर-ग्रेड प्रॉक्सी अवसंरचना प्रदान करता है PowerShell स्वचालन के लिए। आवासीय प्रॉक्सी वैध ISP-निर्धारित IPs का उपयोग करते हैं, जो सुरक्षित वेबसाइटों के खिलाफ सफलता दर को नाटकीय रूप से सुधारते हैं:
powershell
# Scrapeless आवासीय प्रॉक्सी प्रमाणीकरण के साथ
$proxyUrl = "http://username:password@superproxy.scrapeless.com:1337"
$headers = @{
'User-Agent' = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
}
$response = Invoke-WebRequest -Uri "https://example.com" `
-Proxy $proxyUrl `
-Headers $headers
Write-Output $response.StatusCode
Scrapeless 195+ देशों में 90M+ आवासीय IPs का प्रबंधन करता है जिसमें स्वचालित रोटेशन और भौगोलिक लक्ष्यीकरण शामिल है।
सत्र-आधारित प्रॉक्सी कॉन्फ़िगरेशन
कई संबंधित अनुरोधों के लिए, सत्र ऑब्जेक्ट स्वचालित रूप से प्रॉक्सी सेटिंग्स बनाए रखते हैं:
powershell
$proxyUrl = "http://username:password@superproxy.scrapeless.com:1337"
$webSession = New-Object Microsoft.PowerShell.Commands.WebRequestSession
$webSession.Proxy = New-Object System.Net.WebProxy($proxyUrl)
# पहला अनुरोध
$response1 = Invoke-WebRequest -Uri "https://example.com/page1" `
-WebSession $webSession
# दूसरा अनुरोध स्वचालित रूप से वही प्रॉक्सी का उपयोग करता है
$response2 = Invoke-WebRequest -Uri "https://example.com/page2" `
-WebSession $webSession
# तीसरा अनुरोध उसी प्रॉक्सी सेटिंग्स के साथ
$response3 = Invoke-WebRequest -Uri "https://example.com/page3" `
-WebSession $webSession
सत्र ऑब्जेक्ट अनुक्रमिक अनुरोधों के लिए दोहरावदार प्रॉक्सी स्पष्टीकरण को समाप्त करते हैं।
प्रॉक्सी बायपास सूचियाँ
कुछ वातावरणों को विशिष्ट होस्ट से सीधे कनेक्शन की आवश्यकता होती है, प्रॉक्सी को बायपास करते हुए। सीधे पहुंच के लिए बायपास सूचियों को परिभाषित करें:
powershell
$proxy = New-Object System.Net.WebProxy("http://proxy.example.com:8080")
$proxy.BypassList += "*.internal.company.com"
$proxy.BypassList += "localhost"
[System.Net.WebRequest]::DefaultWebProxy = $proxy
$response = Invoke-WebRequest -Uri "https://internal.company.com"
बायपास किए गए होस्ट सीधे कनेक्ट करते हैं न कि प्रॉक्सी सर्वर के माध्यम से रूट करते हैं।
SSL प्रमाणपत्र त्रुटियों को हैंडल करना
कुछ प्रॉक्सी कॉन्फ़िगरेशन या आत्म-निर्मित प्रमाणपत्र SSL त्रुटियों का कारण बनते हैं। परीक्षण के उद्देश्य से, प्रमाणपत्र सत्यापन को छोड़ दें:
powershell
[System.Net.ServicePointManager]::ServerCertificateValidationCallback = {$true}
$response = Invoke-WebRequest -Uri "https://example.com" `
-Proxy "http://proxy.example.com:8080"
चेतावनी: प्रमाणपत्र सत्यापन को अक्षम करना आपको मैन-इन-द-मिडल हमलों के लिए उजागर करता है। केवल नियंत्रित वातावरण में उपयोग करें।
PowerShell 7.4+ सुरक्षित -SkipCertificateCheck पैरामीटर प्रदान करता है:
powershell
$response = Invoke-WebRequest -Uri "https://example.com" `
-Proxy "http://proxy.example.com:8080" `
-SkipCertificateCheck
उन्नत उपयोग के मामला: प्रॉक्सी के साथ वेब स्क्रेपिंग
आवासीय प्रॉक्सी को उचित हेडर और विलंब के साथ संयोजित करें ताकि प्रभावशाली वेब स्क्रेपिंग हो सके:
powershell
function Invoke-ScrapingRequest {
param(
[Parameter(Mandatory=$true)]
[string]$Url,
[Parameter(Mandatory=$true)]
[string]$ProxyUrl,
[int]$DelayMs = 2000
)
$headers = @{
'User-Agent' = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36'
'Accept' = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8'
'Accept-Language' = 'en-US,en;q=0.9'
}
Start-Sleep -Milliseconds $DelayMs
$response = Invoke-WebRequest -Uri $Url `
-Proxy $ProxyUrl `
-Headers $headers `
-ErrorAction SilentlyContinue
return $response
}
# उपयोग
$proxyUrl = "http://user:pass@superproxy.scrapeless.com:1337"
$response = Invoke-ScrapingRequest -Url "https://example.com" -ProxyUrl $proxyUrl
यह पैटर्न कॉल के बीच अनुरोध विलंब, वैध ब्राउज़रों की तरह दिखने वाले हेडर्स, और विश्वसनीय बड़े पैमाने पर स्क्रेपिंग के लिए आवासीय प्रॉक्सी रोटेशन को लागू करता है।
प्रॉक्सी मुद्दों के समाधान
कनेक्शन अस्वीकृत: प्रॉक्सी होस्ट और पोर्ट की पुष्टि करें। सीधे कनेक्टिविटी का परीक्षण करें:
powershell
Test-NetConnection -ComputerName "proxy.example.com" -Port 8080
प्रमाणीकरण विफल: यह पुष्टि करें कि उपयोगकर्ता नाम और पासवर्ड सही हैं। यदि यूआरएल में विशेष पात्र हैं, तो एम्बेडेड प्रमाणपत्रों के लिए यूआरएल एन्कोडिंग की आवश्यकता होती है।
धीमा प्रदर्शन: यदि उपलब्ध हो, तो विभिन्न प्रॉक्सियों का प्रयास करें। कुछ प्रॉक्सी भौगोलिक रूप से दूर या भीड़भाड़ वाली हो सकती हैं।
प्रॉक्सी का उपयोग नहीं किया गया: सत्यापित करें कि Invoke-WebRequest -Proxy पैरामीटर का उपयोग करता है। वातावरण चर या प्रणाली प्रॉक्सी सेटिंग्स Invoke-WebRequest को स्वतः प्रभावित नहीं करती हैं।
वातावरण चर प्रॉक्सी
PowerShell 7.x+ HTTP_PROXY और HTTPS_PROXY वातावरण चर का सम्मान करता है यदि सेट किया गया है:
powershell
$env:HTTP_PROXY = "http://proxy.example.com:8080"
$env:HTTPS_PROXY = "http://proxy.example.com:8080"
$response = Invoke-WebRequest -Uri "https://example.com"
पूर्व PowerShell संस्करण वातावरण चर को अनदेखा करते हैं—खुले तौर पर -Proxy पैरामीटर को निर्दिष्ट करें।
प्रॉक्सियों के माध्यम से REST API कॉल
समान Invoke-RestMethod cmdlet भी JSON API कॉल के लिए -Proxy पैरामीटर को स्वीकार करता है:
powershell
$proxyUrl = "http://username:password@superproxy.scrapeless.com:1337"
$response = Invoke-RestMethod -Uri "https://api.example.com/data" `
-Proxy $proxyUrl `
-Method Get
$response | ConvertTo-Json
सामान्य प्रश्न
प्रश्न: क्या मैं प्रॉक्सी निर्दिष्ट किए बिना Invoke-WebRequest का उपयोग कर सकता हूं?
उत्तर: हां। सीधी कनेक्शन के लिए -Proxy पैरामीटर को छोड़ दें। हालांकि, यह आपके वास्तविक आईपी पते को उजागर करता है और भू-प्रतिबंधों या रेट सीमाओं को बाइपास करने से रोकता है।
प्रश्न: मैं प्रॉक्सी के माध्यम से कितने समकालिक Invoke-WebRequest कॉल कर सकता हूं?
उत्तर: PowerShell समकालिक संचालन को प्रणाली के संसाधनों के आधार पर सीमित करता है। अधिकांश स्क्रिप्ट सफलतापूर्वक 10-50 समांतर अनुरोध चलाती हैं। प्रीमियम आवासीय प्रॉक्सी जैसे Scrapeless प्रॉक्सी बुनियादी ढांचे के स्तर पर असीमित समवर्तीता का समर्थन करते हैं।
प्रश्न: -Proxy और -ProxyCredential पैरामीटर में क्या अंतर है?
उत्तर: -Proxy पैरामीटर प्रॉक्सी सर्वर का पता निर्दिष्ट करता है। -ProxyCredential पैरामीटर URL से अलग प्रमाणन साख प्रदान करता है, जो तब उपयोगी होता है जब साख में ऐसे विशेष पात्र होते हैं जिन्हें URL एन्कोडिंग की आवश्यकता होती है।
प्रश्न: क्या मुझे Invoke-WebRequest के साथ प्रॉक्सी का उपयोग करने के लिए ऊँची अनुमति की आवश्यकता है?
उत्तर: नहीं। प्रॉक्सी का उपयोग केवल प्रॉक्सी सर्वर के लिए नेटवर्क कनेक्टिविटी की आवश्यकता होती है। मानक प्रॉक्सी संचालन के लिए प्रशासक विशेषाधिकार आवश्यक नहीं हैं।
प्रश्न: क्या Invoke-WebRequest Windows PowerShell 5.1 पर SOCKS प्रॉक्सियों के साथ काम कर सकता है?
उत्तर: नहीं। Windows PowerShell 5.1 केवल HTTP प्रॉक्सियों का समर्थन करता है। SOCKS प्रॉक्सी समर्थन तक पहुँच के लिए PowerShell 7.x में अपग्रेड करें। आधिकारिक Microsoft रिपोजिटरी से PowerShell 7 डाउनलोड करें—यह Windows PowerShell के साथ बिना किसी संघर्ष के स्थापित होता है।
स्क्रैपलेस में, हम केवल सार्वजनिक रूप से उपलब्ध डेटा का उपयोग करते हैं, जबकि लागू कानूनों, विनियमों और वेबसाइट गोपनीयता नीतियों का सख्ती से अनुपालन करते हैं। इस ब्लॉग में सामग्री केवल प्रदर्शन उद्देश्यों के लिए है और इसमें कोई अवैध या उल्लंघन करने वाली गतिविधियों को शामिल नहीं किया गया है। हम इस ब्लॉग या तृतीय-पक्ष लिंक से जानकारी के उपयोग के लिए सभी देयता को कोई गारंटी नहीं देते हैं और सभी देयता का खुलासा करते हैं। किसी भी स्क्रैपिंग गतिविधियों में संलग्न होने से पहले, अपने कानूनी सलाहकार से परामर्श करें और लक्ष्य वेबसाइट की सेवा की शर्तों की समीक्षा करें या आवश्यक अनुमतियाँ प्राप्त करें।



